iT邦幫忙

鐵人檔案

2024 iThome 鐵人賽
回列表
Software Development

30 天 系統設計 學習筆記:建立思考的 SOP 系列

Clean Architecture 的作者,Robert C. Martin 在前言中問道: 「軟體是由什麼構成的?」
相較於實體房屋,軟體的一切都很抽象,在軟體的世界,狗可以學鴨子叫、雞可以飛在天上、球可以永不落地 — 只要寫得夠糟XD

從語言、函式、物件、設計模式到系統設計,面對越來越抽象的問題,我們該從何處下手?

抽象的思考總是困難的,既然如此,我們是否能建立一個 SOP ,讓我們的思考不再發散,而是聚焦於 「當下重要的事情」,從高層開始思考,建構出整體的架構後,再逐步完善各個元件,讓抽象的思考有跡可循,幫助我們設計出穩健、可擴展的系統!

鐵人鍊成 | 共 30 篇文章 | 14 人訂閱 訂閱系列文 RSS系列文
DAY 21

[Day 21] Scaling API Service (一)

回憶一下 Day 16 的基本系統架構 可以看到我們只有一台對外的 API Service, 所有的請求都會透過此服務轉給我們內部的服務, 當使用量很大時可能會...

2024-08-21 ‧ 由 erichung0404 分享
DAY 22

[Day 22] Scaling API Service (二)

上篇我們介紹了擴展對外 API Service 的方式, 現在我們可以透過路由分散大量的請求減輕負擔和避免 SPOF 了既然對外的 API Service 沒問...

2024-08-22 ‧ 由 erichung0404 分享
DAY 23

[Day 23] Message Queue (一)

我們已經擴展了外部和內部的 API Service, 透過均衡負載器分散流量給每一個伺服器, 可以說我們透過均衡負載器將 外部服務 和 內部服務 "解...

2024-08-23 ‧ 由 erichung0404 分享
DAY 24

[Day 24] Message Queue (二)

雖然 Message Queue 沒有一個標準化規範, 實作會根據業務情境有些許不同, 但大多數都支援以下功能 生產者-消費者 模式 (Producer-Co...

2024-08-24 ‧ 由 erichung0404 分享
DAY 25

[Day 25] Message Queue (三)

昨天介紹了 Message Queue 的基本功能與架構, 今天繼續介紹在此之上延伸出更具擴展性的 Event Streaming Platform (ESP)...

2024-08-25 ‧ 由 erichung0404 分享
DAY 26

[Day 26] Scaling Database (一)

有了 Message Queue 之後, 我們已經將服務之間解綁, 現在只剩下 Database 還是單一節點, 所以今天就來 Scaling Database...

2024-08-26 ‧ 由 erichung0404 分享
DAY 27

[Day 27] Scaling Database (二)

上篇介紹了 RDBMS 的擴展方式: replica, sharding, consensus由於這些擴展方式也都適用於 NoSQL Database並且相較於...

2024-08-27 ‧ 由 erichung0404 分享
DAY 28

[Day 28] Caching (一)

前面我們介紹了分散式系統中對於 可用性 和 一致性 的抉擇也簡單比較了各個 Database 的設計傾向, 並透過 Replication, Sharding,...

2024-08-28 ‧ 由 erichung0404 分享
DAY 29

[Day 29] Caching (二)

接續前篇提到從硬碟存取資料造成的效能瓶頸, 可以改從 記憶體 存取改善效能另一個效能的瓶頸會在 網路速度, 可以透過縮短 服務 和 客戶端 的地理距離來改善 將...

2024-08-29 ‧ 由 erichung0404 分享
DAY 30

[Day 30] 完賽感想

最後一天了, 做個總結 碎碎念 這次是第二次參加鐵人賽, 去年因為剛好讀完 CMake, 所以想著趁記憶還在, 就報名鐵人賽順便做筆記XD發現在寫文章的過程中,...

2024-08-30 ‧ 由 erichung0404 分享