Van Monoliet naar Micro-Services
Van monoliet naar micro-services
Hoe vorm je een monoliet om naar een cloud based architectuur?
De inhoud
Met cloud hosting kun je een kostenbesparing realiseren door flexibel gebruik te maken van hosting.
Veel legacy softwareproducten (lees: monoliet) kunnen deze cloud mogelijkheden niet benutten.
Design patterns zijn krachtige middelen om monolieten om te vormen naar cloud applicaties.
Goede architecten/opgeleide medewerkers zijn nodig om deze mogelijkheden uit te nutten.
Veel independent software vendors (ISV), vormen op dit moment hun softwareproducten om naar cloud based oplossingen. Meestal begint dat met het optuigen van een platform en de software daar naartoe migreren. Maar daarmee behaal je niet de voordelen die mogelijk zijn in de cloud.
Om de voordelen van de cloud te benutten is het nodig om de software te transformeren naar cloud-enabled software. Veel ISV’s moeten deze transitie nog maken of zitten midden in deze transitie. In dit artikel geven we inzicht in de veranderingen die de ISV’s op dit moment doormaken, of nog gaan doormaken.
Auteur:
Voordelen van Cloud software
Software beschikbaar stellen via een public cloud service provider heeft een aantal grote voordelen. Ten eerste verlaagt cloudhosting de kosten door alleen de servers te gebruiken wanneer ze nodig zijn. Dus stel je hebt een afspraak met klanten dat de software alleen van 8:00 - 18:00 beschikbaar is, dan geef je de resources terug tussen 18:00 - 8:00, mits uiteraard dat zo technisch is ingeregeld. Ten tweede kan met cloudhosting specifieke softwarefuncties op- en afgeschaald worden, zoals opschalen van software voor een online retailer tijdens Sinterklaas. Ten derde vergroot cloudhosting de wendbaarheid. Bijvoorbeeld om bepaalde cloud API’s af te nemen van andere (cloud)leveranciers. Samen ontstaat zo een cloud based ecosysteem met services.
Van monoliet naar cloud based applicaties
Voor het omvormen van monolieten naar innovatieve cloud applicaties zijn er zogenaamde design patterns beschikbaar. Met design patterns kun je stap voor stap de monoliet opbreken in kleine cloud based services. Hieronder staan negen veelgebruikte design patterns voor dat opbreken.
Negen design patterns:
Strangler pattern: Incrementally migrate a legacy system
Compensating Transaction pattern: Undo the work performed by a series of steps
Deployment stamp pattern: Deploying multiple independent copies of application components, including data stores
External Configuration store: Move configuration information out of the application deployment package
Facade pattern: Façade or adapter layer between different subsystems
Queue-based Load Leveling pattern: Queue that acts as a buffer between a task and a service
Saga pattern: Manage data consistency across microservices
Sharding: Divide a data store into a set of horizontal partitions or shards
Throttling pattern: Control the consumption of resources
Wil jij ook meer weten over deze design patterns en wil jij deze ook toepassen in jouw bedrijf? Wil je sparren of heb je advies nodig over deze toepassing en wil je weten wat voor jou de beste oplossing is? Dan nodig ik jou uit om contact op te nemen.
Hieronder kun jij zien hoe design patterns in de praktijk worden toegepast.
Voorbeeld gebruik patterns
Een CRM systeem heeft een document based store (Db_old). Deze blijkt onvoldoende te presteren voor het groeiende gebruik. Het doel is om deze store te migreren naar een document based database (Db_new). Om dit te bereiken is iteratief een Data Access Layer (DAL) toegevoegd door middel van het Facade pattern. Daarna is met het Sharding Pattern de synchronisatie tussen beide stores gerealiseerd. Daarmee is de basis voor de migratie gelegd. In de DAL is vervolgens per tabel de link omgelegd van Db_old naar Db_new met het Strangler pattern.
“Het Strangler pattern maakt het voor mij mogelijk om stukjes van het oude systeem door stukjes van het nieuwe systeem te vervangen zonder downtime van de productieomgevng.”
- Nick van Hoesel
Softwareontwikkelaar Search4Solutions
Kanttekening bij het moderniseren
Een veelgehoorde stelling is dat, als je een systeem wilt transformeren naar een cloud based oplossing, het ontwikkelen van business features moet pauzeren. Dit is echter bedrijfstechnisch niet verantwoord en is ook helemaal niet nodig. Veel migratiewerk is slim te integreren in het ontwikkelen van de reguliere business features. Dit vereist wel een ‘nieuw kijk’ op het moderniseren. Juist daarvoor zijn deze design patterns erg geschikt. Voor goed gebruik van design patterns is een opgeleide software architect met design pattern expertise dan ook ‘een must’. Anders blijf je hangen in een patstelling en haalt de concurrentie je uiteindelijk in.
Meer weten
Het Nederlands Instituut voor de Software Industrie (NISI.nl) is een spin-off van universiteit Utrecht, om softwarebedrijven te innoveren. Die innovatie bereiken we door het leveren van kennis aan 800 Nederlandse softwarebedrijven, het ontwikkelen van software met universiteiten en het organiseren van inhoud-gedreven netwerkevents. Als je onderdeel wilt worden van dit bijzondere netwerk, dan kun je je gratis aanmelden via het aanmeldformulier. Je blijft dan op de hoogte en kan meedoen aan onze sparringsessies.
Bronnen
Compute Resource Consolidation pattern
Common Design Patterns
AWS Cloud Design Patterns
Boek: Cloud Design Patterns: Prescriptive Architecture Guidance for Cloud Applications
Microsoft Cloud Design Patterns - Book Download