Shopify's Architecture by Simon Eskildsen

João Vieira
A dive into Shopify’s multi-tenant architecture that allows them to failover between regions with zero downtime, move shops between shards, minimize the blast radius of catastrophes, as well as throttling and serving cache hits out of the load-balancers.

Some notes I took while watching this great talk:

Lots of customers with their own domains pointing to their IPs:

They are happy to use nginx with OpenResty and have developed some lua scripts to solve problems right at the loadbalancer level:

A group of shops are in a pod, which is composed by mysql, redis, memcached and cron runner. Pods are isolated from one another and are a stateful layer. The application workers are shared among pods and are stateless. Pod balancer moves bigger shops to less crowded pods to keep the load and size balanced among pods.

Application level sharding; sharded by the shopId key. Every table has a shopId key.

They are using containers and kubernetes in production.