We ontwikkelen architectuur die bij je past met effectieve project ondersteuning
We gaan (proberen) RabbitMQ minder abstract te maken
RabbitMQ is een oplossing waarmee je wachtrijen definieert, Allerlei applicaties zoals Web Services kunnen daarmee verbinding maken om een bericht of berichten over te dragen. Zo’n bericht kan allerlei soorten informatie bevatten. Het kan bijvoorbeeld informatie bevatten over een proces of taak die een bepaalde Cloud Service moet starten. Die Cloud of Web Service mag ook op een andere Server in een ander Datacenter staan. De manier waarop een bericht wordt verzonden en ontvangen is flexibel. Je kan bijvoorbeeld met een eenvoudig sms-bericht een geavanceerde Web Service starten. Zo’n Web Service kan bijvoorbeeld Webscraping zijn. Je gaat dan van verschillende websites data verzamelen en deze bijvoorbeeld samenvoegen in een Excel met draaitabel.
Hoe werken Web Services?
RabbitMQ wordt gebruikt wanneer webservers snel moeten reageren. Met RabbitMQ elimineer je de noodzaak om resource intensieve activiteiten uit te voeren. Met Rabbit MQ hoeft de gebruiker heel kort door de bocht niet op een resultaat te wachten. Om dat beter te begrijpen bekijken we het concept “Web Services” nader. Daarvoor splitsen we Web Services op in twee verschillende modellen. Dat worden dan de Monolithische en Microservice architectuur.
Monolithische architectuur is zoals de afbeelding toont groot en bevat alle componenten in één Web Service. De configuratie van een Monolithische Web Service wordt daarmee complex en lastig te onderhouden. Alle afzonderlijke onderdelen zijn en nauw met elkaar verbonden. Als je een Kleine wijziging maakt kan dat invloed hebben op het functioneren van de hele Monolithische Web Service.
Kies je voor een microservice-architectuur is de gewenste functionaliteit gescheiden in kleinere opererende Web Services. Deze afzonderlijke kleinere Web Services kunnen relatief zelfstandig hun toegewezen taken uitvoeren. Dat is in het kader van beheer en ontwikkeling natuurlijk het beste. Vraag die hierbij naar voren komt, is hoe deze Micro Web Services met elkaar communiceren.
We maken het minder abstract
RabbitMQ is de oplossing waarmee je de onderlinge communicatie tussen de Web Services regelt. De bovenstaande bolletjes representeren allereerst het logo van EasyData’s Web Services. Dat zijn allerlei applicaties of functies die verantwoordelijk zijn voor het gewenste resultaat. De hier geschetste Web Services maken verbinding met RabbitMQ om een bericht of berichten over te dragen.
Interne communicatie
Zo’n bericht kan allerlei soorten informatie bevatten. Het kan bijvoorbeeld informatie bevatten over een proces of taak die een bepaalde Cloud Service moet starten. Die Cloud of Web Service mag ook op een andere Server in een ander Datacenter staan. De manier waarop een bericht wordt verzonden en ontvangen is flexibel. Je kan bijvoorbeeld met een eenvoudig sms-bericht een geavanceerde Web Service starten. Een Web Service functie kan bijvoorbeeld Webscraping zijn. Je gaat dan van verschillende websites data verzamelen en deze bijvoorbeeld samenvoegen in een Excel met draaitabel. Eigenlijk maakt het niet uit welke componenten (Web Services) je in de Cloud aanroept. Al die afzonderlijke Web Services zullen via RabbitMQ communiceren. Dit maakt het eenvoudiger om functionaliteit toe te voegen, op te schalen, te wijzigen of te verwijderen zonder andere delen van de architectuur te beïnvloeden.
Spin in je web
RabbitMQ is dus een tussenpersoon voor de afzonderlijke Web Services. Die ontvangt berichten van de ene Web Service en draagt deze vervolgens over aan de volgende Web Service om het vervolg stuk van het werk te doen. Met deze modulaire aanpak kunnen we allerlei afzonderlijke Machine Learning Netwerken hun oordeel (lees het resultaat) laten geven.
Asynchrone verwerking
In dit geval laten we RabbitMQ de resultaten niet direct doorsturen. In plaats daarvan stuurt de betrokken Web Service (een Machine Learning netwerk) een bericht naar een centraal beoordelingspunt. Je kan dat centraal beoordelingspunt op zichzelf ook weer als een Web Service voorstellen. Vandaar volgt op basis van de verschillende ontvangen resultaten een weging welke Web Service de gestelde taak het beste volbracht heeft.
Dat resultaat wordt dan door Rabbit MQ doorgezonden naar de volgende processtap. RabbitMQ wordt dus gebruikt wanneer webservers snel moeten reageren. Met RabbitMQ elimineer je de noodzaak om resource-intensieve activiteiten uit te voeren, terwijl de gebruiker op een resultaat wacht.
Verschillende protocollen
RabbitMQ ondersteunt verschillende gestandaardiseerde protocollen zoals AMQP, MQTT, STOMP en andere protocollen die voor dit artikel te ver voeren. Belangrijk om op te merken is dat AMQP standaard wordt geïmplementeerd. Het vermogen van RabbitMQ om verschillende gestandaardiseerde berichtprotocollen te ondersteunen maakt dat IT-architecten vaak voor RabbitMQ kiezen. Je kan dit gewoon in veel verschillende scenario’s inzetten en makkelijk installeren.
RabbitMQ wordt gebruikt door een groot aantal bedrijven binnen verschillende branches. Denk aan grote bedrijven zoals Zalando, WeWork, Wunderlist, Bloomberg en IBM). Ze vertrouwen allemaal op een microservices gebaseerde architectuur.
RabbitMQ is niet uniek
Er zijn verschillende van dit soort berichtendiensten of berichtmakelaars om uit te kiezen. Om het kiezen tussen de verschillende mogelijkheden is het belangrijk de eisen en wensen duidelijk in beeld te hebben. De mensen die dat goed kunnen beoordelen zijn IT-Infrastructuur architecten. Je kan bedenken dat die expertise met een gezonde hoeveelheid ervaring niet makkelijk te vinden is.
Gelukkig hebben we er hier een aantal van bij EasyData en zijn, afgezien van hun EasyData werkzaamheden, dienstbaar voor je eigen projecten. Naast RabbitMQ wordt Apache Kafka veel gebruikt. Beide systemen zijn Open Source. Handig voor openheid, bug fixing, veiligheid en transparantie. De verschillen worden via deze link inzichtelijk.
Meer weten? We zijn je graag van dienst met onze expertise