Giter Club home page Giter Club logo

system-design-and-architecture's Introduction

System Design and Architecture

⚠️ The 2nd Edition is still a work in progress.

The book System Design and Architecture has helped millions of software engineers worldwide to succeed in the Internet industry since 2015. Here is why it works:

  1. 🌎 Real-world engineering. It comes from real-world examples of FANNG and many other silicon valley companies. And it outlines how to build real-world Internet products and services.
  2. 🍕 Easy to digest. System design at the right level of abstraction is like a map to route you to your destination with the shortest cut. There are charts, diagrams, and step-by-step guides - all for you to acquire the minimum actionable knowledge to excel system design interviews and get started building.
  3. 🤲 Full-coverage. It strives to be "the book" for you to master most of the system design use-cases, from backend to frontend and from zero to hero.
  4. 🚶‍♀️ 4-step framework. This book approaches and solve problems in a systematic and repeatable way: 1) Clarify requirements 2) Sketch out the high-level design 3) Discuss individual components and how they interact with each other 4) Wrap up with blind spots or bottlenecks.

What's different in the 2nd Edition? From 2015 to 2022, we saw mobile ate the world, cloud-native computing came across Kubernetes, and web3 went through ups and downs. There are always new companies at different stages of their lifecycles taking the lead in the Internet industry. I am interested in how they work, aren't you? So in the 2nd Edition, I will

  • add more interesting content with new companies and products.
  • rewrite existing content with new trends in the industry.
  • add more charts and diagrams with step-by-step guides.
  • add a PDF edition of the book.
  • deduplicate repetitive content so that each design takes its unique abstraction.

What is out of this book's scope?

  • API design for specific domains. Please go to Google's API design guide.
  • Object-oriented design. Its importance is quite overestimated by mediocre engineers.

How to use this book?

  • For professionals (Google L5 or above), go directly to System Design in Practice.
  • For junior and intermediate programmers (Google L3/L4), go to System Design Theories and then read System Design in Practice.
  • For beginners, go to Prepare for an Interview effectively, then read System Design Theories, and finally go to System Design in Practice.

System Design in Practice

Product Question
Designing Instagram or Pinterest
Designing Uber
How Facebook Scale its Social Graph Store? TAO
How Netflix Serves Viewing Data?
How to design robust and predictable APIs with idempotency?
How to stream video over HTTP for mobile devices? HTTP Live Streaming (HLS)
Designing a distributed logging system
Designing a URL shortener
Designing a KV store with external storage
Designing a distributed in-memory KV store or Memcached
Designing Facebook photo storage
Designing Stock Exchange
Designing Smart Notification of Stock Price Changes
Designing Square Cash or PayPal Money Transfer System
Designing payment webhook
Designing a metric system
Designing a recommendation system
Designing Airbnb or a hotel booking system
Lyft's Marketing Automation Platform -- Symphony
Designing typeahead search or autocomplete
Designing a Load Balancer or Dropbox Bandaid
Fraud Detection with Semi-supervised Learning
Designing Online Judge or Leetcode

System Design Theories

Prepare for an Interview effectively

  • Introduction to software engineer interview
  • How to crack the coding interview, for real?
  • How to communicate in the interview?
  • Experience deep dive
  • Culture fit
  • Be a software engineer - a hero's journey

[Chinese Edition]

Who's Tian Pan?

Tian Pan has been a high-performing software engineer and engineering manager working in the San Francisco Bay Area for 10 years, previously worked at Uber, Oracle, IoTeX, and Microsoft.

Join us for further discussion!


License

GPL v3

If you found this resource helpful, give it a 🌟 otherwise contribute to it and give it a ⭐️.

system-design-and-architecture's People

Contributors

jorgedfbranco avatar puncsky avatar tliu2014 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

system-design-and-architecture's Issues

Designing task runner service

Priyal Mehta, [Oct 18, 2019 at 9:27:20 PM]:
I ended up here from your great post on SD Tian, awesome work

I am fairly new to System design, havent done much

recently was asked a question about designing system with these 3 components:
1. Web API to take incoming tasks along with an execution time (ASAP or in future)
2. Designing a Task library
3. Desiging a consumer executable pool (Which executes the tasks)
Any pointers for this ?

Designing Github

I appreciate your work, and thanks for sharing this info, Could you Design a Github?

monitoring top K exceptions

Eric W.

How to design a system to monitor the top 500 server exceptions in 24 hours. The number of servers may have millions.

🟢 planning

Deliverables:

  1. Articles in this doc
  2. 10x.pub Online video sessions/discussions
    1. technical design
    2. investment insights in this industry

Availability and Resilience

Syed X, [Nov 18, 2019 at 3:10:51 AM]:

Hello All,

Has anyone worked on Data center consolidation, upgrade projects with an emphasis on Availability and Resilience requirements?

I have a potential interview coming up and would need the below items for the preparation.

  1. Resilience strategies
  2. HA strategies
  3. DR strategies
  4. Most important - challenges faced and how they were addressed.

Thanks in advance

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.