A short read — https://shopify.engineering/mobius-shopify-unified-edge
What is the Problem?
- The traffic could be ingress from multiple sources.
- Edge could support a few types of applications only.
- It was hard to onboard a new service to the edge.
- Observability of overall traffic was missing or incomplete.
What’s an Edge?
The edge is a boundary between external traffic and internal cluster
The design uses separation of concerns in three buckets:
- Edge Load balancers with L7 routing
- A dispatcher for URL to application backend service
- Application backend
Edge Load balancers with L7 routing
The Edge Load Balance (Mobius) has common knowledge of valid URLs and forwarding routes. The Kubernetes API connects component is a shared knowledge of routes between SFE and Mobius.
A dispatcher for URL to application backend service
Shopify Front End. It is a set of nginx servers paired with Lua scripts to program routes for a URL.
What does the design bring?
- The edge network is standard and unified. It is easy to host a new service from the edge.
- Edge can quickly handle DDoS traffic. Any request arriving at any edge is safely validated and forwarded to a least-latency cluster’s SFE.