Optimising a charity's Drupal 7 website with AWS CloudFront
Delivering results with AWS cloud hosting
The Stroke Association is a UK-based charity that works to prevent stroke. Also, to offer support to everyone touched by stroke, fund research, and campaign for the rights of stroke survivors of all ages.
What they wanted
Stroke Association wanted to change the way their site usage was charged so it was scalable. They had a desire to pay for the bandwidth they actually used rather than upping the server size to the maximum load.
They also wanted caching and load balancing in place to make optimal use of the services they were using.
We have a strong history of supporting NGOs and charities leveraging the Drupal content management system, and we believed would make an excellent partner for The Stroke Association.
The tech we used
Amazon CloudFront is a developer-friendly content delivery network (CDN) service that securely and seamlessly delivers data, videos, apps, and APIs to customers worldwide with low latency and high transfer rates.
CloudFront combines the most sophisticated security features, such as field-level encryption and HTTPS protection, with AWS Shield, AWS Web Server Firewall, and Route 53 to defend against various threats, like network and application layer DDoS attacks. These networks co-exist at edge networking sites globally scaled and linked to the AWS network backbone, giving the customers a more stable, performant, and accessible experience.
Global Scaled Network for Fast Content Delivery
The CloudFront network has over 225 integrated points of presence (PoPs) that provide your end-users with ultra-low latency efficiency and high availability.
CloudFront automatically maps network conditions and routes traffic to the most performant AWS edge spot to service cached or dynamic content. CloudFront has a multi-tiered caching architecture by default, which improves cache width and provides origin security.
Security at the Edge
CloudFront holds the most advanced technology compliance certifications. As a result, both networks and applications are incredibly stable. For example, all CloudFront distributions are protected from network and transport layer DDoS attacks aimed at websites or applications.
Importantly for any local government body is that Amazon CloudFront offers cost-effective global content delivery. It provides customisable pricing options.
AWS EC2 AutoScaling
Amazon EC2 Auto Scaling ensures that the Stroke Association always has the correct number of Amazon EC2 instances available to handle their application's load. Auto Scaling groups are sets of EC2 instances. Amazon EC2 Auto Scaling will start or stop instances when demand for their application rises or falls by defining scaling policies. Thus meeting their need for a scalable solution
Solr is a highly efficient, scalable, and fault-tolerant search engine that includes distributed indexing, replication, and load-balanced querying, as well as automated failover and recovery, centralised configuration, and other features. Many of the world's biggest websites use Solr to control their search and navigation functionality.
Whilst ElasticSearch is the standard AWS service for Solr, for this specific case we chose to host a dedicated Solr service.
What we did and outcomes
We utilised our latest provisioning and deployment scripts - both of which are open source.
The ce-provision is a set of Ansible roles and wrapper scripts to configure remote (Debian) machines, and the ce-deploy is another set used to deploy applications.
The "stack" from this repo was installed on a "controller" server/runner, to be used in conjunction with a CI/CD tool (Jenkins, Gitlab, Travis, etc.). It allows the configuration for a given service to be easily customisable at will and stored in a git repository. When triggered from a deployment tool, the stack will clone the codebase and "play" a given deploy playbook from there.
As scalability was essential to the Stroke Association, we ensured we used the latest and most flexible options. Wherever possible, we empower our clients with as much flexibility as possible to manage their own systems, hence provisioning with our latest Ansible scripts.
We created three separate environments; each is now in its own autoscaling group. This is good for the Stroke Association as it’s essentially the gold standard of security. Now they have a dev (testing), stage and live environment with no connection to one another at all. They all run on entirely separate and independent network groups. Even databases are separated.
Now, they’re hosting multiple sites per cluster rather than paying per site, which is a massive win for saving costs.
They needed special access for their CRM team, which was somewhat awkward to set up. They needed access to the auto-scaling group to upload data to the website. So we organised this securely and efficiently.
Notably, this was all done on a Drupal 7 site. The Stroke Association are working on migrating to Drupal 8 one, and we’ll be supporting this upgrade, too.
We talked directly to AWS to help the Stroke Association to get the best value. Because we’re AWS Select Partners, we get the benefit of having expert project management on board. Plus, charities can enjoy a discount!
One way we drive down cost is by using AWS services wherever possible. For example, we utilised the RDS database service, so we don’t have to lump on management services. Similarly, we’ve got elasticache, which makes Drupal more performant as it moved the caching to a faster service.
Instead of putting it on a server, we consume it as a service, so there’s again no management fee.
All in all, we delivered a cost-effective, scalable service that meets their needs.