-2

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?

urosz
  • 1
  • 1

1 Answers1

1

Tough to know without knowing much about your use case, but a few things jump out at me:

  • You say you will be serving 'a lot' of users, but are using a combination of t2.nanos, t2.micros and t2.smalls - this may become a bottle-neck. I think of t2's as good for test/dev and very small production loads. Not for serving 'lots of users' - this may turn into a bottleneck quickly.
  • Consider using an S3 bucket for your static assets origin instead of a t2.nano instance, cheaper, easier and will scale better if needed; there is no downside to this.
E.J. Brennan
  • 45,870
  • 7
  • 88
  • 116
  • Additional explanations and comments on your thoughts: - t2.nano will be used only for admin dashboard, maximum 10 users - another t2.nano is just as a origin for our CDN77 cdn source. 99,99% of contents will be cached, so consider it safe - Database t2.micro will only be used for Admins to operate simple database. End-users will all be served from Read-replicas – urosz Apr 26 '17 at 10:29
  • What instance types would you recommend then instead of T2 ? – urosz Apr 26 '17 at 11:54
  • There is nothing wrong with starting with T2's - but you asked where the bottlenecks might be, and based on the little I know about your requirements, that is my guess as to where you will first have performance issues. So start with the T2's and see if they work - if you end up needing to upgrade, try bigger T2 instances and then I would probably move to the M6 instances - they have a lot more power for general purpose needs. – E.J. Brennan Apr 26 '17 at 12:24
  • Thanks a lot. What about some other aspects? Are we missing something important? It's first time for us dealing with AWS. – urosz Apr 26 '17 at 13:05