system-design-and-architecture icon indicating copy to clipboard operation
system-design-and-architecture copied to clipboard

Learn how to design large-scale systems. Prep for the system design interview.

System Design and Architecture

Grow your design skills with best practices 🚀 and a diverse community 👫

Languages English 中文版
Communities Telegram: 1.8k members 多个微信群 (ID: onetptp) 电报群
Websites TianPan.co (English) 硅谷io (中文)
Mobile Apps
iOS / Android / APK

iOS / Android / APK

English Version

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

TODO

  • Designing instagram or newsfeed APIs
  • Designing Yelp / Finding nearest K POIs
  • Designing trending topics / top K exceptions in the system
  • Designing distributed web crawler
  • Designing i18n service
  • Designing ads bidding system
  • Designing a dropbox or a file-sharing system
  • Designing a calendar system
  • Designing an instant chat system / Facebook Messenger / WeChat
  • Designing a ticketing system or Ticketmaster
  • Designing a voice assistant or Siri

Theories

  • Introduction to Architecture
  • How to scale a web service?
  • ACID vs BASE
  • Data Partition and Routing
  • Replica, Consistency, and CAP theorem
  • Load Balancer Types
  • Concurrency Model
  • Improving availability with failover
  • Bloom Filter
  • Skiplist
  • B tree vs. B+ tree
  • Intro to Relational Database
  • 4 Kinds of No-SQL
  • Key value cache
  • Stream and Batch Processing Frameworks
  • Cloud Design Patterns
  • Public API Choices
  • Lambda Architecture
  • iOS Architecture Patterns Revisited
  • What can we communicate in soft skills interview?
  • Experience Deep Dive
  • 3 Programming Paradigms
  • SOLID Design Principles

系统设计与构架 - 中文版

实践

  • 设计一个短网址系统
  • 设计优步打车服务
  • Facebook如何存储大规模社交图谱(graph)?TAO
  • 什么是 Apache Kafka?
  • 设计Facebook图片存储系统
  • 如何使用HTTP协议向移动设备传输视频? HTTP Live Streaming (HLS)
  • Lyft 的营销自动化平台 Symphony
  • 设计负载均衡器
  • 设计以人为本的国际化(i18n) 工程方案
  • 如何设计区块链服务端的架构?

理论

  • 构架入门
  • 软技能面试可以谈点什么?
  • 键值缓存有哪些用法?
  • 如何构建大规模的网站服务?
  • 如何使用幂等性设计出高可靠的API?
  • 过往工作经验面试
  • 跳跃表
  • 布隆过滤器
  • Lambda 架构
  • 4种非关系型数据库(No-SQL)
  • 通过失效转移提高系统可用性
  • 再窥iOS架构模式
  • 流处理和批处理框架
  • 谷歌的软件工程:软件开发
  • 谷歌的软件工程:项目管理

Join us for further discussion!

License

GPL v3


Contribute

Contributions welcome!

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