Magento on AWS
Quick Start Reference Deployment Guide

Design Considerations

Magento is a robust e-commerce platform that can be deployed with a variety of options, depending on your needs. This Quick Start provides a great starting point for building your e-commerce solution rapidly with Magento on the AWS Cloud. The following sections discuss design considerations for large-scale deployments and options for optimizing performance.

Amazon RDS for MySQL

Amazon RDS for MySQL deployments are preconfigured with a set of parameters and settings appropriate for the DB instance class you choose. Amazon RDS supports automatic software patching, database backups, backup storage for a user-defined retention period, and point-in-time recovery.

Amazon RDS supports three types of storage: Magnetic, General Purpose (SSD), and Provisioned IOPS (SSD). General Purpose (SSD) storage delivers a consistent baseline of 3 IOPS per provisioned GiB and provides the ability to burst up to 3,000 IOPS. To achieve a higher level of performance, consider using Provisioned IOPS (SSD) to provision from 1,000 IOPS up to 30,000 IOPS per DB instance. (Maximum realized IOPS may be lower.) You can provision up to 3 TiB storage and 30,000 IOPS per database instance. We recommend using Magnetic storage for small database workloads where data is accessed less frequently. Note that you can convert from standard storage to Provisioned IOPS storage on a running cluster. (There is a short availability impact on the servers.)

To enhance availability and reliability for production workloads, you should use the Multi-AZ deployment option. This provides an automated failover from the primary database to a synchronously replicated secondary database that is running in a different Availability Zone. This option also enables you to scale out beyond the capacity of a single database for read-heavy database workloads.

Amazon EC2 Web Server Instances

The deployment installs NGINX on EC2 instances running Amazon Linux x86-64. Elastic Load Balancing is used to automatically distribute the website load across these instances. In addition, all the instances are launched in an Auto Scaling group that dynamically manages the Amazon EC2 fleet. The deployment sets low and high CPU utilization thresholds to automatically scale the number of Amazon EC2 instances up or down depending on load. Default policy adds new instances when the CPU load exceeds 90% for 10 minutes, and removes instances when the CPU load drops below 70% for 10 minutes.

You can specify the maximum number of instances in the Auto Scaling group, and Auto Scaling ensures that your group never goes above this size. You can also specify the desired capacity, either when you create the group or at any time thereafter, and Auto Scaling will ensure that your group has the desired number of instances. These options are configurable during Quick Start launch.

The Quick Start supports a variety of EC2 instance types. We recommend that you benchmark the cluster to make sure you achieve the level of performance you need before starting a production deployment. For high availability, we recommend using at least two web server instances in different Availability Zones.

Amazon EFS

When you deploy Magento with this Quick Start, you can use the Magento archive (tar file) with sample Magento data. (For details, see the Download section of the Magento website.) If you choose this option, the common media assets derived from the samples are stored in Amazon EFS.

Amazon EFS is a file storage service with a simple interface that enables you to create and configure file systems quickly and easily. Multiple EC2 instances can access an Amazon EFS file system at the same time, providing a common data source for workloads and applications running on more than one instance.

Amazon ElastiCache

Amazon ElastiCache is a web service that helps you deploy and operate an in-memory cache in the AWS Cloud. This Quick Start automatically deploys an ElastiCache cluster using the Redis caching engine. ElastiCache reduces the operational overhead involved in deploying a distributed caching environment, and provides a way to improve application load times. For more information, see the Amazon ElastiCache documentation.