Goal of this project is to deploy scalable, highly available and secured web application in 3-tier architecture and provide application access to the end users from public internet.
Below are the resources required to deploy this project.
- Route Tables
- Internet gateway
- NAT Gateway
- Security Groups
- Network ACL
- Elastic IP
- S3 Bucket
- SNS Topic
- Cloud Watch Alarms
- EC2 Instances
- Auto Scaling Group
- Load Balancer
- Route53 Hosted Zone
- IAM Policy
- IAM Role
- Session Manager
- Java Application
Below are the skills required to complete this project deployment to deploy infrastructure and application components.
- Apache Tomcat
- Apache Maven
All AWS resources required for this project deployment are in the scope of AWS Free Tier, except Multi-AZ RDS, NAT and Route 53 Domain.
Below are the high-level steps to implement the project.
- Deploy Scalable, High Available, and Secured Web App in AWS cloud as per the 3-tier architecture provided above.
- Create Golden AMI for front and app tier.
- Deploy public load balancer in front of Nginx.
- Deploy auto scaling group for Nginx.
- Deploy private load balancer in front of Tomcat.
- Deploy auto scaling group for Tomcat.
- Deploy RDS into private subnets.
- Configure SNS notification on auto scaling Group event change.
- Configure scaling policy to scale out when CPU utilization breaches the threshold 80% utilization.
- Configure scaling policy to scale in when CPU utilization below the threshold 80% utilization.
- Customize Launch Configuration user-data to automate the software provisioning for Nginx and Tomcat. (Artifact can be pulled from Jfrog, S3 etc..)
- Verify you as an administrator able to login to EC2 instances from session manager.
- Verify if you as an end user able to access web services from public internet browser.
- Once project implementation is completed, destroy the resources created in this project to avoid the billing.