Deploying vprofile Java Application on AWS Cloud using services like ec2 instance, ELB, S3/EFS, Route53, Certificate Manager, Autoscaling etc.
- Web Application
- Spring MVC
- Spring Security
- Spring Data JPA
- JSP
- Maven
- MySQL
- RabbitMQ
- Memcache
┌─────┐
│nginx│
└─────┘
|↑
|| _______┌─────┐
|| //-----→│mysql│←-----
↓| ↓| └─────┘----||
┌─────────────┐ |↑ ||
│tomcat_server│ || ||
└─────────────┘ ↓| ||
|↑ ┌────────┐ ||
|| │memcache│ ||
|| └────────┘ ||
↓| ↑| ||
┌────────┐ // ||
│rabbitmq│____// ||
└────────┘←---- //
|↑ //
||___________________//
----------------------
- EC2 Instances : VM for Tomcat, RabbitMQ, Memcache and MySQL.
- ELB (Load Balancer) : (Replacing nginx with ELB)
- Autoscaling : Autoscale Tomcat server.
- S3/EFS Storage : Shared storage.
- Amaon Certifcate Manager : Amazon certificate manager for SSL on load balancer.
- Route 53 : Assign DNS to the load Balancer.
Security Group
Security Group |---------------------| ┌───────────┐
|---------| | Autoscaling Group |←----│ S3 Bucket │
| ┌─────┐ | | ┌─────────────────┐ | └───────────┘
| │ ELB │ |----→ | │ Tomcat Instance │ | ┌───────────┐
| └─────┘ | | └─────────────────┘ |←----│Route53 DNS│
|---------| |---------------------| └───────────┘
|
|
↓
|-------------------------------------|
| ---------→┌──────────────┐|
| ↓ │mysql instance│|
| ┌─────────────────┐ └──────────────┘|
| │rabbitmq instance│ ↑ |
| └─────────────────┘ | |
| ↑ ↓ |
| | ┌──────────────────┐ |
| |----→│memcache instrance│ |
| └──────────────────┘ |
|-------------------------------------|
Security Group
- Create 3 Security Groups
- Instanciate 4 ec2 vms
- Generate SSL Certicate and Validate the Domain
- Create Private Hosted Zone for thress backend servers
- Create iam role with s3 access
- Build the artifact and deploy it on the application server
- Setup Load Balancer and redirect the public load balancer dns to custom domain
- Setup Autoscaling group for application server