What is EC2, and why do we use it?
EC2 or the Amazon Elastic Compute Cloud allows users to rent virtual servers hosted in Amazon’s network architecture. As a networking architecture, it is a powerful force multiplier for systems administrators who need the ability to scale things up or down with short notice. For instance, just a handful of commands in the EC2 environment allow you to add a new server, or quadruple the processing capacity of an existing server, in just a matter of minutes.
It is especially appealing to Axis41, as an agency that offers a full suite of services strategically defining, creatively designing and intelligently deploying content for our customers. It allows us to focus core competency on the aspects of the customer’s needs that have to be tailor-made, and leave the actual physical administration of servers to someone else.
How do we use EC2 with AEM?
Our architecture focuses on a few things:
- The site should be available to end users with as near to 100 percent uptime as we can reasonably manage.
- We should offer the shortest possible window of time from first request through completed response.
- The authoring environment should be reasonably responsive during peak periods of content creation.
- In the event of catastrophic failure, we should have a recovery plan in place that focuses on getting the content back in front of users as quickly as possible, without sacrificing the recoverability of the master data.
Adobe’s ideal deployment scenario for customers involves:
- Two author instances running on separate EC2 “m1.large” instances
- Two publish instances running on separate EC2 “m1.large” instances
- Two dispatchers running on separate EC2 “EBS-Optimized” instances
- An Elastic Load Balancer
So what do those terms mean, and why this architecture?
Amazon offers a wide range of “instance types,” each of them optimized for specific usage scenarios. The “m1.large” instance type is the virtual equivalent of a dual CPU server with about 8GB of RAM and decent network performance. We like this option because AEM can be a bit of a memory hog, but it also needs reliable disk performance for the CRX-backed datastore. Meanwhile, the dispatchers don’t require very much processing power, but their I/O throughput needs are much more sensitive than those of the CRX. Therefore, we recommend this “EBS-Optimized instance” option, which allows us dedicated throughput between the EC2 and the EBS instance (which is where the data actually ends up being stored).
The Elastic Load Balancer is a special EC2 offering you can use to distribute incoming traffic across your Amazon EC2 instances, while maintaining the ability to support “sticky user sessions” and SSL termination two of the largest issues people typically face when trying to do their own custom load balancing solutions.
As we mentioned earlier, our focuses are availability, reliability, recoverability and performance. This architecture gives us a lot of flexible options we can tune and optimize to handle each customer’s specific workloads, and it also prevents us from having a single point of failure outside of the EC2 service as a whole. For the rare customer who is willing to accept a dramatic increase in price to remove that single point of failure, there are other options we can bring to the table as well.
Is there anything else about EC2 you should know?
Because we don’t have to focus on the physical servers and networking of these instances, we can spend our resources customizing the working environments to the specific needs of AEM, and to the requirements of each individual customer. In a future blog post, we will cover backup and recovery techniques, and how we use EC2 to provide for some of AEM’s unique needs in those areas.
One of the things we’re really excited about at Axis41 is Amazon’s new Virtual Private Cloud service. We are investigating how we can best utilize this new offering from Amazon to deliver a great experience to our customers and their end users.
The EC2 environment in conjunction with AEM is an excellent resource to Axis41 as we continue to offer several robust services that focus on custom-made solutions for customers. Through this EC2/AEM architecture, we continue to focus on reliability, availability, recoverability and performance as we look toward future technologies.