In 5 Stappen Van Legacy Naar Cloud
In 5 stappen van legacy naar cloud
Hoe breng jij software naar de cloud? Is dit mogelijk met een 20 jaar oude legacy applicatie?
Het is absoluut mogelijk om een legacy applicatie naar de cloud te migreren, zelfs wanneer deze 5.000.000 regels code bevat. In dit artikel leg ik je uit hoe jouw applicatie er in de cloud uit kan zien en geef ik je een stappenplan om dit te realiseren.
Waarom Naar De Cloud
“Software is eating the world”, schreef Marc Andreessen in zijn essay in 2011. Negen jaar later is het al bijna ouderwets om te zeggen dat bijna elk bedrijf een softwarebedrijf is geworden.
Clouddiensten, zoals Amazon, Google en Microsoft versnellen deze groei. Op welke manier doen ze dit? Wat zijn de voordelen van de cloud?
Automatisch schalen afhankelijk van gebruiksbehoefte
Real-time kosten overzicht
Real-time data-analytics en reporting
Makkelijk installeerbare integraties
Eigenschappen die nieuwe software bedrijven graag benutten om sneller te groeien. Hoe ziet een werkdag bij een cloud-based software bedrijf eruit?
Een Kijkje In Het Leven Van De Moderne Software Engineer
09:00 - Peter logt thuis in op zijn machine terwijl hij van zijn koffie drinkt. Hij bekijkt wat dashboards in Google Analytics en ziet dat de internetverkoop is verdubbeld t.o.v. een maand eerder. Hij laat aan zijn marketeer weten dat de verkoop langs het Facebook-kanaal wat achter blijft en vraagt haar om daar eens in te duiken.
09:30 - Peter pakt hij zijn backlog erbij en past op basis van de analytics wat prioriteiten bij. Hij stuurt een Whatsapp naar John met de vraag of hij rond 10:00 even kan Skypen over wat backlog-prioriteiten. John was al wat eerder ingelogd en reageert dat 10:30 handiger is omdat hij net bezig is om wat error messages te onderzoeken.
John is ontwikkelaar en heeft aan de wieg gestaan van hun applicatie. De technische applicatie met front- en backend is grotendeels gehost op Amazon Cloud. Recent hebben ze de overstap gemaakt van Containers naar AWS Lambda.
Containers leverde orchestration problemen op. AWS Lambda daarentegen maakt hun micro-services, ‘oneindig’ schaalbaar en altijd beschikbaar. Simpelweg code uploaden naar Amazon en de service komt beschikbaar. Wat het kost is real-time te zien. Waar het draait? Geen flauw idee!
Peter en John werken bij een hyper modern software bedrijf en zijn eigenlijk een uitzondering. De meeste bedrijven in Nederland bestaan immers al veel langer. Die bedrijven hadden al software (ontwikkeld) toen ‘Clouds’ alleen nog in de lucht hingen.
Software van dergelijke bedrijven hebben een 2 of 3 tier traditionele architectuur met monolithische systemen, gehost op een dedicated omgeving op een aanwijsbare locatie in Nederland.
Wellicht denk je nu, “Ja, dat ben ik!”. Nog even wachten en dan leg ik je uit in welke stappen je jouw applicatie naar de cloud kan brengen.
Traditionele Legacy Applicaties Versus Cloud Mogelijkheden
Je hebt ondertussen een beter beeld van de voordelen van de cloud. Hoe vergelijken deze met legacy applicaties?
Statische capaciteit versus elastic scaling
In de Cloud maak je letterlijk in seconden de benodigde omgevingen aan. Dit om bijvoorbeeld piekbelastingen volledige geautomatiseerd op te vangen. Deze omgevingen zijn ook geschikt voor Continuous Testing pipelines, bestaande uit bijvoorbeeld unit-tests, systeem-tests, acceptatie-tests, performance-tests en end-2-end-tests.
Legacy daarentegen schaalt nauwelijks met een vooraf bepaalde OTAP zonder ingebouwde elasticiteit.
Monolithische blokken versus micro-services
Micro-services zijn kleine services die in de cloud benaderbaar zijn. Elk van deze kleine services kunnen realtime opschalen. Op deze wijze hoef je alleen de benodigde delen van de software op te schalen.
Bijvoorbeeld, voor een Pensioenplanner service wordt tijdelijk een specifieke functie in de rekenmodule opgeschaald omdat via batch voor 400.000 pensioengerechtigden specifiek die functie even nodig is.
Legacy software heeft een vaste monolithische rekenmodule die alleen in zijn geheel schaalbaar is.
Black-box costs versus real-time costs
Nog een belangrijk voordeel is de transparantie op kosten. Met op Cloud gebaseerde software kun je voor elke functie volgen wat de kosten zijn. Dat levert niet alleen heel veel inzicht op. Ook elke ontwikkelaar kan zien wat zijn functie kost. Het is voor een ontwikkelaar mooi om te zien welke impact zijn functie heeft op de kosten. Hij kan dan verantwoordelijkheid nemen en de kosten minimaliseren.
Bij Legacy krijg je alleen op hoofdlijnen de rekening gepresenteerd waar je als ontwikkelaar niets mee kan.
Eenvoudig toegang tot services
Cloud software heeft als voordeel dat je gemakkelijk kunt putten uit de vele Cloud services. Dit versnelt de ontwikkeling aanzienlijk. Voorbeelden zijn database retentie, automatische backups en zero-downtime deployment. Deze services zijn eenvoudig toegankelijk met real-time inzicht in gebruik en kosten.
Bij Legacy software bestaat deze functionaliteit niet en programmeer je dit veelal zelf.
Realtime data collection, analytics and reporting
Het werd al eerder genoemd. Inzicht in het gebruik. Cloud software kun je gemakkelijk koppelen aan Data Collection services, waardoor je een schat aan data verzamelt die je kunt analyseren en rapporteren. Hierdoor krijg je meer inzicht in je software en gebruiker. Op deze wijze weet jij waar de product manager waar hij zich op moet richten.
Het verschil met Legacy software is het gebruik van kostbare Management Informatie Systemen om dergelijke data te verzamelen, analyseren en rapporteren.
Stappenplan Voor Legacy Cloud Migraties
Oké veel voordelen dus. Maar hoe benut je die nu als je bestaande Legacy hebt? In mijn ervaring zie je telkens een patroon in de implementatie. Hieruit valt het volgende stappenplan af te leiden.
STAP 1: Meestal zien we allereerst de beweging naar Continuous Delivery. Het automatiseren van het bouwen, testen en uitrollen van software. Als dit platform staat, ontstaat er een drive om eenvoudiger en sneller omgevingen aan te maken, i.p.v. via formulieren, manuele arbeid en dito doorlooptijden.
STAP 2: Wanneer die beweging is ingezet ontstaat ook het inzicht in het migreren van de hosting. Immers telkens investeren in nieuwe servers, onderhoud, beheer kan een Cloud provider nu eenmaal veel efficiënter. En omdat de CD pipeline toch al staat is het een kwestie van overhangen van de targets.
STAP 3: Vanuit deze PaaS level migratie ontstaan er vele nieuwe mogelijkheden. I.p.v. de software op virtual-machine’s te hosten kunnen ze ook als containers worden gehost. Hierdoor kunnen instances veel sneller worden gecreëerd.
STAP 4: Omdat containers de opstap zijn naar micro-services ontstaat de behoefte om de containers te managen. Dit wordt container orchestration genoemd en kan met bijvoorbeeld Kubernetes gerealiseerd worden.
STAP 5: De stap die daarna veelal volgt is het direct uploaden van source code naar Cloud services zoals AWS Lambda, waarbij de Cloud provider de code voor je compileert en runt. Je geeft dan het hele distributieproces uit handen.
Maar Wees Voorzichtig
Er zijn een aantal zaken die je tijdens je cloud migratie in de gaten moet houden. Verlies je deze uit het oog dan zul je op de lange termijn opnieuw problemen ervaren.
Het is belangrijk dat je je software architectuur omvormt. Dat betekent het opdelen van componenten in micro-services en generieke delen vervangen door standaard Cloud services.
Daarnaast moet je voorzichtig zijn met een lock-in. Zolang je de Cloud provider gebruikt als platform valt dit allemaal wel mee. Een Linux-instance bij Amazon, Google en Microsoft ontloopt elkaar niet veel, maar wanneer je platform specifieke services gaat gebruiken wordt je snel afhankelijk.
Ik zeg dit niet voor niets. Die generieke services van Amazon, Google en Microsoft zijn natuurlijk bijzonder verleidelijk.
Final Words
Toch zie ik op termijn geen andere mogelijkheid omdat het de enige manier is om concurrerend te blijven. Hopelijk ziet de EU dit ook en gaan we investeren in Europese cloud providers. Naast dat Amerikaanse en Aziatische geweld blijven we echt achter.