Insights, technology, people and more

Altijd up-to-date met onze laatste artikelen.

@
Microservices: van software design naar infrastructuur architectuur

Microservices: van software design naar infrastructuur architectuur

13 June 2016 door in Development Hosting

Parallel aan de ontwikkeling en populariteit van containertechnologie, is ook het gebruik van microservices architectuur aan een opmars bezig. Het idee achter microservices is dat applicaties eenvoudiger te bouwen en te onderhouden zijn als ze worden opgebroken in kleine, onderling samenwerkende onderdelen. Ieder component wordt apart ontwikkeld, waarna de applicatie daarna eenvoudigweg de som is van de verschillende delen. Dit verschilt dus van een tradionele, monolithische applicatie waarbij alles centraal wordt ontwikkeld. Het gebruik van een microservices architectuur is langzaam maar zeker de standaard aan het worden bij systemen die gebruik maken van continuous deployment.

Modulair opsplitsen van software

Bij het gebruik van microservices worden functionele componenten van een applicatie dus uit elkaar getrokken en apart geplaatst. Bij een webshop bijvoorbeeld, zou dit kunnen betekenen dat in plaats van één grote applicatie er losse microservices worden gedefinieerd voor de zoekfunctie, de shopping cart, producten, bestellingen, klanten, enzovoorts. De keuze hiervan ligt bij de ontwikkelaar en kan zo gedetailleerd (klein) zijn als gewenst. Als services te specifiek worden gemaakt, spreekt men ook wel van nanoservices. Deze resulteren in onnodige overhead die de voordelen teniet doen.

MicroservicesExample

Voorbeeld van microservices voor een e-commerce website

Voordelen van microservices software design

Het werken met een microservices architectuur kan verschillende voordelen met zich meebrengen.

Schaalbaarheid

Zoals gezegd, het gebruik van microservices resulteert in een hoge en zeer flexibele mate van schaalbaarheid. Van ieder component kunnen bij meer drukte of behoefte extra instanties bijgeschakeld worden. Bij grote drukte van een webshop bijvoorbeeld kunnen extra containers met shopping carts worden bijgezet. Door slim te werken met loadbalancers en technologie als sharding, ontstaat een applicatieomgeving die nagenoeg oneindig via meerdere dimensies kan schalen.

Snellere ontwikkelingscyclus

Omdat de applicaties klein zijn, kan veel sneller ontwikkeld en getest worden dan bij grote, logge toepassingen. De applicaties zijn vele malen overzichtelijker, waardoor een nieuwe versie snel getest en geïmplementeerd kan worden.

Taal-onafhankelijkheid

Doordat onderling gecommuniceerd wordt middels APIs kan ieder component geprogrammeerd worden in feitelijk iedere programmeertaal naar keuze. Voor iedere toepassing kan de meest geschikte en krachtige technologie-stack worden ingezet.

Stimulans voor ontwikkelaars

Over het algemeen worden developers enthousiast als ze kunnen werken met de nieuwste technieken en programmeertalen. Bij oude, monolitische applicaties zit men gevangen in vaste applicatiestructuren en methodieken die niet of nauwelijks meer te veranderen zijn. Microservices zijn betrekkelijk snel geheel opnieuw te ontwikkelen of aan te passen. Dit motiveert ontwikkelaars, hetgeen resulteert in betere resultaten en trouwere medewerkers.

Lagere complexiteit

Vergeleken met monolithische architecturen is de complexiteit van een enkele microservice enorm laag. Door het gebruik van APIs is alle functionaliteit duidelijk gestructureerd en omschreven zonder abstractielagen. Dit betekent dat het voor een ontwikkelaar mogelijk is om een dergelijke applicatie van voor tot achter helemaal te begrijpen. Met name voor nieuwe collega’s geldt dat deze hierdoor sneller aan de gang kunnen om een bijdrage te leveren aan een productieomgeving.

Automatisering

Eén van de nadelen van het gebruik van microservices is wellicht de hoeveelheid werk die initieel zit in configuratie en automatisering van alle verschillende componenten. Maar dit levert op termijn juist een groot voordeel op. Systemen worden robuuster, minder gevoelig voor configuratiefouten en de hoeveelheid handwerk wordt gereduceerd tot een minimum. Doordat in korte, grotendeels geautomatiseerde ontwikkel en update cyclussen wordt gewerkt, kunnen eventuele bugs snel worden gedetecteerd en opgelost. En, indien gewenst, kunnen updates ook weer snel en eenvoudig worden teruggedraaid.

Duurzaamheid

De moderne applicatie van vandaag is de legacy applicatie van de toekomst. Vroeg of laat krijgt een organisatie ermee te maken dat software achterhaald is en een remmende factor wordt voor toekomstige groei. Dat zal ook gelden voor de applicaties die nu ontwikkeld worden in een microservices architectuur. Echter, omdat deze in kleine onderdelen zijn opgesplitst, is het tezijnertijd vervangen van de applicatie op te splitsen in kleine projecten. In plaats van het in één keer moeten vervangen van een enorme alles-in-één applicatie, kan het moderniseren in fases worden gedaan. U zult moeten blijven werken aan het up-to-date houden van software en technologie, maar kunt dat in kleine, relatief veilige stappen doen.

Misschien is dit laatste argument dan ook wel de belangrijkste. Als u het goed aanpakt, heeft u de kans om een systeem te ontwikkelen dat nooit meer een remmende factor is bij veranderende omstandigheden.

OpenStack: Microservice architectuur in de praktijk

Eén van de grootste en meest bekende voorbeelden van het gebruik van een microservices architectuur is ongetwijfeld OpenStack, waarop ook ons Fuga platform is gebouwd. OpenStack is opgebouwd uit een groot (en nog steeds toenemend) aantal componenten die samen de infrastructuur vormen voor dit cloud platform. Het platform maakt gebruik van zo klein mogelijke, functionele schakels die op uniforme wijze middels API’s met elkaar communiceren. Ieder component is een apart project binnen OpenStack. Naast de communicatie tussen de API’s, wordt gewerkt met zo identiek mogelijke methodes voor functioneel en technisch design, ontwikkelmethodiek en test- en acceptatieprocedures. Zo wordt ervoor gezorgd dat dit project met een enorme omvang toch overzichtelijk, beheersbaar en betrouwbaar blijft.

De belangrijkste onderdelen van de OpenStack architectuur

Infrastructuur voor microservices

Zowel microservices als containers zijn design principles. Voor containers geldt dit op het gebied van deployment, schaalbaarheid en onderhoud van systemen. Bij microservices betreft het functionaliteit, beheersbaarheid en betrouwbaarheid van software. Het combineren van de twee vormt een methode om een enorm platform te bouwen dat waarop zowel de infrastructuur als de software snel aan te passen en bij te werken is. Als een bepaald deel van een applicatie meer capaciteit nodig heeft, kan alleen dat gedeelte worden uitgebreid, zonder dat direct voor de hele applicatie uitbreiding moet worden verzorgd. Door microservices onder te brengen op containers ontstaat een bijzonder flexibele architectuur die snel en eenvoudig mee kan groeien (of krimpen) met een actuele behoefte en die snel voorzien kan worden van de nieuwste updates.


Lees ook: Applicatiemonitoring door unit testing

Wat kan Cyso voor u betekenen?

Ondanks de vele voordelen zoals hierboven geschetst, is het vaak niet eenvoudig om over te schakelen naar een microservices architectuur. Er dient een hoop nadenkwerk vooraf te worden gedaan. Het is in veel gevallen ook eenvoudigweg nauwelijks mogelijk om een bestaande, monolithische applicatie om te bouwen naar een architectuur op basis van microservices. Alle componenten (applicaties, loadbalancers, netwerkarchitectuur, scripts voor automatisering en schaalbaarheid) dienen op de juiste wijze met elkaar samen te werken. Uw developers hebben hier een belangrijke rol in, maar Cyso kan u als hostingpartij ook van advies en ondersteuning voorzien bij het opbouwen, inrichten en hosten van de infrastructuur van uw platform en applicaties.


Altijd up-to-date met onze laatste artikelen.

@

Kwaliteit. Betrouwbaar. Betrokken.
  • 24/7 service support
  • Nederlandse datacenters
  • ISO 27001 gecertificeerd
vmware enterprise service provider