This project demonstrates the deployment of a multi-tier web application stack on AWS, using a lift-and-shift strategy to migrate a production environment. The architecture leverages AWS services such as EC2, ELB, S3, Route 53, IAM, and Auto Scaling to create a scalable, reliable, and secure environment.
The architecture for this project includes the following components:
- Elastic Load Balancer (ELB): Distributes incoming traffic across multiple EC2 instances to ensure reliability.
- Auto Scaling: Automatically adjusts the number of EC2 instances based on demand, maintaining availability and cost-effectiveness.
- EC2 Instances: Hosts different parts of the application including:
- Tomcat: Runs the VProfile application.
- RabbitMQ: Manages message queues for asynchronous communication.
- Memcached: Provides distributed caching to improve application speed.
- MySQL: Stores the application’s data in a managed relational database.
- S3 Bucket: Stores the WAR file for deployment, fetched by the Tomcat servers on startup.
- Route 53: Provides DNS routing, mapping a custom domain to the application’s ELB.
- IAM: Manages access and permissions to AWS resources for security.
- ACM: Provides SSL certificates for HTTPS.
Before deploying this application, make sure you have the following:
- JDK 11
- Maven 3
- MySQL 8
- AWS Account
- IAM Roles:
- EC2 Role with permissions for S3, Auto Scaling, and CloudWatch.
- SSL Certificate: SSL certificate from AWS Certificate Manager (ACM) for HTTPS traffic on ELB.
- AWS CLI: Installed and configured on your local machine.
- Infrastructure as Code (Optional):
- CloudFormation or Terraform templates if you plan to automate the deployment.