"Loony" Architecture on AWS

Submitted by loonyadmin on Sun, 04/30/2017 - 10:29

Within the last weeks my sandbox got bigger within AWS. Not because this website grew so much, but because I migrated this website to a recommanded, highly available infrastrature design within AWS.  

So, now there is a database instance within RDS which handles all the data and I don't have to handle it within my small webserver instances. This RDS instance is deployed as Multi-AZ instance so the chance that it fails completely is minimal. 

Right before the webserver layer there is an Application Load Balancer which balances the traffic between the two webserver instances.  I use only two because there are only 2 AZs in eu-central-1 (Frankfurt) and all webserver instances have to have an Elastic IP in my architecture, due to the fact that they have to be able to send mail. This is also the reason why I do not use autoscaling for this website. But for security reasons the two webservers are only visible for the Load Balancer such that all traffic has to go through the Load Balancer before it hits the webservers.

I also have a Cloudfront distribution for this website. Which is a bit of a hazzard for Drupal, due to the fact that Drupal puts keys onto the CSS file names and if the html file tells the browser to load a CSS file that does not exist on the webserver due to load balancing then there is a problem which results in a glitch in the browser.

This problem would be easy to solve with EFS (Elastic File System). But EFS does not exist in eu-central-1, yet and they do not know, yet, when it will be available there. But AWS would like to roll out EFS in all regions. So some time in the future I'll be able to solve sychronization problems with EFS. 

There is also the solution to serve some file from S3. But I don't like that idea, because it makes updates of the webserver software much more complicated and it would also result in the use of a Drupal module, which is not really easy to install.  

So for the moment I always deploy new webservers, when there is a change in my website. This way I keep the two webservers synchronized. This is not ideal and not automated but manageable. Due to the fact that I cannot  use autoscaling due to the Elastic IP need, it's ok like this.

For a short time I was thinking about migrating my whole architecture to eu-west-1 (Dublin, Ireland), for being able to use Amazon Aurora and EFS. But I won't do it. First of all, because Aurora is not the kind of database I need. It would be like shooting with canons on little birds. I also do not understand when and how I get charged for the operations Aurora does in the backend. Last but not least EFS would be nice to have, but for the time being I'm able to handle the sychronization manually and this website does not have to have a public registration possibility for the moment.

So in conclusion I'm happy with my architecture as it is! And as always ...

Stay loony, stay happy!