In our company we are planning to launch our Web-based platform through the AWS. I've prepared architecture design and I would kindly ask you to provide feedback on how to improve it. Few notes are..
DATABASE
- We go with MariaDB (master + slave on other AZ)
- Master DB is only accessable for Admins to write/delete/read
- End-users will all read from read replicas (4 replicas accross 2 AZ)
- Master = T2.micro
- Read replicas = T2.small
ADMIN
- Admin panel will be seperated app, on seperate subdomain and SSL-enabled
- Admin panel is the only one who is modifying master RDS Number of users: max 10 :D
- Web server: Lighttpd / Apache (comment?)
- Machine: T2.nano (no need for more for 10 users, right?)
FRONT (END-USERS)
- Front will be serving A LOT of end-users (up to 10mio)
- EC2 machines will be T2.small
- Web server: Lighttpd / Apache (comment?)
- We have lots of users but every user is only 1 PHP request (1 php script + select on RDS Read Replica)
- All other files are static and will be served from our CDN (Origin will be EC2 T2.nano, because there's really low low traffic, just in order to cache new files to CDN)
- Of course EC2 machines for front will be autoscalling. 2 different AZ to be chosen. (is this 1 autoscale group in this case or 2 groups?)
BACKUP and SAFETY
- Master DB will automatically backup
- We do automated snapshotting of Admin EC2 & CDN Origin Webserver
- No need for backuping of Frontent EC2 Autoscale instances, all code will automatically be deployed with CodeDeploy from Github
Here's the current arhitecture design diagram.
Please help and provide some feedbacks. What are the bottlenecks? Did we miss something important?