SL252 9787121341779 9787111562610 9787121316845
Python雲原生 構建應對海量用戶數據的高可擴展Web應用
《Python雲原生:構建應對海量用戶數據的高可擴展Web應用》以一個應用開發貫穿始終,從雲原生和微服務的概念原理講起,使用Python構建雲原生應用,並使用React構建Web視圖。為瞭應對大規模的互聯網流量,使用瞭Flux構建UI和事件溯源及CQRS模式。考慮到Web應用的安全性,《Python雲原生:構建應對海量用戶數據的高可擴展Web應用》對此也給齣瞭解決方案。書中對於關鍵步驟進行瞭詳細講解並給齣運行結果。讀者可以利用Docker容器、CI/CD工具,敏捷構建和發布本書示例中的應用到AWS、Azure這樣的公有雲平颱上,再利用平颱工具對基礎設施和應用的運行進行持續監控。
前言 XIII
1 雲原生應用和微服務簡介 1
雲計算簡介 2
軟件即服務 3
平颱即服務 4
基礎設施即服務 4
雲原生概念 5
雲原生為何物?為何重要 5
雲原生運行時環境 6
雲原生架構 6
理解十二要素應用 9
設置Python環境 11
安裝Git 11
安裝和配置Python 19
熟悉GitHub和Git命令 26
本章小結 27
2 使用Python構建微服務 29
Python概念解析 29
模塊 29
函數 30
微服務模型 31
構建微服務 32
構建user資源的方法 38
構建tweet資源的方法 47
測試RESTful API 52
單元測試 53
本章小結 56
3 使用Python構建Web應用 57
應用入門 58
創建應用程序用戶 59
使用Observable和AJAX 61
綁定數據到adduser模闆 63
用戶發送推文 65
在推文模闆上使用Observable和AJAX 67
綁定數據到addtweet模版 69
CORS——跨源資源共享 71
Session管理 72
Cookies 75
本章小結 76
4 與數據服務交互 77
MongoDB有什麼優勢,為什麼要使用它 77
MongoDB中的術語 78
安裝MongoDB 79
初始化MongoDB數據庫 80
在微服務中集成MongoDB 82
處理user資源 83
處理推文資源 90
本章小結 93
5 使用React構建Web視圖 95
理解React 95
配置React環境 96
安裝node 96
創建package.json 97
使用React構建webViews 98
在微服務中集成Web視圖 106
用戶驗證 109
用戶登錄 109
用戶注冊 111
用戶資料 114
用戶注銷 117
測試React webViews 117
Jest 118
Selenium 118
本章小結 118
6 使用Flux來構建UI以應對大規模流量 119
Flux介紹 119
Flux概念 120
在UI中添加日期 121
使用Flux創建UI 121
動作和分派器 122
數據源 125
本章小結 134
7 事件溯源與CQRS 135
簡介 136
理解事件溯源 138
事件溯源定律 140
CQRS介紹 142
CQRS架構的優點 144
事件溯源與CQRS麵臨的挑戰 145
應對挑戰 146
解決問題 146
使用Kafka作為事件存儲 151
使用Kafka做事件溯源 152
工作原理 154
本章小結 154
8 Web應用的安全性 155
網絡安全性和應用安全性 155
網絡應用棧 155
開發安全的Web應用程序建議 176
本章小結 176
9 持續交付 177
持續集成與持續交付的變遷 177
理解SDLC 177
敏捷開發流程 178
持續集成 180
Jenkins持續集成工具 182
安裝Jenkins 182
配置Jenkins 185
Jenkins自動化配置 188
Jenkins安全配置 189
插件管理 190
版本控製係統 191
設置Jenkins job 191
理解持續交付 198
持續交付的訴求 198
持續交付與持續部署 199
本章小結 199
10 應用容器化 201
Docker介紹 201
關於Docker和虛擬化的一些事實 202
Docker Engine——Docker的骨乾 202
配置Docker環境 203
Docker Swarm 206
在Docker中部署應用 210
構建和運行MongoDB Docker服務 211
Docker Hub是用來乾什麼的 214
Docker Compose 221
本章小結 223
11 部署到AWS雲平颱 225
AWS入門 225
在AWS上構建應用程序基礎架構 227
生成認證密鑰 229
Terraform——基礎設施即代碼構建工具 233
CloudFormation——構建基礎設施即代碼的AWS工具 244
雲原生應用的持續部署 251
工作原理 252
本章小結 259
12 部署到Azure雲平颱 261
Microsoft Azure入門 261
Microsoft Azure基本知識 263
在Azure中創建虛擬機 265
在Azure中使用Jenkins CI/CD流水綫 280
本章小結 285
13 監控雲應用 287
雲平颱上的監控 287
基於AWS的服務 288
CloudWatch 288
CloudTrail 293
AWS Config service 294
Microsoft Azure服務 296
Application Insights 296
ELK技術棧介紹 299
開源監控工具 305
Prometheus 305
本章小結 308
可伸縮架構:麵嚮增長應用的高可用
隨著互聯網的發展越來越成熟,流量和數據量飛速增長,許多公司的關鍵應用程序都麵臨著伸縮性的問題,係統變得越來越復雜和脆弱,從而導緻風險上升、可用性降低。本書是一本實踐指南,讓IT、DevOps和係統穩定性管理員能夠瞭解到,如何避免應用程序在發展過程中變得緩慢、數據不一緻或者不可用等問題。規模增長並不隻意味著處理更多的用戶,還包括管理更多的風險和保證係統的可用性。作者Lee Atchison 在可用性、風險管理、服務和微服務、擴展應用程序和雲服務方麵提齣瞭一些技巧,使得我們在構建各類應用程序時,既能夠保證産品的質量,又能夠處理海量的流量、數據以及需求。如果你管理著軟件開發人員、係統可靠性工程師、DevOps工程師,或者你經營著一個擁有大規模應用程序和係統的機構,本書中所提供的建議和指導都能夠幫助你,讓你的係統運行得更加平穩和可靠。
序. .......................... xv
前言. ......................xvii
第 1章 什麼是可用性... 2
可用性與可靠性 ............................................... 3
什麼導緻瞭低可用性 ....................................... 4
第 2章 提高應用程序可用性的五個要點......................................... 6
要點 1:時刻考慮應對故障 ............................. 7
要點 2:時刻考慮如何伸縮 ............................. 8
要點 3:緩和風險 ............................................ 9
要點 4:監控可用性 ...................................... 10
要點 5:以預測和確定的方式來應對可用性問題 ...................................................... 11
做好準備 ........................................................ 12
第 3章 測量可用性... 13
N個 9 14
什麼樣的可用性是閤理的 ...................... 14
不要上當 ........................................................ 14
通過數字來體現可用性.................................. 15
測試並跟蹤當前的可用性 .............................. 17
將手動流程自動化 ......................................... 17
自動化部署............................................. 18
配置管理 ................................................ 18
更改實驗和高頻次更改 .......................... 19
自動化的變更完備性測試 ...................... 20
改進你的係統 ................................................ 20
不斷變化和發展中的應用程序 ...................... 20
時刻關注可用性 ............................................. 21
第 5章 什麼是風險管理. .......................................................... 24
管理風險 ........................................................ 25
識彆風險 ........................................................ 25
消除最嚴重的風險 ......................................... 26
風險緩和 ........................................................ 26
定期檢查 ........................................................ 27
對風險管理的總結 ......................................... 27
第 6章 可能性與嚴重性. .......................................................... 28
10佳列錶:低可能性,低嚴重性 .................. 29
訂單數據庫:低可能性,高嚴重性 ............... 29
自定義字體:高可能性,低嚴重性 ............... 30
T恤圖片:高可能性,高嚴重性 ................... 31
第 7章 風險模型...... 32
風險模型的作用域 ......................................... 34
創建風險模型 ................................................ 34
通過頭腦風暴建立風險列錶 .................. 35
填寫可能性和嚴重性字段 ...................... 36
風險項詳情............................................. 37
觸發計劃 ................................................ 37
使用風險模型來製訂計劃 .............................. 37
維護風險模型 ................................................ 38
第 8章 風險緩和...... 40
恢復計劃 ........................................................ 41
容災計劃 ........................................................ 42
改進我們的風險狀況 ..................................... 43
第 9章 比賽日......... 44
預發布環境和生産環境.................................. 44
在生産環境中舉行比賽日的擔心 ................... 46
比賽日測試 .................................................... 47
第 10章 構建低風險係統......................................................... 48
冗餘 .. 48
冪等接口示例 ................................................ 49
增加瞭復雜性的冗餘改進 .............................. 49
獨立性 ............................................................ 50
安全 .. 51
簡單性 ............................................................ 51
自修復 ............................................................ 52
運維流程 ........................................................ 53
第 11章 為什麼使用服務. ......................................................... 56
單體應用程序 ................................................ 56
基於服務的應用程序 ..................................... 57
所有權收益 .................................................... 58
規模收益 ........................................................ 60
如何定義服務 ................................................ 63
深入瞭解服務 ......................................... 63
指導原則 1:特定的業務需求 ................ 63
指導原則 2:清晰和獨立的團隊所有權 . 64
指導原則 3:天然隔離的數據 ................ 65
指導原則 4:共享的能力 /數據 ............. 67
多種原因 ................................................ 67
過猶不及 ........................................................ 68
適當的平衡 .................................................... 69
第 13章 處理服務故障............................................................ 70
級聯式的服務故障 ......................................... 70
如何響應服務故障 ......................................... 71
可預測的響應 ......................................... 72
可理解的響應 ......................................... 73
閤理的響應............................................. 73
如何確定故障 ................................................ 74
適當的行為 .................................................... 76
優雅降級 ................................................ 76
優雅補償 ................................................ 77
盡早失敗 ................................................ 77
用戶導緻的問題 ......................
DevOps:軟件架構師行動指南
《DevOps:軟件架構師行動指南》從軟件架構師視角講解瞭引入DevOps實踐所需要擁有的技術能力,涵蓋運維、部署流水綫、監控、安全與審計以及質量關注。通過三個經典案例研究,講解在不同場景下應用DevOps實踐的方法,對於想應用DevOps實踐的組織提供切實的指導。
全書共五部分。一部分(第~3章)討論DevOps的背景,包括DevOps的目標和期望使用DevOps解決的問題、雲、運維等。第二部分(第4~6章)介紹部署流水綫,從功能性視角介紹部署實踐的內容,涵蓋微服務架構風格、構建和測試過程、工具鏈,以及具體的部署問題。第三部分(第7~10章)介紹橫切關注點,討論瞭計算監控、實時測試、安全與安全審計,以及部署流水綫的性能、可靠性、可修改性等。還介紹瞭業務關注點,包括為引進DevOps所需要準備的業務計劃的組成元素,以及如何進行論證、推齣和測量業務計劃。第四部分(第11~13章)描述3個案例研究:為瞭實現業務連續性如何維護兩個數據中心,管理一個持續部署流水綫,一個組織如何遷移到微服務架構上。第五部分(第14~15章)設想evOps的未來,介紹瞭目前的研究以及如何基於把運維視作一係列過程來進行,並給齣瞭3~5年內DevOps將如何發展的預測。
前言
第一部分 背 景
第1章 DevOps是什麼 …… 2
1.1 概述 …… 2
1.1.1 定義DevOps …… 2
1.1.2 DevOps實踐 …… 3
1.1.3 持續部署的例子:IMVU …… 5
1.2 為什麼是DevOps …… 5
1.2.1 發布過程 …… 5
1.2.2 配閤不佳的原因 …… 7
1.2.3 運維人員能力有限 …… 7
1.3 DevOps視角 …… 8
1.3.1 自動化 …… 8
1.3.2 開發團隊的職責 …… 9
1.4 DevOps與敏捷 …… 9
1.5 團隊結構 …… 10
1.5.1 團隊規模 …… 10
1.5.2 團隊角色 …… 10
1.6 協作 …… 13
1.6.1 協作的形式 …… 13
1.6.2 團隊協作 …… 14
1.6.3 跨團隊協作 …… 14
1.7 障礙 …… 15
1.7.1 文化及組織類型 …… 15
1.7.2 部門類型 …… 16
1.7.3 筒倉思維方式(Silo Mentality) …… 17
1.7.4 工具支持 …… 17
1.7.5 人員問題 …… 17
1.8 小結 …… 18
1.9 更多閱讀材料 …… 18
第2章 雲即平颱 …… 20
2.1 概述 …… 20
2.2 雲的特性 …… 21
2.2.1 虛擬化 …… 22
2.2.2 IP和域名係統管理 …… 23
2.2.3 平颱即服務 …… 25
2.2.4 分布式環境 …… 25
2.3 獨特的雲特性對DevOps的影響 …… 30
2.3.1 環境 …… 30
2.3.2 輕鬆創建虛擬機 …… 31
2.3.3 數據考量 …… 31
2.4 小結 …… 32
2.5 更多閱讀材料 …… 33
第3章 運維 …… 34
3.1 概述 …… 34
3.2 運維服務 …… 34
3.2.1 供給硬件 …… 34
3.2.2 供給軟件 …… 35
3.2.3 IT功能 …… 36
3.2.4 服務級彆協議 …… 36
3.2.5 容量規劃 …… 36
3.2.6 業務連續性和安全 …… 37
3.2.7 服務策略 …… 38
3.2.8 服務設計 …… 39
3.2.9 服務移交 …… 39
3.2.10 服務運維 …… 40
3.2.11 服務運維概念 …… 40
3.3 服務運維功能 …… 41
3.4 持續服務改進 …… 42
3.5 運維和DevOps …… 43
3.6 小結 …… 44
3.7 更多閱讀材料 …… 44
第二部分 部署流水綫
第4章 整體架構 …… 48
4.1 DevOps實踐是否需要架構調整 …… 48
4.2 架構結構總覽 …… 49
4.2.1 協作模式 …… 50
4.2.2 資源管理 …… 51
4.2.3 架構元素之間的映射 …… 52
4.3 微服務架構的質量 …… 52
4.3.1 可靠性 …… 53
4.3.2 可修改性 …… 54
4.4 團隊的亞馬遜規則 …… 55
4.5 現有係統的微服務方案 …… 56
4.6 小結 …… 56
4.7 更多閱讀材料 …… 57
第5章 構建與測試 …… 58
5.1 概述 …… 58
5.2 在部署流水綫中移動係統 …… 59
5.2.1 可追溯性 …… 59
5.2.2 環境 …… 60
5.3 橫切關注點 …… 61
5.4 開發及提交前測試 …… 63
5.4.1 版本控製與分支 …… 63
5.4.2 功能開關 …… 65
5.4.3 配置參數 …… 66
5.4.4 在開發和提交前測試中的測試 …… 67
5.5 構建與集成測試 …… 67
5.5.1 構建腳本 …… 67
5.5.2 打包 …… 68
5.5.3 持續集成與構建狀態 …… 69
5.5.4 集成測試 …… 70
5.6 用戶驗收測試/預發布/性能測試 …… 70
5.7 生産環境 …… 71
5.7.1 早期發布測試 …… 71
5.7.2 錯誤檢測 …… 72
5.7.3 現場測試 …… 72
5.8 事件 …… 73
5.9 小結 …… 73
5.10 更多閱讀材料 …… 74
第6章 部署 …… 75
6.1 概述 …… 75
6.2 部署管理的策略 …… 76
6.2.1 藍/綠部署 …… 76
6.2.2 滾動升級 …… 77
6.3 邏輯一緻性 …… 78
6.3.1 相同服務的多個版本同時存在 …… 78
6.3.2 兼容數據庫中保存的數據 …… 81
6.4 打包 …… 82
6.5 多環境部署 …… 84
6.6 部分部署 …… 86
6.6.1 金絲雀測試 …… 86
6.6.2 A/B測試 …… 87
6.7 迴滾 …… 87
6.8 工具 …… 89
6.9 小結 …… 90
6.10 更多閱讀材料 …… 90
第三部分 橫切關注點
第7章 監控 …… 94
7.1 概述 …… 94
7.2 監控什麼 …… 95
7.2.1 故障檢測 …… 96
7.2.2 性能下降檢測 …… 96
7.2.3 容量規劃 …… 97
7.2.4 用戶交互 …… 98
7.2.5 入侵檢測 …… 99
7.3 如何監控 …… 99
7.3.1 基於代理的監控和無代理的監控 …… 101
7.3.2 監控運維活動 …… 102
7.3.3 收集和存儲 …… 102
7.4 什麼時候變更監控配置 …… 103
7.5 解釋監控數據 …… 103
7.5.1 日誌 …… 104
7.5.2 繪圖和展示 …… 105
7.5.3 警報和警告 …… 105
7.5.4 診斷和反應 …… 106
7.5.5 監控DevOps過程 …… 106
7.6 挑戰 …… 107
7.6.1 挑戰1:持續變更下的監控 …… 107
7.6.2 挑戰2:自下嚮上與自上嚮下和在雲中的監控 …… 108
7.6.3 挑戰3:監控微服務架構 …… 109
7.6.4 挑戰4:處理大容量的分布式(日誌)數據 …… 109
7.7 工具 …… 109
7.8 從監控數據中診斷齣異常——Platformer.com的案例 …… 110
7.8.1 背景 …… 111
7.8.2 數據收集 …… 112
7.8.3 檢測異常 …… 112
7.8.4 思考 …… 113
7.9 小結 …… 113
7.10 更多閱讀材料 …… 114
第8章 安全與安全審計 …… 115
8.1 安全是什麼 …… 115
8.2 威脅 …… 117
8.3 需要保護的資源 …… 118
8.4 安全角色和活動 …… 120
8.5 身份管理 …… 122
8.5.1 認證 …… 123
8.5.2 授權 …… 125
8.6 訪問控製 …… 126
8.6.1 阻止訪問 …… 127
8.6.2 誰負責預防控製 …… 129
8.7 檢測、審計和拒絕服務 …… 129
8.8 開發 …… 130
8.9 審計者 …… 130
8.10 應用設計考慮 …… 131
8.11 部署流水綫設計考慮 …… 132
8.12 小結 …… 133
8.13 更多閱讀材料 ……
我必須承認,在拿到這套書之前,我對於“雲原生”和“DevOps”這些詞匯的理解,更多停留在概念層麵,甚至有些望而卻步。 感覺這些是那些大型互聯網公司纔玩得轉的高深玩意兒。但是,這本書打破瞭我的固有認知。它用一種非常務實的語言,將這些復雜的概念拆解開來,並且緊密地聯係到實際的軟件架構設計和實施過程中。我印象最深刻的是其中關於“可伸縮性”的討論,它不僅僅是講瞭如何通過增加服務器來應對流量高峰,更深入地探討瞭如何從設計之初就考慮係統的彈性和容錯性,如何在數據存儲、服務通信等各個層麵實現無縫的擴展。而DevOps的部分,它非常清晰地描繪瞭從代碼提交到部署上綫整個生命周期的自動化和協作流程,這對我理解如何構建一個高效、敏捷的研發體係非常有幫助。我感覺作者不僅僅是在傳授知識,更是在分享一種解決問題的思維方式,如何將理論付諸實踐,並取得實際的效果。對於我這樣身處技術一綫,需要解決實際架構問題的開發者和架構師來說,這套書無疑提供瞭一個非常寶貴的參考藍圖。
評分這本書簡直是給我的職業生涯注入瞭一劑強心針! 作為一個在傳統IT環境中摸爬滾打多年的架構師,麵對雲原生、微服務、DevOps這些日新月異的概念,我曾感到力不從心,甚至有些焦慮。然而,當我翻開這本書,那種迷茫感瞬間消散瞭。作者用一種非常貼近實際工作場景的方式,深入淺齣地剖析瞭這些熱門技術背後的邏輯和實操要點。我尤其喜歡它在講到可伸縮架構時,不是簡單羅列理論,而是結閤瞭大量的案例分析,讓我看到瞭如何在一個動態變化的雲環境中,設計齣能夠應對高並發、低延遲的健壯係統。書中對於DevOps理念的闡述,更是讓我明白瞭自動化、持續集成/持續交付不僅僅是工具的使用,更是一種文化和流程的轉變,它如何真正賦能團隊,提升開發效率和産品質量。對於我這種需要不斷學習和適應新技術的讀者來說,這本書就像一位經驗豐富的導師,為我指明瞭方嚮,提供瞭解決問題的思路和方法。它不僅僅是一本書,更像是一份詳細的行動指南,讓我更有信心去擁抱和駕馭這些前沿技術,推動我所在團隊和項目的轉型。
評分說實話,市麵上關於雲原生和DevOps的書籍不少,但真正能打動我、讓我覺得“學有所用”的卻不多。 這套書就屬於那種少數派。它最大的優點在於,不是那種堆砌大量術語、讓人雲裏霧裏的理論教材,而是將抽象的概念落地到具體的架構實踐中。我特彆喜歡它在講解可伸縮架構時,那種由淺入深的邏輯梳理,從最基礎的單體應用遇到的瓶頸,到微服務拆分帶來的挑戰,再到雲原生技術如何解決這些痛點,每一步都銜接得很自然。而且,書中對於DevOps的闡述,也讓我看到瞭一個更加全麵的圖景,不僅僅是CI/CD工具鏈,更是強調瞭團隊協作、文化變革以及全生命周期可觀測性。我感覺作者在寫作過程中,一定經曆瞭很多實際的架構挑戰,並將這些寶貴的經驗提煉齣來,分享給我們。這套書讓我對如何構建現代化、彈性和高效率的軟件係統有瞭更深刻的理解,也讓我對未來架構師的角色有瞭更清晰的認知。
評分我一直認為,作為一個軟件架構師,最重要的能力之一就是能夠理解並運用最新的技術趨勢,來構建齣能夠適應未來發展的係統。 這套書恰恰滿足瞭我的這一需求。它在“Python雲原生”方麵,不僅僅是簡單介紹Python在雲環境中的應用,更是深入探討瞭如何利用Python生態係統構建可伸縮、高可用的雲原生應用。而“可伸縮架構”的部分,它詳細講解瞭在分布式係統、微服務架構下,如何進行有效的資源管理、負載均衡以及故障轉移,這些都是構建彈性係統的基石。讓我驚喜的是,書中還花瞭不少篇幅來講述DevOps的理念和實踐,這讓我意識到,優秀的軟件架構不僅僅是技術層麵的設計,更需要與之配套的流程和協作模式。它教會我如何通過自動化、持續集成、持續交付等方式,加速軟件的迭代和上綫,從而更好地響應業務需求的變化。總的來說,這本書為我提供瞭一個非常係統和全麵的視角,來理解和實踐現代軟件架構的構建。
評分這本書給我最大的感受是,它真正解決瞭我在實際工作中遇到的痛點。 作為一名架構師,我經常需要麵對各種各樣的技術選型和係統設計問題,尤其是在雲原生和DevOps轉型的大背景下,如何構建一個真正具備彈性和高可用性的係統,一直是我的挑戰。這本書在這方麵給瞭我非常多的啓發。它詳細講解瞭可伸縮架構的設計原則和實踐方法,比如如何進行服務拆分、如何實現負載均衡、如何應對數據一緻性等問題。而且,它並沒有停留在理論層麵,而是結閤瞭大量的案例和實操建議,讓我能夠直接將學到的知識應用到實際項目中。關於DevOps的部分,它不僅僅是介紹瞭一些工具,更重要的是闡述瞭DevOps的文化和理念,以及如何通過流程的優化來提升團隊的效率和項目的交付速度。我感覺作者非常理解一綫架構師的睏境,並且用一種非常接地氣的方式,為我們提供瞭切實可行的解決方案。讀完這本書,我感覺自己的思路更加清晰,解決問題的能力也得到瞭顯著提升。
本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度,google,bing,sogou 等
© 2025 book.tinynews.org All Rights Reserved. 静思书屋 版权所有