Legacy Application Considerations
Start course

This course covers the core learning objective to meet the requirements of the 'Designing Compute instances solutions in AWS - Level 2' skill

Learning Objectives:

  • Create elastic and scalable AWS compute solutions for a specific workload
  • Evaluate an appropriate AWS compute service based on business requirements
  • Evaluate which Elastic Load Balancer should be used for a specific solution



Older applications present their own set of challenges when migrating to the Cloud. Here's a list of a few of these challenges. You may have limited ability to modify the application or reconfigure it, which limits your options. You may not be able to update the code in any way or is too risky or expensive to do so. The application may have suffered dependencies that are outdated and no longer supported or updated. Your application may have unusual memory or CPU requirements due to inefficient code. Finally, your application may not be able to scale because if you run it more than once, it may create conflicts or data duplication issues. Here are some approaches to moving legacy apps to the Cloud that will help you choose the right computing platform. Containerization; this is simply the process of packaging the application into a Docker container. 

This is the most flexible option. If your application uses a known established platform that's already running containers, for example, Apache Tomcat, you may be able to just move the application into a Docker container. In this case, you can run it anywhere across the entire set of compute options in AWS except maybe under the severless options such as Lambda. Lambda supports containers, but most legacy applications are long running processes and not transaction specific, which means Lambda is out but ECS, Fargate or traditional ECS are good options here. A snapshot copy; this is the simplest solution. Just use the migration tool such as AWS application migration service. And as long as the operating system is within the supported options, you'll have your legacy application running in EC2 in no time at all with zero downtime. The caveat is that after migration, the application may not be able to take full advantage of the Cloud with scalability and cost savings, for example. 

That said, this is the single best approach for those applications that you can't change or don't want to change in any way to avoid risks or refactoring costs. One more approach to moving an application to the Cloud is just to leave it alone. If the application is running fine in your data center, an approach that you could take is to make it available in the Cloud by means of VPNs, load balancers, proxy servers and front-end servers that forward requests to the app without actually migrating it to the Cloud. In fact, this is the only option, if your applications requires an operating system, that has reached end of life, for example, or that is not supported by any of the AWS compute options. Keep in mind that AWS supports a lot of on-premise options regarding deployments, storage, and connectivity. So, even in this case, you may still be able to leverage some Cloud benefits.


About the Author
Learning Paths

Stuart has been working within the IT industry for two decades covering a huge range of topic areas and technologies, from data center and network infrastructure design, to cloud architecture and implementation.

To date, Stuart has created 150+ courses relating to Cloud reaching over 180,000 students, mostly within the AWS category and with a heavy focus on security and compliance.

Stuart is a member of the AWS Community Builders Program for his contributions towards AWS.

He is AWS certified and accredited in addition to being a published author covering topics across the AWS landscape.

In January 2016 Stuart was awarded ‘Expert of the Year Award 2015’ from Experts Exchange for his knowledge share within cloud services to the community.

Stuart enjoys writing about cloud technologies and you will find many of his articles within our blog pages.