WordPress is the most popular Content Management System for websites. In January 2015, WordPress was used by more than 23.3% of the top 10 million websites (wikipedia).
Unfortunately, when you download WordPress, it’s not designed to run properly on Cloud providers because it never adopted newer methodologies. WordPress doesn’t scale easily, it lacks native support for a Content Distribution Network, and upgrades aren’t always seamless and often involve downtime.
Deploy like a boss
Today, you shouldn’t be deploying software on-premise or on the cloud that isn’t following a methodology to avoid software erosion. Luckily, someone in the community already has redesigned WordPress, to enable newer development tools, easier deployment and an also an improved folder structure. It’s called bedrock and can be found on Github.
Unfortunately, it still isn’t stateless and it lacks native support for a Content Distribution network. Using this install, we would still have problems to horizontally scale our WordPress install. There is definitely room for improvement.
At in4it, we created a DevOps platform to easily provision services in the cloud. The next step is to add popular applications that can be deployed in a few clicks, which also scale out of the box, are reliable and resilient.
We therefore forked bedrock and made a few changes to make WordPress stateless, including support for a CDN. When stateless, WordPress can be deployed on 1 or more instances at the same time. The result can be found on our github. The architecture diagram now looks like this:
You can also deploy this scalable version of WordPress that includes a CDN in a few steps through our DevOps Platform. Check the video below to see how we deploy WordPress + S3 + CloudFront + Stateless:
This version of WordPress will allow you to:
- Easily deploy WordPress through our platform or through GIT
- Horizontally scale WordPress when traffic is high
- Enable Green/Blue Deployments
- Roll-back code changes
- CDN: S3 and CloudFront support
- PHP Composite support allows you to do security upgrades by redeploying the app
- Better resiliency: instances can be relaunched when health check fails
- Improved Disaster Recovery: replicate database, then just redeploy application layer for DR
Did you like this article? Tell us what you think, we want to hear your feedback and suggestions.