Python架構模式:精通基於Python的API設計、事件驅動架構和套件管理 Python Architecture Patterns: Master API design, event-driven structures, and package management in Python

Jaime Buelta 譯者 盧浩//任鴻//金宏斌//陳新//冷毅

商品描述

本書講解軟體架構系統各方面的內容,從頂層設計到用來支援高層功能的低層細節。
本書首先介紹軟體架構的意義並給出簡單的設計範例,之後分為四個部分涵蓋軟體開發生命週期中的各個階段:
討論構成系統的每個組成單元的一般性原則及其核心內容;重點介紹一些成功的架構模式,包括它們的優點和限制;
闡述如何進行軟體測試以及如何建構和分享程式碼;
講解持續運維,涵蓋日誌、系統度量、效能分析、程式碼調試和架構調整等內容。
本書將幫助你形成架構思維,了解軟體開發的想法和專案中要考慮的重點問題。

目錄大綱

Contents目  錄
譯者序
前言
關於作者
關於審校者
第1章 軟體架構簡介 1
1.1 設計軟體系統的架構 1
1.2 劃分為較小的單元 3
1.3 康威定律:對軟體架構的影響 5
1.4 應用範例:概述 6
1.5 軟體架構安全 8
1.6 小結 9
第一部分 設計
第2章 API設計 13
2.1 抽象 14
2.1.1 使用適當的抽象 15
2.1.2 抽象失效 16
2.1.3 資源與操作抽象 17
2.2 RESTful接口 18
2.2.1 實用性定義 19
2.2.2 HTTP頭部及狀態 21
2.2.3 資源設計 24
2.2.4 資源與參數 25
2.2.5 分頁 26
2.2.6 RESTful API流程設計 27
2.2.7 使用Open API規格 29
2.3 認證 32
2.3.1 HTML介面認證 33
2.3.2 RESTful介面認證 34
2.4 API版本管理 38
2.4.1 為何需要版本管理 38
2.4.2 內部版本與外部版本 38
2.4.3 語意化版本管理 39
2.4.4 簡單的版本管理 40
2.5 前端與後端 41
2.6 HTML介面 43
2.6.1 傳統HTML介面 43
2.6.2 動態頁 44
2.6.3 單頁應用程式 45
2.6.4 混合模式 46
2.7 API設計範例 47
2.7.1 端點 48
2.7.2 設計及實現審查 55
2.8 小結 55
第3章 資料建模 56
3.1 資料庫的類型 56
3.1.1 關聯式資料庫 57
3.1.2 非關聯式資料庫 59
3.1.3 小型資料庫 62
3.2 資料庫事務 63
3.3 分散式關聯式資料庫 65
3.3.1 主庫/副本 65
3.3.2 分片 67
3.3.3 分片的優點和缺點 71
3.4 資料庫模式設計 72
3.4.1 模式規範化 75
3.4.2 去規範化 77
3.5 資料索引 78
3.6 小結 81
第4章 資料層 82
4.1 模型層 82
4.1.1 DDD 83
4.1.2 使用ORM 84
4.1.3 工作單元模式及資料封裝 90
4.1.4 CQRS使用不同的讀寫
模型 93
4.2 資料庫遷移 96
4.2.1 向後相容性 96
4.2.2 關聯式資料庫遷移 97
4.2.3 非關聯式資料庫遷移 101
4.3 處理遺留資料庫 102
4.3.1 檢測資料庫模式 103
4.3.2 同步現有模式至ORM 104
4.4 小結 105
第二部分 架構模式
第5章 十二要素App方法論 109
5.1 十二要素App簡介 109
5.2 CI 110
5.3 可擴展性 111
5.4 配置 113
5.5 十二要素 115
5.5.1 一次構建,多次運行 115
5.5.2 依賴項與配置 117
5.5.3 可擴展性 120
5.5.4 監控與管理 122
5.6 容器化的十二要素App 125
5.7 小結 126
第6章 Web伺服器架構 127
6.1 請求–回應架構 127
6.2 Web架構 129
6.3 Web伺服器 130
6.3.1 由外部提供靜態內容 131
6.3.2 反向代理 133
6.3.3 日誌 135
6.3.4 高階用法 136
6.4 uWSGI 136
6.4.1 WSGI應用程式 137
6.4.2 與Web伺服器互動 138
6.4.3 進程 139
6.4.4 進程生命週期 140
6.5 Python Worker 143
6.5.1 Django MVT架構 143
6.5.2 將請求路由到視圖 144
6.5.3 視圖 146
6.5.4 中間件 150
6.5.5 Django REST框架 152
6.6 外部層 158
6.7 小結 158
第7章 事件驅動架構 160
7.1 發送事件 160
7.2 異步任務 161
7.3 任務細分 164
7.4 計畫任務 165
7.5 隊列機制 166
7.5.1 統一Worker代碼 169
7.5.2 雲佇列和Worker 169
7.6 Celery 171
7.6.1 配置Celery 172
7.6.2 Celery Worker 172
7.6.3 觸發任務 175
7.6.4 聯調 175
7.6.5 計畫任務 178
7.6.6 Celery Flower 182
7.6.7 Flower的HTTP API 184
7.7 小結 185
第8章 高階事件驅動架構 187
8.1 流式事件 187
8.2 管道 190
8.2.1 準備 191
8.2.2 基礎任務 192
8.2.3 影像任務 193
8.2.4 視訊任務 195
8.2.5 連線任務 196
8.2.6 運行任務 198
8.3 定義總線 200
8.4 更複雜的系統 201
8.5 測試事件驅動系統 204
8.6 小結 205
第9章 微服務與單體 207
9.1 單體架構 207
9.2 微服務架構 208
9.3 架構選擇 209
9.4 關鍵因素:團隊溝通 213
9.5 從單體遷移到微服務 216
9.5.1 遷移面臨的挑戰 216
9.5.2 四步驟遷移 218
9.6 服務容器化 224
9.6.1 建置並運行鏡像 226
9.6.2 建置並執行Web服務 228
9.7 容器編排與Kubernetes 236
9.8 小結 237
第三部分 實現
第10章 測試與TDD 241
10.1 程式碼測試 2