AWS Cloud: Lift and Shift Application Workload¶
This was a learning course project where I shifted our existing VProfile application, previously set up locally using Vagrant and various technologies like Nginx and Tomcat, onto the AWS cloud. This project taught me how to implement a lift and shift strategy for application workloads on AWS.
AWS Services Used¶
In transitioning to AWS, I utilized several AWS services to replicate our local environment in a more scalable and manageable cloud setup:
- EC2 Instances: Deployed for running Apache Tomcat, RabbitMQ, Memcached, and MySQL servers.
- Elastic Load Balancer (ELB): Used to distribute incoming application traffic.
- Auto Scaling: Implemented to automatically adjust the number of EC2 instances.
- Amazon S3 and EFS: Used for effective storage solutions.
- Route 53: Managed DNS services including the private DNS zones for our backend services.
- IAM and ACM: Managed user access and security certificates.
Architectural Overview¶
A brief look at how the services were architecturally designed to interact after the transition to AWS:
AWS Architecture Overview
Implementation Steps¶
- Setting Up Security and Network:
- Created security groups for load balancer, EC2 instances, and backend services to ensure secure access protocols.
Security groups setup
- Configured Route 53 for DNS management, ensuring that all service requests are routed correctly.
Route53 setup
- Launching EC2 Instances:
- I launched EC2 instances using AMIs that were pre-configured with our application stack requirements. User data scripts were used for initial setup automation.
Security groups setup
Configuring Load Balancer and Auto Scaling:
Set up the Elastic Load Balancer to handle incoming HTTPS traffic, secured with certificates managed by AWS Certificate Manager (ACM).
Configured auto-scaling for the EC2 instances to handle load efficiently, ensuring cost-effective resource use.
Auto scaling configuration
- Deploying the Application:
- Built the application on my local machine, packaged it, and uploaded the package to Amazon S3.
- Deployed the application from S3 to the EC2 instances, ensuring that all components were communicating effectively.
Deployment
- Testing and Validation:
- After the deployment, I conducted thorough testing by simulating user interactions and monitoring the responses from each component to ensure seamless integration and functionality.
Testing and Validation
This project significantly enhanced my understanding of AWS cloud capabilities and taught me how to effectively migrate traditional applications to a cloud environment using the lift and shift strategy. It was a practical application of cloud infrastructure management, automating deployment, and scaling solutions.