Microservices

Wat zijn microservices

De microservices architectuur is een implementatiemethode in applicatieontwikkeling. Om microservices te begrijpen is het interessant om eerst het tegengestelde van microservices te bespreken, monolithische applicatie. Monolithische applicaties hebben één grote codebase dat als één geheel het build en deployment proces moet doorlopen. Het grote voordeel van een monolitisch app is dat deze gemakkelijk te ontwikkelen, testen en deployen is. Hieronder een voorbeeld hoe een monolithische applicatie er kan uitzien:

_images/microservice-1.png

De nadelen van een monolithische app is dat deze over tijd groot en complex kunnen worden. Het is moeilijker om met in teamverband aan de applicatie te werken en deployen heeft een hoger risico. Gaat er iets mis bij de uitrol, dan is het risico niet beperkt tot een onderdeel, maar kan het invloed hebben tot heel de applicatie.

Microservices daarentegen zijn opgedeeld in kleinere onafhankelijke applicaties. Deze communiceren dan onderling met elkaar. De voordelen van microservices zijn dat het gemakkelijker is voor developers om 1 enkele microservice te begrijpen, het is niet onmiddellijk noodzakelijk de hele applicatie te verstaan. Omdat de applicatie kleiner is, is het build proces ook korter en zal de deployment sneller afgewerkt kunnen worden. Ook is het mogelijk om nieuwe technologieën te gebruiken voor een enkele microservice, omdat deze toch onafhankelijk is van de rest van de applicatie. Een microservice kan er zo uitzien:

_images/microservice-2.png

Zijn microservices interessant voor mijn organisatie?

Microservices zijn interessant wanneer er met een groot team aan een softwareproject gewerkt wordt. Voor kleinere teams is dit minder interessant. Voor grotere teams maakt de microservice architectuur het mogelijk om de teams op te splitsen in kleinere teams. Ieder team zal dan verantwoordelijk zijn voor hun eigen microservices, wat de teams ook onmiddellijk efficiënter maakt.

Wanneer de microservices architectuur gebruikt wordt, dan wordt vaak ook containers (meestal Docker) gebruikt als infrastructuurlaag. Dit omdat gemakkelijk verschillende containers met microservices gestart kunnen worden. Deze microservice kan dan uitgerold worden op een development machine, maar ook dezelfde image kan daarna in productie horizontaal geschaald worden op verschillende machines. Docker orchestration komt hier helemaal in het recht doordat het zeer snel containers kan plaatsen op machines waar er resources beschikbaar zijn.

_images/contact-in4it.png