Country

United Kingdom

Description

An award winning team of directors, artists and developers No Ghost who specialise in immersive media. Our client was hosting a static website using CloudFront for caching and needed to implement a solution to serve different content to mobile and desktop devices. They had a CloudFront distribution setup with the SSL certs and an S3 origin currently just serving up a single version of the website.

The web application served the collaboration of Fred Perry with Gorillaz.

Challenge

The client needed the deployment of an Augmented Reality SPA with assets hosted on the AWS S3 bucket. The tricky part was about custom logic the app required on the infrastructure level to flexibly serve the assets depending on a device and supported features. The amount of data the app had to load was quite massive, so the assets had to be filtered and compressed on the fly – and then cached for a particular device type.

Even the custom processing rules of CloudFront weren’t enough to meet all these requirements, so the only option left was to configure a web server for all this filtering and processing. Not the most challenging setup unless you’re expecting a minimum of 50,000 concurrent visitors in the first hours.

And they were in a hurry: the event and links were going to be revealed in 24 hours.

Solution

Throwing money at the beefiest available AWS instances was out of the question: we’re here to help our clients, not lead them to bankruptcy. So we started with a machine just powerful enough to handle the connections and perform initial checks – then tuned Nginx on it to make it squeeze every bit of performance out of the server aiming at reaching 65k connections on a single machine.

What’s left was to configure DNS and CloudFront rules to offload the static data. This way, Nginx only processed initial requests from a visitor and then provided them a specific set of pages and assets to fetch via CloudFront.

Once the setup was complete through several iterations of testing with No Ghost team, we created a snapshot of the machine for further use with the scaling. To ensure the developers could deploy updates and hotfixes any time, we created a CD pipeline for the app repository. Then we documented the details of our configuration and approach and shared them with the client.

Just in time for the launch of the event. Even the tidal wave of 100,000 visitors of day one had smooth WebAR experience, thanks to the cache we managed to fill up in advance. And the website is still there working as good as ever:

Gorillaz X Fred Perry

 

#АWS #Nginx #PerformanceTuning #HighLoad #CICD #WebAR