How Unless handles global scalability

Unless is geographically distributed across 69 edge locations, to guarantee a consistent performance rate across the globe.

At Unless, global scalability is handled in the following way.

The script and personalization data

The script and personalizations are directly served as flat files from Amazon’s file storage service S3, cached and served from the Cloudfront CDN. CloudFront uses a global network of 150 Points of Presence (139 Edge Locations and 11 Regional Edge Caches) in 65 cities across 29 countries. That’s pretty much global, super fast and almost impossible to break (because there is no running code involved).

The API

The dynamic part of the system that returns audience memberships is based on the AWS API Gateway. All code is executed using serverless Lambda functions (which execute in parallel automatically for each request). The system is currently entirely duplicated across three regions: Europe, US East and US West.

The database

All live data is stored in AWS DynamoDb (the giant non-relational database service that we share with Twitter, Netflix and Amazon itself). DynamoDB is configured to use Global Tables in the same regions as the system itself, as a multi-region, multi-master database.

This gives us a very consistent performance across the world.

Extending the system even further

It would be easy to extend our current API endpoints with duplicates in South America, Canada, China or other parts of Asia as well, but so far this hasn’t been necessary. Let us know if you think otherwise.

A note on privacy

Only the data that is required to serve personalizations is duplicated across the world. The Redshift cluster for data warehousing - that contains historical data for analysis and dashboard purposes - is housed in Europe only, to take into account privacy laws.