System design case studies
How real companies build and scale their systems. Read an in-depth write-up, filter hundreds of engineering case studies, or open a similar design in the Builder.
In-depth write-ups
Each has an architecture diagram, the key components, scaling challenges and trade-offs, videos to watch and reading.
Architecture at a glance
- Service mesh of APIs
- Dynamo / DynamoDB
- SQS / SNS
- Cart & checkout
Architecture at a glance
- Application servers
- Sharded relational database
- Cache tier
- Media storage and CDN
Instagram
A photo and video feed that stays fast as the user base grows by orders of magnitude.
4 components3 challenges
Architecture at a glance
- Edge gateway (Zuul)
- Open Connect CDN
- Microservices
- Cassandra / EVCache
- +1 more
Netflix
Streaming to hundreds of millions of devices, built to survive failure.
5 components3 challenges
Architecture at a glance
- Streaming and CDN layer
- Metadata and catalogue services
- Event pipeline
- Recommendation platform
Spotify
Instant playback and personalised discovery for a global catalogue of audio.
4 components3 challenges
Architecture at a glance
- Dispatch service
- Location pipeline
- Schemaless / Docstore
- Kafka
- +1 more
Architecture at a glance
- Chat servers
- Message queue / store
- Presence service
- Media storage + CDN
Architecture at a glance
- Upload service
- Transcoding workers
- Metadata DB (Vitess)
- CDN / edge caches
- +1 more
439 engineering case studies
Write-ups from the companies themselves, with credit. Pick a company, or use the filters for topic, design area, difficulty and creator.
14 resources
Basic Architecture of Slack
Written with contributions from the Shared Channels Team. Slack was originally built to be the collaboration hub for the work within your company. As the network of companies using Slack for internal work grew, we saw the value of allowi…
Case StudiesIntermediateRead hereBy Slack engineers · Slack
Continuous Load Testing at Slack
Building load test infrastructure is tricky and poses many questions. How can we identify performance regressions in newly deployed builds, given the overhead of spinning up test clients? To gather the most representative results, should…
Case StudiesIntermediateRead hereBy Slack engineers · Slack
Data Wrangling at Slack
For a company like Slack that strives to be as data-driven as possible, understanding how our users use our product is essential. The Data Engineering team at Slack works to provide an ecosystem to help people in the company quickly and …
Case StudiesIntermediateRead hereBy Slack engineers · Slack
Enterprise Key Management at Slack
Over the years, customers have asked us for stricter control over and visibility into their data in Slack, all while maintaining the product’s most essential features, such as link unfurling, mentions, notifications, and search. We talke…
Case StudiesIntermediateRead hereBy Slack engineers · Slack
Flannel: An Application-Level Edge Cache to Make Slack Scale
Why Slack put a cache close to users to avoid loading all workspace data at startup, and how it keeps it fresh.
Case StudiesAdvancedRead hereBy Slack Engineering · Slack
Real-time Messaging
How Slack delivers real-time messages to many clients through gateway servers and a messaging pipeline.
Case StudiesIntermediateRead hereBy Slack Engineering · Slack
Reducing Memory Footprint at Slack
Our desktop app is the most widely used and most capable Slack client that we offer. For many of our customers, it is one of just a few apps they keep open on their computer throughout the work day. It allows them to communicate and work…
Case StudiesIntermediateRead hereBy Slack engineers · Slack
Scaling Job Queue with Redis at Slack
Slack uses a job queue system for business logic that is too time-consuming to run in the context of a web request. This system is a critical component of our architecture, used for every Slack message post, push notification, URL unfurl…
Case StudiesIntermediateRead hereBy Slack engineers · Slack
Scaling Slack - Bing Wei, Software Engineer (Infrastructure) at Slack
Bing Wei examines the limitations that Slack's backend ran into and how they overcame them to scale from supporting small teams to serving large organizations of hundreds and thousands of users. She tells stories about the edge cache ser…
Case StudiesIntermediateBy Slack engineers · Slack
Scaling Slack's Job Queue
How Slack moved from a Redis-only job queue to one buffered with Kafka to survive spikes.
Case StudiesAdvancedRead hereBy Slack Engineering · Slack
Search at Slack
On average, 20% of a knowledge worker’s day is spent looking for the information they need to get their work done. If you think about a typical work week, that means an entire day is dedicated to this task! To help our users find more ti…
Case StudiesIntermediateRead hereBy Slack engineers · Slack
Security Development Lifecycle at Slack
For development teams, process can often be antithetical to speed. Ease of deployment and security tend to have an inverse relationship, with some resentment for the security team occasionally mixed in. You may have seen the following tw…
Case StudiesIntermediateRead hereBy Slack engineers · Slack
Service Workers at Slack
We recently rolled out a new version of Slack on the desktop, and one of its headlining features is a faster boot time. In this post, we’ll take a look back at our quest to get Slack running quickly, so you can get to work. The rewrite b…
Case StudiesIntermediateRead hereBy Slack engineers · Slack
Taking PHP Seriously
Slack uses PHP for most of its server-side application logic, which is an unusual choice these days. Why did we choose to build a new project in this language? Should you? Most programmers who have only casually used PHP know two things …
Case StudiesIntermediateRead hereBy Slack engineers · Slack