A platform-agnostic middleware for seamless data portability in multi-cloud application deployment
Modern-day organizations leverage multi-cloud to distribute across different cloud platforms their different workloads to optimize costs and performance. Nevertheless, the use of different cloud providers raises interoperability and portability issues among the platforms engaged in the cloud federation, due to the absence of a common interface, through which data transfer across them is made possible in a seamless way. Previous research has shown that achieving interoperability and portability between clouds is possible on a semantic level. Many projects propose a common modeling language to semantically make multi-cloud environments interoperable, but few and only application-specific solutions have been suggested for moving the data layer of an application among different cloud platforms. In this thesis, a holistic approach is proposed to overcome the vendor lock-in problem and enable data portability between heterogeneous cloud platforms. The study is validated through the implementation of Prestige, a middleware responsible for live migrating the data state of an application between two container-orchestrated clusters each hosted by a different cloud provider. We simulated a scenario where two Kubernetes clusters would consume data from two different database solutions: the first hosted on AWS as an RDS instance, and the second hosted on GCP as a Cloud-SQL instance. Then requests to the database hosted on A were also simulated by creating with sysbench different workloads for different database sizes. Finally, a live data migration between AWS and GCP was carried out. Prestige’s live migration process is based on three different algorithms, resource mapping, dump and restore, and query duplication. The first algorithm is in charge of mapping information relative to the resources connected with the source Kubernetes cluster (the to-be-migrated one), with the resources consumed by the destination cluster (the target one). The mapped information contain authentication credentials that will allow the middleware to properly connect to the two storage system and first dump the content on the source, and after that, restor it on the destination. During and after the dump and restore procedure, the requests that altered the state of the source system are duplicated and cached, and reproduced on the destination, once the restore operation previously initiated is finished. Once the cache is empty, the traffic is ready to be directed to the newly migrated destination system after a limited amount of downtime. To validate the prototype of Prestige, we conducted over 200 experiments simulating different migration scenarios by increasing the size of the migrated database and by increasing the frequency of the simulated client requests. The experiments run with this approach, show promising results, proving that data is kept consistent after the migration 100% of the time and that the downtime necessary to perform the switch between providers can be kept to a minimum of 0.012 seconds.