WordPress AWS Hosting – Migrating a High-Performance & High-Traffic WordPress Site to AWS
If you’ve been running your site on WordPress for a while and have done things right, you might have a high-performance and high-traffic website on your hands. When you’re looking to migrate to Amazon Web Services, that could mean a potential headache. Migrating a large site with a lot of content and movement might seem daunting, but there’s a right way to go about it. Learn about scaling WordPress to AWS here!
The idea behind this post is showcasing how to identify the layers and services you’ll need to run your high traffic WP site properly.
A Few Essential IT Concepts
Let’s delve a little into a few critical IT definitions to understand what we’ll be doing.
- High Availability. In the world of information technology, high availability relates to a system that can operate well, on a previously agreed level of operational performance, for a long time. To fulfill the standards above, the system must be free of interruptions and disruptions for a higher-than-average time. High availability also relates to systems with redundant components, an infrastructure that AWS makes much more comfortable.
- Scalability. It pertains to a system’s ability to automatically increase or decrease its sources depending on the level of user demand. Several AWS Resources provide scalability, namely ELB, RDS, S3, and EC2.
- Distributed Services / Loose Coupling. An approach in which different components within a system are interconnected to the point of loosely depending on each other to function correctly. We perform loose coupling to have dedicated hosts for a single service, and also to leverage loads.
This is what the ideal, highly scalable WordPress architecture should look like:
Amazon Web Services
What exactly are the Amazon Web Services, and what do they do?
Virtual Private Cloud
VPC allows enterprise customers to have a private network to place their cloud computing sources. Nobody outside the enterprise in question has access to this cloud.
Not unlike a website’s server, a public subnet is a subnet to place the resources we’re interested in making public. It’s associated with a route table, which in turn leads to an Internet gateway, thus connecting the VPC to the broader web.
Contrary to the public subnet, the private one is the place to deploy all the resources we want to be hidden from outsiders. For our current architecture, we’ll place the database on this application.
This content delivery network is dedicated to sending content faster to end-users. This is done through a global network of proxy servers that cache heavier content, such as videos and other media. By using CloudFront, users will receive the multimedia content on WordPress through the closest edge location available, in turn making the experience quicker.
S3 Or Simple Storage Service
S3 works alongside CloudFront to make the end product faster for users. This storage solution is where WordPress will get its content whenever it scales, whether it’s up or down. It’s the very scalable structure that Amazon uses on its global network.
EC2 or Elastic Compute Cloud
This AWS is focused on acquiring extra computing power by allowing companies and other users to rent “virtual computers” to run their respective applications.
RDS & Multi A-Z
An entirely free service managed by AWS, it enhances the durability and availability of Database Instances. In all, this is where we’ll host the WordPress Database. Enabling the Multi-Availability Zone feature helps a lot with availability. Plus, this service has an excellent feature for scalability: RDS instances can replicate among themselves.
One of the most basic services on the AWS arsenal, it’s a Domain Name System (DNS) of a very scalable and available nature. It allows users and companies to manage traffic and upcoming all-around requests.
Also called Elastic Load Balancing, this application distributes traffic load among the different available instances. It allows handling the scalable load across different availability zones or directly handling traffic within a single availability zone.
This application will be the very foundation of our scalable and highly available WordPress site. Auto-scaling automatically adjusts the site’s capacity to become more efficient, namely steady performance at a low cost. Thanks to this, the outside public will receive the least possible amount of instances, and whenever something goes wrong, auto-scaling will replace it with a healthy instance.
Cloudwatch is the AWS monitoring service, and it’ll track predefined or default metrics, including networking, and memory usage.
EFS or Elastic File System
Running on the AWS public cloud, it’s a cloud storage service dedicated to applications and workloads within the system. It replicates content faster, yes, but we might not use it that much when solely sharing WordPress files.
How AWS Work Towards Creating a Highly Available Site
Once everything is set in place, this is what your traffic flow will look:
When setting up the services above, your site will be able to serve millions of visitors, all of whom will get the same quality. Whether you’re experiencing a surge in traffic or a particularly low moment, the site will be able to meet your needs. Here’s how it will look when your traffic increases:
Meanwhile, your AWS resources will look like this:
The Actual Site Architecture
Now that you’re familiar with the AWS functions above, here’s what you should be crafting for the optimal site architecture:
- CDN or Content Delivery Network. Makes your content faster by spreading it around the world and hosting it on a network of servers.
- Memory Performance & CPU. We’ll be able to scale, either up or down, depending on the memory metrics and CPU. Traffic won’t cause overload due to lack of memory, leading to 500 errors, because the response time will remain the same between the different servers.
- WordPress Server Caching. Also known as server side-caching. Whenever a website visitor requests a page, that request goes to the database to search the page’s information. Caching creates a temporary file instead of taking the extra time to process on the database, in turn making things faster.
- Instance Types. Choose the right AWS instance type for the workload your site manages. You’ll also need to select the appropriate number for resources for it to work smoothly.
Now you’ve built the proper architecture for a scalable WordPress site on Amazon Web Services! Here are a few good practices:
- Don’t get caught by surprise, and configure Cloudwatch to notify you if anything goes wrong. Also enable the Billing Alarm, which will keep you from extra spending.
- If you’re planning on sticking with AWS for a while, Reserved Instances can save you up to 30%.
- Track all changes by using a Version control system.
- Get even better performance by using a plugin dedicated to the database, page caching, and query.
- S3 and CloudFront are your tickets towards fast content delivery.
- Use a dedicated Aurora RDS to increase RDS performance.
- Back up! Sometimes, things beyond our control happen. It’s always essential to have a reliable backup strategy in place, and also a proper disaster recovery solution. One thing that makes AWS stand out is that its services can be very redundant among themselves, which makes backup much more manageable. Amazon also provides solutions for this problem, from different fronts.
While it may sound a little complicated, Amazon Web Services makes it very easy to build the proper architecture to function with WordPress. It’s just a matter of knowing what you’re crafting.
At Bright Vessel, we’ve worked with AWS for a long time, and we have the tools and a team of experts to help you sail into this new adventure. Contact us for more information.