Performance

Performance is very important to us. We make sure that your website will never be delayed.

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

The script and personalization data

Our snippet loads the required script and personalized data asynchronously, so it doesn’t block your web page. At the same time, this loading is heavily optimized to make sure all assets will be there when your website is done. Over 99.8% of all our customer websites do not show any delay, simply because the load time of the page is longer than our snippet needs to do its thing.

Why is it so fast? Well, for example, we start replacing personalized elements while the existing page is still loading. So, we don’t wait until it is finished. We can do this because we only store the smallest pieces of data: the personalized “delta”. It means that we only store the difference between your original page and the personalized version. This could be just a few words or an image, and smaller data is faster.

The technology that we use for that is very similar to for example Google Docs, where two people can work on a single document at the same time. They see each other’s changes as they type… but that is not really true. Technically, Google sends the small “deltas” over the line very quickly, so it looks like it is live. We do the same. And it is super fast.

For our smart add-ons, it’s even better. Our bars, overlays and side boxes don’t need to wait for your website to be ready at all. Our widgets are entirely asynchronous and non-blocking. Your website will show with its normal speed and the add-ons will appear once your website is ready.

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.