We’ve said it before and we’ll say it again: fast page load speed is an absolute must for any website or online business. Why? The speed of a website’s page loads has a direct, effective, measurable impact on both the amount of revenue and the number of visitors that a site generates. On top of that, site visitors just don’t have patience for slow load times. Up to 47% of consumers expect a web page to load in 2 seconds or less, and lost seconds can have a serious impact on conversions and ROI.
One way to keep page load time down - even under heavy traffic - is to use multiple application nodes. This means that you have multiple web servers that deliver your site, and customers are directed to the server with the lowest traffic (via a load balancer) so that none of your servers get overloaded. This allows you to maintain a fast page load speed no matter what.
An even better (and more challenging) way to maintain page load speed is by using an auto-scaling Magento deployment. This means that, as traffic increases, more web servers are automatically added to your cluster to prevent any one server from being inundated with traffic.
One of the challenges of deploying any multi-node Magento is figuring out where to store your media so that it is accessible from all of your nodes. This is important because you need to make sure that all of the servers have key data like product images and banners - otherwise, customers will get 404s and be unable to view the images. It will appear as though your site is down or nonfunctioning, and that is never good for business.
Amazon web services (AWS) offers a couple excellent options for this, each of which has its pros and cons: S3 Cloud Storage or their Elastic File System (EFS).
S3 Cloud Storage
- Low Cost
- Can be used as Cloudfront Origin
- Available methods to attach to an EC2 instance are not great
- Copies of many small items (like product images) are slow
One of the biggest advantages to S3 is the fact that it can be used as an origin for Amazon’s Cloudfront CDN, which is a very convenient way to easily offload media requests from your EC2 web server, which is the main server that delivers the website to customers. The downsides to S3 are that the best available method to connect it to your EC2 instances is still fairly weak. It gets the job done, but operations like media generation (which happens quite a bit after a cache clear) can be quite slow. In addition, on a site with beautiful high-resolution product images, Magento generates a smaller image to be used as a thumbnail. This can decrease page load speed substantially, causing product page loads slower than 45 seconds.
Elastic File System (EFS)
- Can utilize NFSv4.1 for mounting
- Requires at least 100GB of data to maximize performance
Elastic File System storage does not have the same drawbacks as S3 does. It can, out of the box, utilize NFSv4.1 protocol for mounting - aka connecting the storage to the web server - and it requires no extra software installed on the web nodes. On top of that, it is much faster and more reliable than the available methods for mounting S3. The biggest drawback with EFS is the fact that, to maximize performance, you need to have about 100GB of data stored in the system. This can make it much pricier than S3. That said, it tends to be a much better fit for Magento applications, as it completes tasks like image generation and file copies much more quickly than S3.
On the other hand, if a site has a smaller number of products - and the images do not need to be high-resolution - S3 may make more sense as a solution. Further, if your hosting budget is very tight, there are steps that you can take to make S3 a usable solution.
Overall, both methods work well and are very reliable. Figure out which features fit your needs and your online store in order to determine which solution is best for you.