Jamie Druce, Senior Web Developer
We’re Content Ignite, a native advertising platform based in Bournemouth, United Kingdom. Our mission is to connect buyers and sellers of native advertising in a single marketplace where they can bid on advertising opportunities. This fosters competition between advertisers in the marketplace, maximizing revenue for publishers.
Our company’s accelerated growth compelled us to scale and stabilize our platform, which led us to make the switch from our previous managed hosting provider to DigitalOcean in 2017. Since then, our hosting costs have decreased by over 90% and we’ve been managing an average of 500 requests per second. Because we’re running at only about 25% of our capacity, our platform can scale up quickly when necessary.
Prior to switching to DigitalOcean, we relied on a managed hosting service to oversee our web infrastructure. Under this arrangement, our server setup looked like this:
This architecture featured a load balancer at the top, distributing traffic between seven nodes, which would then send and receive data from one of our MySQL databases. Our development team used GitHub to store code, DeployHQ to automate deployments, and a cloud backup service to keep all of our data secure.
This setup, however, was not optimal:
As Content Ignite grew, so did our need for highly-scalable infrastructure, and we began searching for hosting alternatives. With the launch of Spaces object storage in 2017, we saw that DigitalOcean could handle Content Ignite’s hosting needs and began building a strategy to migrate over.
The biggest concern that our team had about switching to DigitalOcean was the need to move our databases, as it was difficult to estimate how much downtime we would face before actually starting the migration. Any amount of downtime would get in the way of our ability to track ad impressions, one of Content Ignite’s key services, so minimizing downtime was essential.
After reading through some of DigitalOcean’s Community tutorials and speaking with the Customer Support team, our team of developers switched our MySQL databases into primary and secondary replication and copied the original primary over to the secondary on DigitalOcean using rsync. They then pulled down the primary and put the secondary into primary mode to complete the migration. Thanks to the team’s due diligence for best practices, we experienced only a small amount of total downtime.
After completing the database migration, our developers revamped Content Ignite’s web infrastructure:
Function Memory Dedicated CPUs SSD Transfer DB Droplets Standard 8 GB 4 vCPUs 160 GB 5 TB GitLab Runner Droplet Standard 2 GB 1 vCPU 50 GB 2 TB Web Droplets Standard 16 GB 6 vCPUs 320 GB 6 TB MicroApp Droplet Flexible 2 GB 2 vCPUs 60 GB 3 TB
At the top is a load balancer that distributes traffic between web nodes which then send and receive data to one of three MySQL databases, each of which are hosted on their own Droplet. The load balancer distributes traffic between floating IP addresses which point to each of the web nodes, making it easier to change which Droplet is providing services at that IP address. This ensures a far greater level of redundancy: if one of the nodes fails for any reason, the others will be able to take on its workload easily.
Our engineers added a CDN stack in front of the object store which has custom domains pointing directly to the relevant Space. Within this setup, a CDN-served script on the client's site initiates a call to the primary nodes, which in turn process the request and fetch an ad. Thanks to the CDN, we can now load an entire ad in as few as 500ms (a speed increase of 80%), and serve cached files in as few as 20ms. We also moved some logo image files and all our CSS assets into the CDN, which produced a further 30% speed increase with latency dropping from 200ms down to 20ms.
Our engineers use DigitalOcean’s Droplet tagging feature to perform a number of tasks automatically, like creating new Droplets, adding them to clusters, and connecting them to our DigitalOcean Cloud Firewalls. Tagging also makes it easy for our developers to group hosts and quickly make changes to them.
Although a self-managed hosting infrastructure places all the system administration responsibilities squarely on engineering teams, it provides far greater flexibility to scale up in line with growth. Since moving to DigitalOcean, our setup is ultimately more capable than what we had before the migration, downtime has become a rarity, and our hosting costs have decreased by more than 90%. All in all, our team is very happy with our decision to migrate over to DigitalOcean, and we’re eager to continue to scale up our infrastructure as our business grows.
Contact our Customer Success team to get answers.