Een platform-agnostische middleware voor naadloze dataportabiliteit in multi-cloud application deployments
Moderne organisaties maken steeds vaker gebruik van multi-cloud om workloads te verdelen over verschillende cloudplatformen, met als doel kosten en performance te optimaliseren. Het gebruik van meerdere cloudproviders brengt echter interoperabiliteits- en portabiliteitsproblemen met zich mee binnen de cloudfederatie. Deze ontstaan door het ontbreken van een gemeenschappelijke interface waarmee data op een naadloze manier tussen platformen kan worden overgedragen.
Achtergrond en bestaande benaderingen
Eerder onderzoek heeft aangetoond dat interoperabiliteit en portabiliteit tussen clouds op semantisch niveau mogelijk zijn. Veel projecten introduceren een gemeenschappelijke modelleertaal om multi-cloud omgevingen semantisch interoperabel te maken. Er zijn echter slechts weinig — en vaak applicatie-specifieke — oplossingen voorgesteld voor het verplaatsen van de datalaag van een applicatie tussen verschillende cloudplatformen.
Voorgestelde holistische aanpak
In deze thesis wordt een holistische aanpak voorgesteld om vendor lock-in te doorbreken en dataportabiliteit tussen heterogene cloudplatformen mogelijk te maken. De aanpak wordt gevalideerd door de implementatie van Prestige, een middleware die verantwoordelijk is voor het live migreren van de datastate van een applicatie tussen twee container-georkestreerde clusters, elk gehost door een andere cloudprovider.
Experimentele opzet
Er is een scenario gesimuleerd waarin twee Kubernetes clusters data consumeren vanuit twee verschillende database-oplossingen: de eerste gehost op AWS als een RDS-instance en de tweede op GCP als een Cloud-SQL-instance. Vervolgens zijn databaseverzoeken op het eerste systeem gesimuleerd door met sysbench verschillende workloads te genereren voor uiteenlopende databasegroottes. Tot slot is een live datamigratie uitgevoerd tussen AWS en GCP.
Prestige middlewareproces
Het live migratieproces van Prestige is gebaseerd op drie algoritmen: resource mapping, dump and restore en query duplication.
Het resource mapping-algoritme brengt de resources van het bron-Kubernetes cluster (het te migreren cluster) in kaart met de resources die worden gebruikt door het doelcluster. Deze mapping bevat authenticatiegegevens die de middleware in staat stellen om verbinding te maken met beide storage-systemen. Vervolgens wordt de data uit het bronsysteem gedumpt en hersteld op het doelsysteem. Tijdens en na het dump- en restore-proces worden alle requests die de state van het bronsysteem wijzigen gedupliceerd en gecachet. Zodra de restore is voltooid, worden deze wijzigingen opnieuw afgespeeld op het doelsysteem. Wanneer de cache leeg is, kan het verkeer worden omgeleid naar het gemigreerde systeem met slechts een zeer beperkte downtime.
Valideren prototype
Om het Prestige-prototype te valideren, zijn meer dan 200 experimenten uitgevoerd waarin verschillende migratiescenario’s zijn gesimuleerd door zowel de databasegrootte als de frequentie van client requests te verhogen.
Resultaten
De experimenten tonen veelbelovende resultaten. In alle gevallen bleef de data na migratie 100% consistent, terwijl de downtime die nodig was om tussen cloudproviders te schakelen werd teruggebracht tot een minimum van 0,012 seconden.