Lift and shift is a common cloud migration strategy that involves recreating the on-premise hosting infrastructure in the cloud while making minimal application changes. The benefit of this strategy is that it’s less invasive to the application code, and the hosting environment maintains a level of familiarity, which can be beneficial for teams working in the cloud for the first time. Once an application is stabilized in the cloud using the lift and shift strategy, the real fun can begin - taking advantage of cloud native features.
Here is an example of how we used four basic AWS features to make our client’s application more cloud native after an initial lift and shift migration.
Migrating to S3 from traditional local disk storage provides several out of the box features that would otherwise be much more expensive to set up. First, robust security makes it easy to keep data secure. Next, S3 buckets have no maximum size, so there is no need to worry about running out of disk space. Finally, redundancy across multiple physical locations is standard, keeping data highly available, and safe.
A migration to S3 requires changing all code that references the local file system. One way to make this transition easy is to use a file storage interface, create a ‘local disk’ implementation for the current configuration, then create an S3 implementation when ready to transition to S3.
Email is another common service that applications may require. SES is a cost-effective email service that provides additional features to help senders maintain a good reputation. Refactoring an application to use SES can potentially be as easy as updating configuration to use the SES SMTP endpoint. Like the rest of the AWS services, SES can also be accessed through the AWS API or SDK.
There are many expensive, stand-alone products dedicated to application monitoring and management. The cost is often justified, as these products serve important roles in maintaining a healthy application. This makes CloudWatch an astounding value, providing better functionality for a fraction of the cost. One advantage of being in a cloud ecosystem like AWS is that it’s often easy to get services to talk to one another, and CloudWatch is no exception.
The benefits of CloudWatch include configuring alarms to monitor metrics like server CPU or memory usage, scheduling recurring tasks that invoke other services, monitoring AWS billing/service consumption, and system logging.
Relational databases are still commonly used to store application data. RDS abstracts the setup, configuration, and hosting of a relational database, making it easy to operate. Configuration is easily done through the AWS portal, and a connection string is provided, which can be used just like a regular on-premise database instance. AWS also provides tools and strategies for migrating the data into RDS. Once up and running, the portal makes formerly time-consuming tasks like scaling, backups, and disaster recovery configuration easy.
This is by no means a definitive list of AWS features that can help transition from lift and shift to cloud native. There is a plethora of services to choose from. While applications vary greatly from one another, there is a set of services to accommodate almost every need in migrating to a cloud native architecture.