Een veel voorkomend probleem van innovatieve online ondernemingen is schaalbaarheid. Een bedrijf heeft bijvoorbeeld een succesvolle web-applicatie die wordt gehost op een systeem dat de groei niet meer kan bijbenen. De cloud biedt de flexibiliteit en schaalbaarheid voor dit probleem. Maar welke risico's zijn er verbonden aan het verplaatsen van de applicatie naar de cloud? En zal de service waar klanten op rekenen niet onderbroken worden?
Het migreren van webapplicaties naar een schaalbare cloud-infrastructuur is een uitdaging waar talloze succesvolle online ondernemingen mee te maken krijgen. Gelukkig zijn er migratie-strategieën beschikbaar die kunnen helpen om dit proces succesvol te doorlopen. Ik ga er hier enkele bespreken.
Redding uit de cloud
Wij werken veel samen met bedrijven van alle groottes en in allerlei industrieën. Veel van deze bedrijven willen hun systemen van on-premise naar de cloud verplaatsen. De acceptatie van de cloud is de afgelopen jaren sterk verbeterd voor een breed scala van toepassingen, waaronder applicaties voor de primaire bedrijfsprocessen. Een belangrijke aanjager daarvoor is de aanzienlijke verbetering van cloud-security. Daarnaast bieden cloud-platformen steeds meer diensten aan, die nodig zijn om applicaties te kunnen draaien.
De cloud is daardoor niet langer alleen geschikt voor het aanbieden van informatieve websites en crm-tools. Zelfs internationale organisaties voelen zich nu op hun gemak om bedrijfskritische applicaties naar de cloud te brengen. Dit in navolging van Dev/Test en andere experimentele applicaties, die zich al hebben bewezen in de cloud. Deze beweging was onvermijdelijk, omdat klanten tegenwoordig steeds meer verwachten dat de systemen die ze nodig hebben altijd te benaderen zijn via een browser.
Systeemverschillen
Het verplaatsen van een bestaand productiesysteem naar de cloud zorgt vanzelfsprekend voor grotere uitdagingen, dan het opzetten van een nieuw systeem. De bron- en doelomgevingen moeten zoveel mogelijk gelijk zijn, omdat het migratieproces vooral gaat over het verplaatsen van data, zonder rekening te hoeven houden met systeemverschillen. Verder moet de periode van downtime goed overwogen worden. Die kan namelijk variëren van een milde ergernis voor de klant tot een ware business-killer.
Daarnaast moet een cloud-systeem dezelfde of betere prestaties bieden dan het oorspronkelijke systeem, zeker als je de gebruikers tevreden wilt houden. Maar misschien wel de grootste uitdaging: een migratie voltooien met weinig of geen onderbreking en er bovendien voor zorgen dat er geen data verloren gaat tijdens de transitie.
Data verplaatsen
Welke opties zijn er als je gegevens van een bronsysteem naar een nieuw systeem wilt verplaatsen? Er zijn grofweg twee keuzes. Je kunt de database op het bronsysteem dumpen, verplaatsen naar het doelsysteem, en die vervolgens daar inladen.
Om er zeker van te zijn dat het uiteindelijke doelsysteem consistent is met het origineel, is een korte downtime van de applicatie noodzakelijk tijdens de migratie. In veel gevallen is dat is echter geen optie.
Streaming replicatie
Een andere benadering bij het migreren van een applicatie naar de cloud is streaming replicatie. Bij deze methode blijft het bronsysteem online en kunnen klanten de service blijven gebruiken, terwijl de content naar het doelsysteem wordt gestreamd. Als het doelsysteem klaar is met het overzetten van de content, kan het bronsysteem uitgeschakeld worden en het doelsysteem geactiveerd. Deze omschakeling zal aanzienlijk korter zijn dan de eerdergenoemde dump-and-load aanpak. Helaas ondersteunen niet alle databasesystemen streaming replicatie. Postgres Plus Cloud Database, een product van EnterpriseDB, ondersteunt dit wel, maar hiervoor moeten beide kanten van van de migratie streaming replicatie ondersteunen.
Is dit niet het geval, dan is de eerste methode de enige mogelijkheid. Er zijn wel technieken beschikbaar die helpen om de dump-load methode te optimaliseren, zodat die theoretisch dichter in de buurt komt van streaming. Onder de streep echter zal de dienstverlening aan klanten nog steeds langer onderbroken wordt dan met streaming replicatie.
Verloren tweets
Er zijn gevallen waarin de bron- en doel-databases niet per se met elkaar in overeenstemming hoeven te zijn. Een dienst als Twitter loopt waarschijnlijk niet vast als er voor een korte periode een paar duizend tweets niet beschikbaar zijn. Maar werken met inconsistente gegevens voor loonadministratiedeposito’s van een paar duizend klanten, is natuurlijk wel een ernstig probleem.
De realiteit is echter dat veel moderne applicaties geen transacties hoeven te verliezen. Het kan soms wel iets langer duren voordat er consistentie is tussen de databases, terwijl de laatste transacties worden verwerkt na de eerste grote migratie. Om de impact van een relatief langere downtime te verzachten, zijn er wel strategieën, zoals het plannen van de migratie buiten kantoortijden (als die er zijn).
Tuning en Setup
Als een applicatie eenmaal naar de cloud is gemigreerd, dan moet er vervolgens nog gekeken worden of de prestaties en beschikbaarheid gewaarborgd zijn. Het goede nieuws is dat je deze issues voor database-beheer uitstekend kunt aanpakken met het juiste raamwerk, de cloud en een product als Postgres Plus Cloud Database. Opschalen of downsizen en automatische failover in de cloud zijn allemaal standaard features, die een waardevolle aanvulling zijn op deze veelzijdige open source database.
Zelfs als men ooit is begonnen met een nieuw systeem met bescheiden specificaties, dan nog is het gemakkelijk om snel op te schalen, zodat klanten een grote verbetering van de systeemprestaties zullen merken. Dit uitgangspunt moet veel technologie-startups als muziek in de oren klinken.
Atilla, in deze reactie kan ik me veel beter vinden 🙂
Laten we voorop stellen dat iedere migratie of verandering geld kost. Dit is de reden waarom er vaak aangevuld en gepatched wordt ondanks dat er al betere alternatieven zijn. Dit is de *primaire* drijfveer voor het ontstaan van legacy; een werkend systeem welk verouderd is.
Doordat steeds migreren en de beste keuze maken op korte termijn duurder is wordt er voor de kortere termijn een oplossing en aanvulling gekozen. Dit is wat men noemt: Een technische schuld. Door elke verwevenheid te laten ontstaan -men kan steeds minder makkelijk afscheid nemen van wat er is- wordt de technische schuld hoger. Daar komt later nog eens “rente” op waardoor men blijft uitstellen.
If it’s your job to eat a frog, it’s best to do it first thing in the morning. And If it’s your job to eat two frogs, it’s best to eat the biggest one first.
– Mark Twain
@Ewout:
[…] migreren van een database gaat meestal niet alleen om de data. Veelal zit pijn in de business logic welke er middels allerlei stored procedures ingebakken is […]
Mee eens! Dat is exact wat ik hierboven zei:
[…] Ze hadden eerder van hun DWH een spaghetti gemaakt door in de loop van de tijd door applicatie- en DB-beheerders verschillende “views” en andere point-to-point connecties, diep in de DB`s zelf te laten maken! […]
De stored procedures (ik zei point-to-point connecties) waren de ellende van dat traject.
Ik denk dat de hierboven beschreven scenario’s heel goed zijn toe te passen en ik kan nog wel enkele zaken bedenken waarmee je downtime op je systemen kan creëren zonder daarvoor aan service naar de klant in te boeten.
Veel reageerders denken in technische problemen (op basis van persoonlijke ervaringen) in plaats van oplossingen out of the box.