HomeLearn & Career › System Design Primer

System Design Primer

by donnemartin · donnemartin/system-design-primer

Learn to design large-scale systems; interview prep.

★ 357.7k stars241 projects ⑂ 0 forks0 open issues
241 projects
blog.twitter.comblog.twitter.com

Design a random ID generation system · blog.twitter.com github.com

code.google.comcode.google.com

Design Google docs · code.google.com neil.fraser.name

codecapsule.comcodecapsule.com

Design a key-value store like Redis · codecapsule.com allthingsdistributed.com

cs.ucsb.educs.ucsb.edu

Return the top k requests during a time interval · cs.ucsb.edu wpi.edu

erlang-factory.comerlang-factory.com

Design the Facebook chat function · erlang-factory.com facebook.com

facebook.comfacebook.com

Design the Facebook timeline function · facebook.com highscalability.com

facebook.comfacebook.com

Design a graph search function like Facebook's · facebook.com facebook.com facebook.com

figshare.comfigshare.com

Design a content delivery network like CloudFlare

highscalability.comhighscalability.com

Design a chat app like WhatsApp

highscalability.comhighscalability.com

Design a system that serves data from multiple data centers

highscalability.comhighscalability.com

Design a picture sharing system like Instagram · highscalability.com highscalability.com

Design an API rate limiter

hulu.comweb.archive.org

Design a recommendation system like Amazon's · hulu.com ijcai13.org

indieflashblog.comweb.archive.org

Design an online multiplayer card game · indieflashblog.com buildnewgames.com

Jane Streetyoutu.be

Design a Stock Exchange (like NASDAQ or Binance) · Jane Street Golang Implementation Go Implementation

michael-noll.commichael-noll.com

Design a trending topic system like Twitter's · michael-noll.com snikolov .wordpress.com

n00tc0d3r.blogspot.comn00tc0d3r.blogspot.com

Design a tinyurl system like Bitly

queue.acm.orgqueue.acm.org

Design a search engine like Google · queue.acm.org stackexchange.com ardendertat.com stanford.edu

quora.comquora.com

Design a scalable web crawler like Google

quora.comquora.com

Design the Facebook news feed function · quora.com quora.com slideshare.net

slideshare.netslideshare.net

Design a cache system like Memcached

stuffwithstuff.comjournal.stuffwithstuff.com

Design a garbage collection system · stuffwithstuff.com washington.edu

youtube.comyoutube.com

Design a file sync service like Dropbox

Coding deckgithub.com

Instagram · 14 million users, terabytes of photos What powers Instagram

Tumblr

Playfish

Netflix · A 360 Degree View Of The Entire Netflix Stack Netflix: What Happens When You Press Play?

Amazon architecturehighscalability.com

Amazon

Flickr architecturehighscalability.com

Flickr

Pinterest · From 0 To 10s of billions of page views a month 18 million visitors, 10x growth, 12 employees

Mailbox

Google architecturehighscalability.com

Google

Uber · How Uber scales their real-time market platform Lessons Learned From Scaling Uber To 2000 Engineers, 1000 Services, And 8000 Git Repositories

Dropbox

Twitter · Making Twitter 10000 percent faster Storing 250 million tweets a day using MySQL 150M active users, 300K QPS, a 22 MB/S firehose Timelines at scale Big and small data at Twitter Operations at Twitter: scaling beyond 100 million users How Twitter Handles 3,000 Images Per Second

PlentyOfFish architecturehighscalability.com

PlentyOfFish

Cinchcast

Facebook · Scaling memcached at Facebook TAO: Facebook’s distributed data store for the social graph Facebook’s photo storage How Facebook Live Streams To 800,000 Simultaneous Viewers

Stack Overflow architecturehighscalability.com

Stack Overflow

YouTube · YouTube scalability YouTube architecture

Airbnb Engineeringnerds.airbnb.com
Atlassian Developersdeveloper.atlassian.com
AWS Blogaws.amazon.com
Box Blogsblog.box.com
Cloudera Developer Blogblog.cloudera.com
Dropbox Tech Blogtech.dropbox.com
Ebay Tech Blogebaytechblog.com
Etsy Code as Craftcodeascraft.com
Evernote Tech Blogblog.evernote.com
Flickr Codecode.flickr.net
Foursquare Engineering Blogengineering.foursquare.com
Google Research Bloggoogleresearch.blogspot.com
Groupon Engineering Blogengineering.groupon.com
Heroku Engineering Blogengineering.heroku.com
High Scalabilityhighscalability.com
Hubspot Engineering Blogproduct.hubspot.com
Instagram Engineeringinstagram-engineering.tumblr.com
Intel Software Blogsoftware.intel.com
Jane Street Tech Blogblogs.janestreet.com
LinkedIn Engineeringengineering.linkedin.com
Microsoft Engineeringengineering.microsoft.com
Microsoft Python Engineeringblogs.msdn.microsoft.com
Netflix Tech Blogtechblog.netflix.com
Paypal Developer Blogdeveloper.paypal.com
Reddit Blogredditblog.com
Salesforce Engineering Blogdeveloper.salesforce.com
Slack Engineering Blogslack.engineering
Spotify Labslabs.spotify.com
Twitter Engineeringblog.twitter.com
Yahoo Engineering Blogyahooeng.tumblr.com
Yelp Engineering Blogengineeringblog.yelp.com
Translategithub.com
High scalabilityhighscalability.com
Hired in techhiredintech.com

, preventing users from accessing websites such as Twitter without knowing Twitter's IP address(es).

on caching servers such as Squid.

cache invalidationen.wikipedia.org

.

Denormalizationen.wikipedia.org
server linkstackoverflow.com

.

failoveren.wikipedia.org

) further increases complexity.

consistent hashingpaperplanes.de

can reduce the amount of transferred data.

Geolocation-baseddocs.aws.amazon.com
Latency-baseddocs.aws.amazon.com
X.509 certificatesen.wikipedia.org

on each server

apache.orghadoop.apache.org

File system · Hadoop File System (HDFS) - Open source implementation of GFS

harvard.eduread.seas.harvard.edu

Data store · Bigtable - Distributed column-oriented database from Google

harvard.eduread.seas.harvard.edu

Data store · DynamoDB - Document-oriented database from Amazon

research.google.comstatic.googleusercontent.com

File system · Google File System (GFS) - Distributed file system

research.google.comresearch.google.com

Data store · Spanner - Globally-distributed database from Google

research.google.comstatic.googleusercontent.com

Misc · Chubby - Lock service for loosely-coupled distributed systems from Google

research.google.comstatic.googleusercontent.com

Misc · Dapper - Distributed systems tracing infrastructure

research.google.comstatic.googleusercontent.com

Data processing · MapReduce - Distributed data processing from Google

slideshare.netslideshare.net

Data processing · Spark - Distributed data processing from Databricks

slideshare.netslideshare.net

Data store · Redis - Distributed memory caching system with persistence and value types

slideshare.netslideshare.net

Data store · Cassandra - Distributed column-oriented database from Facebook

slideshare.netslideshare.net

Misc · Zookeeper - Centralized infrastructure and services enabling synchronization

slideshare.netslideshare.net

Data store · HBase - Open source implementation of Bigtable

slideshare.netslideshare.net

Data processing · Storm - Distributed data processing from Twitter

slideshare.netslideshare.net

Data store · MongoDB - Document-oriented database

slideshare.netslideshare.net

Misc · Kafka - Pub/sub message queue from LinkedIn

HATEOASrestcookbook.com

(HTML interface for HTTP) - your web service should be fully accessible in a browser.

abhttpd.apache.org

.

slow query logdev.mysql.com

to help track performance issues.

least privilegeen.wikipedia.org

.

XSSen.wikipedia.org

and SQL injection.

A word on scalabilityallthingsdistributed.com
Applying back pressure when overloadedmechanical-sympathy.blogspot.com
AWS ElastiCache strategiesdocs.aws.amazon.com
CAP FAQgithub.com
CAP theorem revisitedrobertgreiner.com
DNS architecturetechnet.microsoft.com

.aspx)

DNS articlessupport.dnsimple.com
ELB listener configdocs.aws.amazon.com
Little's lawen.wikipedia.org
OWASP top tenowasp.org
Powers of twoen.wikipedia.org
Scalabilityweb.archive.org
Scalabilityweb.archive.org
The CAP theoremyoutube.com
Wikipediaen.wikipedia.org
Wikipediaen.wikipedia.org
Wikipediaen.wikipedia.org
Wikipediaen.wikipedia.org

)

Wikipediaen.wikipedia.org

)

What is HTTP?nginx.com
NoSQL patternshoricky.blogspot.com
Scalabilityweb.archive.org
REST vs JSON-RPCstackoverflow.com
Thriftcode.facebook.com
Slow query logdev.mysql.com
User datagram protocolen.wikipedia.org
CouchDB architectureblog.couchdb.org
FlockDBblog.twitter.com
Graph databaseen.wikipedia.org
Neo4jneo4j.com
Key-value databaseen.wikipedia.org
Memcached architectureadayinthelifeof.nl
Multi-master replicationen.wikipedia.org
Consistent hashingpaperplanes.de

)

The coming of the shardhighscalability.com
Bigtable architectureread.seas.harvard.edu
Cassandra architecturedocs.datastax.com
Asynchronismweb.archive.org
Cachesweb.archive.org
Clonesweb.archive.org
Databasesweb.archive.org

.

Acknowledgementen.wikipedia.org

) packets and automatic retransmission

checksum fieldsen.wikipedia.org

for each packet

query cachedev.mysql.com

could lead to performance issues.

B-treeen.wikipedia.org

that keeps data sorted and allows searches, sequential access, insertions, and deletions in logarithmic time.

↵ to searchesc to close
awesomelist.dev