Amazon offers a broad range of Compute options. Picking the right one is an important first step that will affect your application performance, cost, and future scalability. In this course, let’s go ahead and explore the various options available and see how we can match these with our business requirements.
Learning Objectives
- Virtual machine options for your applications
- Options for new software development projects
- Serverless options where AWS manages the infrastructure for you
- Containers that can be deployed in a traditional server or serverless fashion
Intended Audience
- Those new to cloud computing
- Those facing the challenge of deploying an application to AWS with very specific business requirements
Prerequisites
- You don’t need any prior knowledge of AWS to benefit from this course
- It’s helpful to be familiar with your business requirements
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.

Software Development has been my craft for over 2 decades. In recent years, I was introduced to the world of "Infrastructure as Code" and Cloud Computing.
I loved it! -- it re-sparked my interest in staying on the cutting edge of technology.
Colleagues regard me as a mentor and leader in my areas of expertise and also as the person to call when production servers crash and we need the App back online quickly.
My primary skills are:
★ Software Development ( Java, PHP, Python and others )
★ Cloud Computing Design and Implementation
★ DevOps: Continuous Delivery and Integration