Python雲原生:構建應對海量用戶數據的高可擴展Web應用
內容描述
本書以一個應用開發貫穿始終,從雲原生和微服務的概念原理講起,使用Python構建雲原生應用,並使用React構建Web視圖。為了應對大規模的因特網流量,使用了Flux構建UI和事件溯源及CQRS模式。考慮到Web應用的安全性,本書對此也給出瞭解決方案。書中對於關鍵步驟進行了詳細講解並給出運行結果。讀者可以利用Docker容器、CI/CD工具,敏捷構建和發布本書示例中的應用到AWS、Azure這樣的公有雲平臺上,再利用平臺工具對基礎設施和應用的運行進行持續監控。
目錄大綱
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
作者介紹
Manish Sethi是一名在印度班加羅爾工作的工程師。在他的職業生涯中,曾為初創公司和財富10強公司工作,幫助企業採用雲原生方法來構建大規模可擴展產品。他經常花時間學習和使用新技術,並積極地使用無服務器架構、機器學習和深度學習等方法解決實際問題。他還撰寫博客,在聚會上發表演講,從而為班加羅爾DevOps和Docker社區貢獻自己的所學。
譯者簡介
宋淨超,就職於螞蟻雲金融信息服務有限公司,Kubernetes與雲原生應用佈道者,Service Mesh社區聯合發起人。擁有多年的Hadoop大數據平台的運維管理經驗,熟悉Hadoop和Docker生態系統和PaaS平台,關注開源軟件及Docker 、Kubernetes的前沿發展,關注Kubernetes和TensorFlow的實踐。