Why Migrate from Hetzner to AWS
As Srijan teams were gaining their AWS certifications to be able to better leverage AWS for their clients, they felt a Hetzner to AWS migration would be an ideal project to thoroughly explore and understand AWS. Besides helping the team get hands-on migration experience, the move to AWS came with a set of significant advantages:
- Srijan was outsourcing server maintenance operation while on Hetzner. Migrating to AWS meant eliminating this expense because they now have a well-functioning in-house AWS team
- There were also cost-savings driven by AWS’ on-demand environments can be easily shut down when not in use. And restarted as quickly when required, without undue long downtimes.
- AWS made it possible to leverage Infrastructure as Code(IaC), which one could set and forget, without worrying about frequent maintenance. This also made environments hosted on AWS easily replicable, and new ones could be made up and running in a matter of minutes.
Migrating from Hetzner to AWS
Before we jump to the exact migration process, here’s a look at the AWS solutions that Srijan used. While this is not a complete list, these are the core solutions leveraged:
- ECS - Container management services to start and stop a cluster of Docker containers at will
- ECR - Docker container registry to store, manage, and deploy Docker container images
- EC2 - For secure and re-sizable cloud computing capacity, handling Srijan's Drupal apps and secure JS apps
- EFS - For secure and flexible file storage in AWS
- RDS - For efficient and re-sizeable capacity to set-up and operate relational databases, taking over from the MySQL databases
- Cloudformation/Terraform - For simplified deployment of infrastructure as code
- S3 - For object storage, specifically JS apps that do not need security
The migration from Hetzner to AWS is set to take place in phases, given the huge amount of data being migrated. The first phase was to carry out a test migration to get an understanding of the complete process, identify any expected challenges, and work out optimal solutions.
Step 1: The discovery involved identifying all databases, applications, and PoCs currently hosted on Hetzner
Step 2: Identify the least impactful application to perform a test migration. In our case, it was Trrybe, a video platform built on Drupal.
Step 3: Create a Docker image which has all the software needed to run the Trrybe application. Similar to Trrybe, there are several other legacy application that will need separate Docker images to be successfully migrated.
Step 4: Use Terraform or CloudFormation to create the infrastructure needed to run Trrybe
Step 5: Clone and deploy the latest source repository to the newly created infrastructure on AWS
Next steps: Post successful test migrations, all other applications will be migrated across a staggered timeline
Things to Watch Out For
While the migration from Hetzer to AWS is not significantly complex, there a few best practices to keep in mind:- The migration required careful planning to identify and avoid instances of software interdependencies and ensure that you are using the correct software version in the Docker image
- Review the migration process to understand how much of it can be automated
- Carefully evaluate the need of a CI/CD pipeline for deploying each application to production. For example: Applications that don’t update regularly or are legacy in nature, like Trrybe, do not need a CI/CD set-up.
The migration is still in progress, and the Srijan team is evaluating several different way to identify the most efficient processes. We'll keep updating this piece as the team proceeds through the migration.
Srijan is currently working with enterprises across media, travel, retail, technology and telecom to drive their digital transformation, leveraging Drupal and other emerging technologies.
Looking to leverage an expert AWS team? Just drop us a line and our team will get in touch.