First of all, thanks for all the feedback I got for my last post. 🤟
For everyone who didn’t read it: This post is an addition to my previous post popup: yes.
❗: This post might be not very interesting to people that already know about message queues. 😬
This blogpost will briefly describe what message queues are, how and where this technology will be used and as I promised in my previous blogpost, and here it is. 🙌
Let’s tackle this topic with:
## What are message queues in the first place? 📤 ✉️ 📥 Message queues are used to decouple applications by adding a common communication layer, that makes applications communicate over this layer rather than peer to peer. The message could possibly be **anything that can be saved as simple text**. An application or a software **sends a message** to the message queue where it's being **stored** until an application or software** takes the message** off again. There are several technologies that gets the job done but one of the most famous ones, nowadays, is RabbitMQ popup: yes. This is a very brief explanation, so bear with me if it’s simplified too much because I don't want to deepdive in the basics too much.To put the advantages of message queuing in a nutshell:
- Fault tolerance 😶 because, if one system breaks for whatever reason another system can still send messages to the queue
- Improve scalability 😮 because, if there is a unexpected load on an application you can create multiple instances of this application to balance the load and it will easily use message queues for communication
- Decrease latency 😲 because, since messages are being sent asynchronously, systems don't have to wait for each other before finishing a cross-system task
How am I going to use message queues?
There is a framework called Sylius, which I will not be explaining. If you are interested in it, but don't want to spend hours reading their doc, have a look at one of Lukas' software evualuation post about Sylius. Basically, this framework is an eCommerce framework which is based on Symfony popup: yes. People that know Symfony, know symfonies bundle-system.
For the others: You can extend Symfony applications easily by adding bundles. Bundles can be seen like plugins to a Symfony application. There is an open-source bundle called “SyliusImportExportPlugin” popup: yes. As the name implies, you can import and export data of the eCommerce application with this bundle. The main topic of my bachelor’s thesis is, to add a mq system into this import/export plugin and see how the mq system affects the latency, scalability and fault tolerance by doing benchmarks.
The following (beautiful) drawing illustrates the changes I'll be doing to the bundle:
Why did I choose this subject?
I liked the subject because it gives me the opportunity, to learn something about a solution, to the problem of having no fault tolerance, not being able scale and systems having the need of wait for each other. Two different systems talking to each other is not an easy task. Before having message queues: An admin had to export data from the system to a file and then (bestcase) import the file without changing anything to another system. By queuing messages, this task can be automated.
"Great things in business are never done by one person. They're done by a team of people."
- Steve Jobs
Thanks to everyone that is helping me with working on the bundle and in addition for helping me on my way to graduation.
Thanks to Michael Weibel popup: yes and Fabian Ryf popup: yes for helping me with this blogpost.
You guys are all 🔥