system-design-and-architecture
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 ⭐️.