Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: jorgedfbranco/system-design-and-architecture
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: patch-1
Choose a base ref
...
head repository: puncsky/system-design-and-architecture
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: master
Choose a head ref
Able to merge. These branches can be automatically merged.
  • 20 commits
  • 124 files changed
  • 3 contributors

Commits on May 23, 2021

  1. Update README.md

    puncsky authored May 23, 2021

    Verified

    This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
    Copy the full SHA
    ec98a68 View commit details
  2. Verified

    This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
    Copy the full SHA
    8f11912 View commit details

Commits on Dec 21, 2022

  1. update

    puncsky committed Dec 21, 2022
    Copy the full SHA
    89a72e1 View commit details
  2. clean up

    puncsky committed Dec 21, 2022
    Copy the full SHA
    1086c96 View commit details
  3. add more build output

    puncsky committed Dec 21, 2022
    Copy the full SHA
    401a20b View commit details
  4. update toc

    puncsky committed Dec 21, 2022
    Copy the full SHA
    5f2dd11 View commit details
  5. try updating image

    puncsky committed Dec 21, 2022
    Copy the full SHA
    824da0f View commit details

Commits on Dec 25, 2022

  1. update

    puncsky committed Dec 25, 2022
    Copy the full SHA
    984bbbb View commit details

Commits on Apr 7, 2024

  1. Copy the full SHA
    a2efb6a View commit details

Commits on Nov 1, 2024

  1. reformat and add zh-cn (puncsky#31)

    * reformat and add zh-cn
    
    * update
    puncsky authored Nov 1, 2024

    Verified

    This commit was created on GitHub.com and signed with GitHub’s verified signature.
    Copy the full SHA
    437d85b View commit details
  2. Verified

    This commit was created on GitHub.com and signed with GitHub’s verified signature.
    Copy the full SHA
    eb11cf8 View commit details
  3. Verified

    This commit was created on GitHub.com and signed with GitHub’s verified signature.
    Copy the full SHA
    8ca9d93 View commit details
  4. update metadata

    puncsky committed Nov 1, 2024
    Copy the full SHA
    b62ba47 View commit details
  5. remove langauge field

    puncsky committed Nov 1, 2024
    Copy the full SHA
    f404a50 View commit details
  6. normalize tags

    puncsky committed Nov 1, 2024
    Copy the full SHA
    91b44ee View commit details
  7. remove layout

    puncsky committed Nov 1, 2024
    Copy the full SHA
    c3492cf View commit details

Commits on Dec 17, 2024

  1. Copy the full SHA
    095a49b View commit details
  2. update

    puncsky committed Dec 17, 2024
    Copy the full SHA
    569cb41 View commit details
  3. update typo

    puncsky committed Dec 17, 2024
    Copy the full SHA
    416387f View commit details
  4. update links

    puncsky committed Dec 17, 2024
    Copy the full SHA
    8a5fbc4 View commit details
Showing with 15,650 additions and 2,278 deletions.
  1. +2 −0 .gitignore
  2. +13 −0 Makefile
  3. +68 −91 README.md
  4. +68 −0 SUMMARY.md
  5. +76 −0 drafts/fintech-sd-work-in-progress.md
  6. +14 −0 drafts/ideas.md
  7. +121 −0 drafts/three-basic-topics.md
  8. +5 −4 en/11-three-programming-paradigms.md
  9. +4 −3 en/12-solid-design-principles.md
  10. +3 −4 en/120-designing-uber.md
  11. +4 −3 en/121-designing-facebook-photo-storage.md
  12. +6 −5 en/122-key-value-cache.md
  13. +4 −3 en/123-ios-architecture-patterns-revisited.md
  14. +69 −35 en/136-fraud-detection-with-semi-supervised-learning.md
  15. +6 −5 en/137-stream-and-batch-processing.md
  16. +4 −3 en/140-designing-a-recommendation-system.md
  17. +5 −4 en/145-introduction-to-architecture.md
  18. +1,303 −4 en/161-designing-stock-exchange.md
  19. +1,336 −4 en/162-designing-smart-notification-of-stock-price-changes.md
  20. +70 −57 en/166-designing-payment-webhook.md
  21. +1,830 −22 en/167-designing-paypal-money-transfer.md
  22. +1,429 −4 en/168-designing-a-metric-system.md
  23. +6 −5 en/169-how-to-write-solid-code.md
  24. +13 −7 en/174-designing-memcached.md
  25. +5 −5 en/177-designing-Airbnb-or-a-hotel-booking-system.md
  26. +4 −4 en/178-lyft-marketing-automation-symphony.md
  27. +7 −7 en/179-designing-typeahead-search-or-autocomplete.md
  28. +4 −4 en/181-concurrency-models.md
  29. +11 −11 en/182-designing-l7-load-balancer.md
  30. +128 −167 en/2016-02-13-crack-the-system-design-interview.md
  31. +4 −3 en/2018-07-10-cloud-design-patterns.md
  32. +4 −3 en/2018-07-20-experience-deep-dive.md
  33. +4 −3 en/2018-07-21-data-partition-and-routing.md
  34. +4 −3 en/2018-07-22-b-tree-vs-b-plus-tree.md
  35. +4 −3 en/2018-07-23-load-balancer-types.md
  36. +4 −3 en/2018-07-24-replica-and-consistency.md
  37. +5 −4 en/2018-07-26-acid-vs-base.md
  38. +4 −3 en/38-how-to-stream-video-over-http.md
  39. +4 −4 en/41-how-to-scale-a-web-service.md
  40. +4 −3 en/43-how-to-design-robust-and-predictable-apis-with-idempotency.md
  41. +4 −4 en/45-how-to-design-netflix-view-state-service.md
  42. +6 −5 en/49-facebook-tao.md
  43. +24 −30 en/61-what-is-apache-kafka.md
  44. +5 −3 en/63-soft-skills-interview.md
  45. +4 −3 en/66-public-api-choices.md
  46. +4 −3 en/68-bloom-filter.md
  47. +4 −3 en/69-skiplist.md
  48. +5 −4 en/78-four-kinds-of-no-sql.md
  49. +5 −4 en/80-relational-database.md
  50. +5 −4 en/83-lambda-architecture.md
  51. +7 −3 en/84-designing-a-url-shortener.md
  52. +4 −3 en/85-improving-availability-with-failover.md
  53. +3 −3 en/97-designing-a-kv-store-with-external-storage.md
  54. +32 −0 zh-CN/11-three-programming-paradigms.md
  55. +26 −0 zh-CN/12-solid-design-principles.md
  56. +67 −0 zh-CN/120-designing-uber.md
  57. +71 −0 zh-CN/121-designing-facebook-photo-storage.md
  58. +52 −0 zh-CN/122-key-value-cache.md
  59. +88 −0 zh-CN/123-ios-architecture-patterns-revisited.md
  60. +0 −72 zh-CN/125-designing-facebook-photo-storage.md
  61. +0 −34 zh-CN/126-how-to-stream-video-over-http.md
  62. +0 −88 zh-CN/127-ios-architecture-patterns-revisited.md
  63. +0 −76 zh-CN/135-designing-uber.md
  64. +148 −0 zh-CN/136-fraud-detection-with-semi-supervised-learning.md
  65. +60 −0 zh-CN/137-stream-and-batch-processing.md
  66. +0 −68 zh-CN/138-stream-and-batch-processing.md
  67. +222 −0 zh-CN/140-designing-a-recommendation-system.md
  68. +107 −0 zh-CN/145-introduction-to-architecture.md
  69. +0 −132 zh-CN/151-introduction-to-architecture.md
  70. +1,409 −0 zh-CN/161-designing-stock-exchange.md
  71. +1,381 −0 zh-CN/162-designing-smart-notification-of-stock-price-changes.md
  72. +110 −0 zh-CN/166-designing-payment-webhook.md
  73. +1,926 −0 zh-CN/167-designing-paypal-money-transfer.md
  74. +1,494 −0 zh-CN/168-designing-a-metric-system.md
  75. +41 −0 zh-CN/169-how-to-write-solid-code.md
  76. +63 −0 zh-CN/174-designing-memcached.md
  77. +0 −91 zh-CN/176-lyft-marketing-automation-symphony.md
  78. +65 −0 zh-CN/177-designing-Airbnb-or-a-hotel-booking-system.md
  79. +86 −0 zh-CN/178-lyft-marketing-automation-symphony.md
  80. +51 −0 zh-CN/179-designing-typeahead-search-or-autocomplete.md
  81. +0 −72 zh-CN/18-soft-skills-interview.md
  82. +24 −0 zh-CN/181-concurrency-models.md
  83. +88 −0 zh-CN/182-designing-l7-load-balancer.md
  84. +0 −90 zh-CN/183-designing-l7-load-balancer.md
  85. +0 −128 zh-CN/184-designing-i18n-solutions.md
  86. +0 −153 zh-CN/192-google-software-engineering.md
  87. +0 −59 zh-CN/193-google-software-engineering-project-management.md
  88. +214 −0 zh-CN/2016-02-13-crack-the-system-design-interview.md
  89. +34 −0 zh-CN/2018-07-10-cloud-design-patterns.md
  90. +68 −0 zh-CN/2018-07-20-experience-deep-dive.md
  91. +56 −0 zh-CN/2018-07-21-data-partition-and-routing.md
  92. +22 −0 zh-CN/2018-07-22-b-tree-vs-b-plus-tree.md
  93. +21 −0 zh-CN/2018-07-23-load-balancer-types.md
  94. +50 −0 zh-CN/2018-07-24-replica-and-consistency.md
  95. +26 −0 zh-CN/2018-07-26-acid-vs-base.md
  96. +0 −58 zh-CN/37-key-value-cache.md
  97. +36 −0 zh-CN/38-how-to-stream-video-over-http.md
  98. +21 −0 zh-CN/41-how-to-scale-a-web-service.md
  99. +0 −24 zh-CN/42-how-to-scale-a-web-service.md
  100. +47 −0 zh-CN/43-how-to-design-robust-and-predictable-apis-with-idempotency.md
  101. +0 −53 zh-CN/44-how-to-design-robust-and-predictable-apis-with-idempotency.md
  102. +47 −0 zh-CN/45-how-to-design-netflix-view-state-service.md
  103. +80 −0 zh-CN/49-facebook-tao.md
  104. +0 −81 zh-CN/52-facebook-tao.md
  105. +100 −0 zh-CN/61-what-is-apache-kafka.md
  106. +0 −105 zh-CN/62-what-is-apache-kafka.md
  107. +39 −0 zh-CN/63-soft-skills-interview.md
  108. +0 −66 zh-CN/64-experience-deep-dive.md
  109. +26 −0 zh-CN/66-public-api-choices.md
  110. +22 −0 zh-CN/68-bloom-filter.md
  111. +19 −0 zh-CN/69-skiplist.md
  112. +0 −19 zh-CN/71-skiplist.md
  113. +0 −22 zh-CN/72-bloom-filter.md
  114. +61 −0 zh-CN/78-four-kinds-of-no-sql.md
  115. +29 −0 zh-CN/80-relational-database.md
  116. +61 −0 zh-CN/83-lambda-architecture.md
  117. +78 −0 zh-CN/84-designing-a-url-shortener.md
  118. +26 −0 zh-CN/85-improving-availability-with-failover.md
  119. +0 −57 zh-CN/86-lambda-architecture.md
  120. +0 −59 zh-CN/87-four-kinds-of-no-sql.md
  121. +0 −27 zh-CN/88-improving-availability-with-failover.md
  122. +0 −79 zh-CN/89-designing-a-url-shortener.md
  123. +61 −0 zh-CN/97-designing-a-kv-store-with-external-storage.md
  124. +56 −0 zh-CN/README.md
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1 +1,3 @@
.idea/
*.pdf
_book/**
13 changes: 13 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
.PHONY: install
install:
nvm use v10 && npm install gitbook-cli -g

.PHONY: dev
dev:
gitbook serve

.PHONY: build
build:
gitbook pdf ./ ./_book/system-design-and-architecture-2nd-edition.pdf
gitbook epub ./ ./_book/system-design-and-architecture-2nd-edition.epub
gitbook mobi ./ ./_book/system-design-and-architecture-2nd-edition.mobi
159 changes: 68 additions & 91 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,65 +1,62 @@
<h1 align="center">System Design and Architecture</h1>

<h3 align="center">
Grow your design skills with best practices 🚀 and a diverse community 👫
</h3>
> ⚠️ 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.

| Languages | [English](#english-version) | [中文版](#系统设计与构架---中文版)|
| --- | --- | --- |
| Communities | [Telegram: 1303 members](https://t.me/system_design_and_architecture) | 微信群356人(ID: onetptp) [电报群](https://t.me/system_design_cn)
| Websites | [TianPan.co (English)](https://tianpan.co/notes/2016-02-13-crack-the-system-design-interview) | [硅谷io (中文)](https://guigu.io/notes/151-introduction-to-architecture) |
| Mobile Apps | <img src="https://tianpan.co/download-tianpanco-app.png"/> <br/>[iOS](https://apps.apple.com/us/app/tianpan-co/id1492596286) / [Android](https://play.google.com/store/apps/details?id=co.tianpan.mobile) / [APK](https://github.com/puncsky/android-tianpanco-release/releases) | <img src="https://guigu.io/download-guiguio-app.png"/><br/>[iOS](https://apps.apple.com/app/apple-store/id1487436041) / [Android](https://play.google.com/store/apps/details?id=io.guigu.mobile) / [APK](https://github.com/puncsky/mobile-guiguio-release/releases) |
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](https://cloud.google.com/apis/design).
* Object-oriented design. Its importance is quite overestimated by mediocre engineers.

## English Version
## 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 |
| --- | --- |
| <img src="https://res.cloudinary.com/dohtidfqh/image/upload/v1580708936/web-guiguio/instagram.png" width="52" /> | [Designing Instagram or Pinterest](./en/2016-02-13-crack-the-system-design-interview.md) |
| <img src="https://res.cloudinary.com/dohtidfqh/image/upload/v1580708917/web-guiguio/uber.png" width="52" />| [Designing Uber](./en/120-designing-uber.md) | |
| <img src="https://res.cloudinary.com/dohtidfqh/image/upload/v1580709369/web-guiguio/facebook.png" width="52" />| [How Facebook Scale its Social Graph Store? TAO](./en/49-facebook-tao.md) |
| <img src="https://res.cloudinary.com/dohtidfqh/image/upload/v1580709414/web-guiguio/netflix.png" width="52" />| [How Netflix Serves Viewing Data?](./en/45-how-to-design-netflix-view-state-service.md) |
| <img src="https://res.cloudinary.com/dohtidfqh/image/upload/v1580709444/web-guiguio/stripe.png" width="52" />| [How to design robust and predictable APIs with idempotency?](./en/43-how-to-design-robust-and-predictable-apis-with-idempotency.md) |
| <img src="https://res.cloudinary.com/dohtidfqh/image/upload/v1580709414/web-guiguio/netflix.png" width="52" />| [How to stream video over HTTP for mobile devices? HTTP Live Streaming (HLS)](./en/38-how-to-stream-video-over-http.md) |
| <img src="https://res.cloudinary.com/dohtidfqh/image/upload/v1580709618/web-guiguio/confluent.png" width="52" />| [Designing a distributed logging system](./en/61-what-is-apache-kafka.md) |
| <img src="https://res.cloudinary.com/dohtidfqh/image/upload/v1580709677/web-guiguio/twitter.png" width="52" />| [Designing a URL shortener](./en/84-designing-a-url-shortener.md) |
| <img src="https://res.cloudinary.com/dohtidfqh/image/upload/v1580709990/web-guiguio/linkedin.png" width="52" />| [Designing a KV store with external storage](./en/97-designing-a-kv-store-with-external-storage.md) |
| <img src="https://res.cloudinary.com/dohtidfqh/image/upload/v1580709823/web-guiguio/memcached.png" width="52" />| [Designing a distributed in-memory KV store or Memcached](./en/174-designing-memcached.md) |
| <img src="https://res.cloudinary.com/dohtidfqh/image/upload/v1580709369/web-guiguio/facebook.png" width="52" />| [Designing Facebook photo storage](./en/121-designing-facebook-photo-storage.md) |
| <img src="https://res.cloudinary.com/dohtidfqh/image/upload/v1580710037/web-guiguio/robinhood.png" width="52" />| [Designing Stock Exchange](./en/161-designing-stock-exchange.md) |
| <img src="https://res.cloudinary.com/dohtidfqh/image/upload/v1580710037/web-guiguio/robinhood.png" width="52" />| [Designing Smart Notification of Stock Price Changes](./en/162-designing-smart-notification-of-stock-price-changes.md) |
| <img src="https://res.cloudinary.com/dohtidfqh/image/upload/v1580710085/web-guiguio/square.png" width="52" />| [Designing Square Cash or PayPal Money Transfer System](./en/167-designing-paypal-money-transfer.md) |
| <img src="https://res.cloudinary.com/dohtidfqh/image/upload/v1580709444/web-guiguio/stripe.png" width="52" />| [Designing payment webhook](./en/166-designing-payment-webhook.md) |
| <img src="https://res.cloudinary.com/dohtidfqh/image/upload/v1580710137/web-guiguio/grafana.jpg" width="52" />| [Designing a metric system](./en/168-designing-a-metric-system.md) |
| <img src="https://res.cloudinary.com/dohtidfqh/image/upload/v1580710354/web-guiguio/tiktok.webp" width="52" />| [Designing a recommendation system](./en/140-designing-a-recommendation-system.md) |
| <img src="https://res.cloudinary.com/dohtidfqh/image/upload/v1580710222/web-guiguio/airbnb.png" width="52" />| [Designing Airbnb or a hotel booking system](./en/177-designing-Airbnb-or-a-hotel-booking-system.md) |
| <img src="https://res.cloudinary.com/dohtidfqh/image/upload/v1580710390/web-guiguio/lyft.png" width="52" />| [Lyft's Marketing Automation Platform -- Symphony](./en/178-lyft-marketing-automation-symphony.md) |
| <img src="https://res.cloudinary.com/dohtidfqh/image/upload/v1580709990/web-guiguio/linkedin.png" width="52" />| [Designing typeahead search or autocomplete](./en/179-designing-typeahead-search-or-autocomplete.md) |
| <img src="https://res.cloudinary.com/dohtidfqh/image/upload/v1580710529/web-guiguio/nginx.jpg" width="52" />| [Designing a Load Balancer or Dropbox Bandaid](./en/182-designing-l7-load-balancer.md) |
| <img src="https://res.cloudinary.com/dohtidfqh/image/upload/v1580708917/web-guiguio/uber.png" width="52" />| [Fraud Detection with Semi-supervised Learning](./en/136-fraud-detection-with-semi-supervised-learning.md) |
| <img src="https://res.cloudinary.com/dohtidfqh/image/upload/v1595029150/web-guiguio/favicon-32x32.png" width="52" />| [Designing Online Judge or Leetcode](https://tianpan.co/notes/243-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

| Product | Question | |
| -------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------ | --- |
| <img src="https://res.cloudinary.com/dohtidfqh/image/upload/v1580708936/web-guiguio/instagram.png" width="52" /> | [Designing Instagram or Pinterest](./en/2016-02-13-crack-the-system-design-interview.md) | |
| <img src="https://res.cloudinary.com/dohtidfqh/image/upload/v1580708917/web-guiguio/uber.png" width="52" /> | [Designing Uber](./en/120-designing-uber.md) | |
| <img src="https://res.cloudinary.com/dohtidfqh/image/upload/v1580709369/web-guiguio/facebook.png" width="52" /> | [How Facebook Scale its Social Graph Store? TAO](./en/49-facebook-tao.md) | |
| <img src="https://res.cloudinary.com/dohtidfqh/image/upload/v1580709414/web-guiguio/netflix.png" width="52" /> | [How Netflix Serves Viewing Data?](./en/45-how-to-design-netflix-view-state-service.md) | |
| <img src="https://res.cloudinary.com/dohtidfqh/image/upload/v1580709444/web-guiguio/stripe.png" width="52" /> | [How to design robust and predictable APIs with idempotency?](./en/43-how-to-design-robust-and-predictable-apis-with-idempotency.md) | |
| <img src="https://res.cloudinary.com/dohtidfqh/image/upload/v1580709414/web-guiguio/netflix.png" width="52" /> | [How to stream video over HTTP for mobile devices? HTTP Live Streaming (HLS)](./en/38-how-to-stream-video-over-http.md) | |
| <img src="https://res.cloudinary.com/dohtidfqh/image/upload/v1580709618/web-guiguio/confluent.png" width="52" /> | [Designing a distributed logging system](./en/61-what-is-apache-kafka.md) | |
| <img src="https://res.cloudinary.com/dohtidfqh/image/upload/v1580709677/web-guiguio/twitter.png" width="52" /> | [Designing a URL shortener](./en/84-designing-a-url-shortener.md) | |
| <img src="https://res.cloudinary.com/dohtidfqh/image/upload/v1580709990/web-guiguio/linkedin.png" width="52" /> | [Designing a KV store with external storage](./en/97-designing-a-kv-store-with-external-storage.md) | |
| <img src="https://res.cloudinary.com/dohtidfqh/image/upload/v1580709823/web-guiguio/memcached.png" width="52" /> | [Designing a distributed in-memory KV store or Memcached](./en/174-designing-memcached.md) | |
| <img src="https://res.cloudinary.com/dohtidfqh/image/upload/v1580709369/web-guiguio/facebook.png" width="52" /> | [Designing Facebook photo storage](./en/121-designing-facebook-photo-storage.md) | |
| <img src="https://res.cloudinary.com/dohtidfqh/image/upload/v1580710037/web-guiguio/robinhood.png" width="52" /> | [Designing Stock Exchange](./en/161-designing-stock-exchange.md) | |
| <img src="https://res.cloudinary.com/dohtidfqh/image/upload/v1580710037/web-guiguio/robinhood.png" width="52" /> | [Designing Smart Notification of Stock Price Changes](./en/162-designing-smart-notification-of-stock-price-changes.md) | |
| <img src="https://res.cloudinary.com/dohtidfqh/image/upload/v1580710085/web-guiguio/square.png" width="52" /> | [Designing Square Cash or PayPal Money Transfer System](./en/167-designing-paypal-money-transfer.md) | |
| <img src="https://res.cloudinary.com/dohtidfqh/image/upload/v1580709444/web-guiguio/stripe.png" width="52" /> | [Designing payment webhook](./en/166-designing-payment-webhook.md) | |
| <img src="https://res.cloudinary.com/dohtidfqh/image/upload/v1580710137/web-guiguio/grafana.jpg" width="52" /> | [Designing a metric system](./en/168-designing-a-metric-system.md) | |
| <img src="https://res.cloudinary.com/dohtidfqh/image/upload/v1580710354/web-guiguio/tiktok.webp" width="52" /> | [Designing a recommendation system](./en/140-designing-a-recommendation-system.md) | |
| <img src="https://res.cloudinary.com/dohtidfqh/image/upload/v1580710222/web-guiguio/airbnb.png" width="52" /> | [Designing Airbnb or a hotel booking system](./en/177-designing-Airbnb-or-a-hotel-booking-system.md) | |
| <img src="https://res.cloudinary.com/dohtidfqh/image/upload/v1580710390/web-guiguio/lyft.png" width="52" /> | [Lyft's Marketing Automation Platform -- Symphony](./en/178-lyft-marketing-automation-symphony.md) | |
| <img src="https://res.cloudinary.com/dohtidfqh/image/upload/v1580709990/web-guiguio/linkedin.png" width="52" /> | [Designing typeahead search or autocomplete](./en/179-designing-typeahead-search-or-autocomplete.md) | |
| <img src="https://res.cloudinary.com/dohtidfqh/image/upload/v1580710529/web-guiguio/nginx.jpg" width="52" /> | [Designing a Load Balancer or Dropbox Bandaid](./en/182-designing-l7-load-balancer.md) | |
| <img src="https://res.cloudinary.com/dohtidfqh/image/upload/v1580708917/web-guiguio/uber.png" width="52" /> | [Fraud Detection with Semi-supervised Learning](./en/136-fraud-detection-with-semi-supervised-learning.md) | |
| <img src="https://res.cloudinary.com/dohtidfqh/image/upload/v1595029150/web-guiguio/favicon-32x32.png" width="52" /> | [Designing Online Judge or Leetcode](https://tianpan.co/notes/243-designing-online-judge-or-leetcode) | |

### System Design Theories

* [Introduction to Architecture](./en/145-introduction-to-architecture.md)
* [How to scale a web service?](./en/41-how-to-scale-a-web-service.md)
@@ -84,53 +81,33 @@
* [Experience Deep Dive](./en/2018-07-20-experience-deep-dive.md)
* [3 Programming Paradigms](./en/11-three-programming-paradigms.md)
* [SOLID Design Principles](./en/12-solid-design-principles.md)
* How to do capacity planning?

## 系统设计与构架 - 中文版

### 实践

* [设计一个短网址系统](./zh-CN/89-designing-a-url-shortener.md)
* [设计优步打车服务](./zh-CN/135-designing-uber.md)
* [Facebook如何存储大规模社交图谱(graph)?TAO](./zh-CN/52-facebook-tao.md)
* [什么是 Apache Kafka?](./zh-CN/62-what-is-apache-kafka.md)
* [设计Facebook图片存储系统](./zh-CN/125-designing-facebook-photo-storage.md)
* [如何使用HTTP协议向移动设备传输视频? HTTP Live Streaming (HLS)](./zh-CN/126-how-to-stream-video-over-http.md)
* [Lyft 的营销自动化平台 Symphony](./zh-CN/176-lyft-marketing-automation-symphony.md)
* [设计负载均衡器](./zh-CN/183-designing-l7-load-balancer.md)
* [设计以人为本的国际化(i18n) 工程方案](./zh-CN/184-designing-i18n-solutions.md)
* [如何设计区块链服务端的架构?](https://guigu.io/notes/235-designing-blockchain-server)

### 理论

* [构架入门](./zh-CN/151-introduction-to-architecture.md)
* [软技能面试可以谈点什么?](./zh-CN/18-soft-skills-interview.md)
* [键值缓存有哪些用法?](./zh-CN/37-key-value-cache.md)
* [如何构建大规模的网站服务?](./zh-CN/42-how-to-scale-a-web-service.md)
* [如何使用幂等性设计出高可靠的API?](./zh-CN/44-how-to-design-robust-and-predictable-apis-with-idempotency.md)
* [过往工作经验面试](./zh-CN/64-experience-deep-dive.md)
* [跳跃表](./zh-CN/71-skiplist.md)
* [布隆过滤器](./zh-CN/72-bloom-filter.md)
* [Lambda 架构](./zh-CN/86-lambda-architecture.md)
* [4种非关系型数据库(No-SQL)](./zh-CN/87-four-kinds-of-no-sql.md)
* [通过失效转移提高系统可用性](./zh-CN/88-improving-availability-with-failover.md)
* [再窥iOS架构模式](./zh-CN/127-ios-architecture-patterns-revisited.md)
* [流处理和批处理框架](./zh-CN/138-stream-and-batch-processing.md)
* [谷歌的软件工程:软件开发](./zh-CN/192-google-software-engineering.md)
* [谷歌的软件工程:项目管理](./zh-CN/193-google-software-engineering-project-management.md)
### Prepare for an Interview effectively

## Join us for further discussion!
* 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

* [Telegram: 1303 members](https://t.me/system_design_and_architecture)
* [Wechat 356 members: 加 onetptp 好友注明加系统设计群](https://tianpan.co/group/system-design-and-architecture)
* [中文电报群](https://t.me/system_design_cn)
[[Chinese Edition](./zh-CN/README.md)]

## License

GPL v3

## 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!

* [Telegram](https://t.me/system_design_and_architecture)
* [Discord](https://discord.gg/Pb5YbK3ykN)

---
## Contribute
## License

Contributions welcome!
GPL v3

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