Magento is quickly becoming the e-commerce site of choice for most online retailers. The flexibility as well as the extensibility have opened up a large amount of options in how we have deployed the service. I’m going to use this post as a reference of where we are as well as outline some of the plans moving forward. Currently our Magento site has roughly 6-7k SKUS with roughly 100-200 users daily. The challenge we have is the amount of product data, not necessarily the amount of user traffic. When we started testing with Magento we used a single Amazon EC2 instance. (I’m not going to describe that setup too much ) We noticed that the large size of the database was burdening the CPU to the point it was slow delivering the web requests via Apache. With the amount of records in the MySQL database, it was clear that we needed to have better solution to deliver that information. This leads us to our current design:
- We moved our MySQL database to an RDS instance. This gives us the opportunity to move a read replica across to another availability zone. Also, we are now automating the backup of our database with the built in RDS snapshots.
- Using a plug in from Free Lunch Labs we moved all of our static content out to Amazon Cloud Front. This dramatically increased load time for all of our product photography etc.
- Lastly we automated our EBS snapshots to S3. This gives us the capability to launch an instance in another availability zone if anything happens to the zone we are currently in.
There are several problems with this design still.
- This does not utilize scaling. This is important for several reason that I have outlined here.
- In the event of an outage in a single availability zone we do not have an automatic fail over plan. While the current setup will allow us to continue service in the event of a zone failure, it does not do so automatically.
So this leads me to the next design we will be transitioning to:
There are several notable differences in this case. 1. The Amazon DNS service Route 53 will allows us for future expansion into additional regions. 2. The Elastic Load Balancer will allow us to to scale across availability zones. Explained here 3. Similar to the previous design, this one will have an RDS hot spare so that in case of failure we will be able to fail over to the other availability zone I hope this helps briefly describe the process we have used to build out our e-commerce presence. I will continue to add to this post and update it as we accomplish these goals. Contact Me for some help with your Magento installation