We were tasked with preparing a migration plan for a client which had previously operated on premise.
Challenge: Migration of 20+ applications from on-premise data center to the cloud
The company ran Kubernetes clusters in their own data center, and they have selected AWS as their target cloud provider. The goal was to migrate over 20 applications with different tech stacks to the selected cloud solution, while keeping the majority of the apps online – or, at the very least, minimizing downtime to avoid affecting SLA.
Solution: Infrastructure-as-code approach & connectivity add-ons for EKS clusters
To spin up a new infrastructure, we decided to use Terragrunt, which assisted us in automating the creation of new environments for various groups of applications with minimal code duplication, combined with Terraform. We chose Jenkins and ArgoCD as CI/CD solutions. Applications have been relocated to EKS clusters.
One of the most difficult challenges we faced was to maintain connectivity between the new and old infrastructure. After a thorough research, we decided to use VPN and CNI add-ons for EKS cluster to accomplish this. This way, we were able to gain control of the routes on both ends. As a result, our client’s 20+ applications have been successfully migrated to the AWS cloud. We managed to keep the majority of them online, only a small number of apps (4) had to be switched offline for a moment.
We applied the infrastructure-as-code approach throughout the process.
Results in numbers:
- 14 EKS clusters moved from an on-premise data center to the AWS cloud
- 20+ applications succesfully migrated (16 online at all times, 4 switched offline for a brief moment)
- hundreds - instead of thousands - lines of code
- few terabytes of data migrated from self hosted PostgreSQL (11) clusters to the AWS RDS service
- AWS (EKS, VPC, RDS, Aurora, S3, Cognito)
- docker images built in Jenkins
- CI/CD managed as a code
- ArgoCD for deployment orchestration
- Prometheus, Grafana and ELK stack for managing logs and metrics
- AWS VPN to establish connectivity between old and new infrastructure
Tell us about your project
Can we offer you a hand in developing your product? Once you let us know about your requirements, our DevOps experts will prepare an initial estimation, schedule a call and discuss your project in detail. All information will be kept confidential. Let's get in touch >