WordPress (WP) is one of the most downloaded platforms (over 65 million times) and customers are not just using WP for their blogging needs but also as CMS. WordPress is used by over 14.7% of Alexa Internet's "top 1 million" websites and as of August 2011 WordPress powers 22% of all new websites
For Last few years AWS has emerged as one of the popular Cloud providers for hosting the WP platform. In this 4-part Architecture Series we are going to see how to build a Highly Available and scalable WP infrastructure in AWS in phases. Let us get into first architecture of this series:
Architecture 1: Single Server setup in AWS
This is the simplest architecture to be setup in AWS. No big Architecture Consultations are required for this setup. AWS provides some standard AMI’s to kick start this architecture quickly. Users with minimum Technical knowledge can get this started up and running on their own in AWS. It uses a single Linux EC2 instance and the entire WordPress (Mgmt + content node), Apache and MySQL are configured on the same Amazon EC2 instance. The EC2 instance can be placed in Single Availability zone in a Single AWS region. If this information is not provided, it creates the instance in default at USA-East region of AWS. Customers who are configuring this architecture should at least start with 64-bit Large instance Type (m1.large) in AWS. Also the IO performance is better in Large instance compared to its smaller counterparts. Since MySQL performs better with more memory, large instance would be better choice to start with. EBS Backed AMI’s are better compared to S3 backed for launching such EC2 instances because at least the data is safe in the EBS in case the Instance terminates. Periodic EBS Snapshot backups and MySQL Dumps can be taken and moved to S3 (this requires some programming effort). The EC2 instance can be enabled with Detailed CloudWatch monitoring in the AWS console. Cloudwatch monitoring can be combined with SNS for System alerts to Email. This architecture does not factor High Availability or Scalability needs. It is suitable for website serving few hundreds/thousands pages per day and not suitable for scenarios with heavy traffic serving millions of pages. Customers should be aware this architecture has single point of failure at all levels. In case of premature EC2 instance shutdown/crash, recovery might take from minutes to hours depending upon the complexity.
The running infra cost will be around 400 USD per month in AWS (24X7 and not including any licensed software) and may vary depending upon the Data transfer usage/EBS Storage.
Note: Since AWS is constantly reducing their prices, it is better to use their simple Calculator and find the latest price at the time of reading this article.
FAQ for Scalable WP architecture can be found here (Must read)
Architecting WordPress in AWS : Part 1 : Single Server Setup
Architecting WordPress in AWS : Part 2 : Multi tiered setup
Scaling WordPress in AWS to serve million page hits