基於Python的DevOps

《基於Python的DevOps》是2022年3月中國電力出版社出版的圖書。

基本介紹

  • 中文名:基於Python的DevOps
  • 出版時間:2022年3月
  • 出版社:中國電力出版社
  • 頁數:532 頁
  • ISBN:9787519864415
  • 裝幀:平裝
內容簡介,圖書目錄,作者簡介,

內容簡介

·Python基礎知識,簡單介紹語言特性。
·如何自動處理文本,編寫命令行工具和自動處理檔案系統。
·Linux實用程式、包管理、構建系統、監控、監測和自動化測試。
·雲計算、IaC、Kubernetes和Serverless。
·站在DevOps的角度探討機器學習和數據工程。
·構建、部署和最佳化一個機器學習項目。

圖書目錄

前言 . 1
第1 章 Python DevOps 基礎知識 11
1.1 安裝和運行Python 12
1.1.1 Python shell 12
1.1.2 Jupyter Notebooks13
1.2 過程式程式設計 13
1.2.1 變數 14
1.2.2 基本的數學運算 15
1.2.3 注釋 15
1.2.4 內置函式16
1.3 執行控制 17
1.3.1 if/elif/else .17
1.3.2 for 循環 .18
1.3.3 while 循環 20
1.4 處理異常 20
1.5 內置對象 21
1.5.1 對象是什麼 .21
1.5.2 對象的方法和屬性 22
1.5.3 序列 23
1.6 函式 .35
1.6.1 函式剖析36
1.6.2 函式是對象 .37
1.6.3 匿名函式38
1.7 使用正則表達式 39
1.7.1 搜尋 39
1.7.2 字元集合40
1.7.3 字元類 41
1.7.4 分組 41
1.7.5 具名分組42
1.7.6 查找所有42
1.7.7 查找疊代器 .42
1.7.8 替換 43
1.7.9 編譯 43
1.8 惰性求值 44
1.8.1 生成器 44
1.8.2 生成器推導 .45
1.9 更多IPython 功能 .46
1.9.1 在IPython 中運行UNIX shell 命令46
1.9.2 使用IPython 的魔法命令 47
1.10 練習題 .47
第2 章 檔案和檔案系統自動化處理 49
2.1 讀寫檔案 49
2.2 使用正則表達式搜尋文本 .59
2.3 處理大型檔案 .61
2.4 加密文本 62
2.4.1 哈希和hashlib 63
2.4.2 使用Cryptography 庫加密 63
2.5 os 模組 65
2.6 使用os.path 管理檔案和目錄 .67
2.7 使用os.walk 遍歷目錄樹 70
2.8 使用pathlib 處理路徑對象 71
第3 章 使用命令行 . 73
3.1 使用shell 73
3.1.1 使用sys 模組探知系統信息 73
3.1.2 使用os 模組處理作業系統 .74
3.1.3 使用subprocess 模組派生進程 .75
3.2 編寫命令行工具 77
3.2.1 使用sys.argv .79
3.2.2 使用argparse .81
3.2.3 使用click .85
3.2.4 使用fire 90
3.2.5 實現外掛程式系統 95
3.3 案例分析:使用命令行工具提速Python 96
3.3.1 使用Numba JIT 編譯器 97
3.3.2 通過Python CUDA 使用GPU 99
3.3.3 使用Numba 真正多核多執行緒運行Python 代碼 100
3.3.4 k 均值聚類算法 .101
3.4 練習題 .103
第4 章 Linux 實用程式 105
4.1 磁碟實用程式 106
4.1.1 衡量性能106
4.1.2 分區 .108
4.1.3 獲取特定的設備信息 109
4.2 網路實用程式 111
4.2.1 SSH 隧道 111
4.2.2 使用Apache Benchmark(ab)評測HTTP . 112
4.2.3 使用molotov 做負載測試 . 113
4.3 CPU 實用程式 . 116
4.3.1 CPU 實用程式簡介 116
4.3.2 使用htop 查看進程 . 116
4.4 使用Bash 和ZSH 118
4.4.1 自定義Python shell . 119
4.4.2 遞歸路徑模式匹配 120
4.4.3 搜尋和替換確認提示 120
4.4.4 刪除Python 臨時檔案 122
4.4.5 列出和篩選進程 122
4.4.6 UNIX 時間戳 123
4.5 Python 與Bash 和ZSH 混合使用 124
4.5.1 隨機密碼生成器 124
4.5.2 這個模組是否存在 125
4.5.3 進入模組所在的目錄 125
4.5.4 把CSV 檔案轉換成JSON 檔案 .126
4.6 Python 單行程式 .127
4.6.1 調試器 127
4.6.2 這段代碼的運行速度有多快 128
4.7 strace .129
4.8 練習題 .131
4.9 實操題 .132
第5 章 包管理 133
5.1 打包簡介 .134
5.1.1 打包的重要性 .134
5.1.2 何時不需要打包 134
5.2 打包準則 .135
5.2.1 恰當的版本號 .135
5.2.2 更改日誌136
5.3 選擇一種策略 137
5.4 打包方案 .138
5.4.1 Python 原生包 138
5.4.2 Debian 包 145
5.4.3 RPM 包 153
5.5 使用systemd 管理服務 160
5.5.1 長時間運行的進程 161
5.5.2 創建項目161
5.5.3 systemd 單元檔案 .163
5.5.4 安裝單元164
5.5.5 處理日誌166
5.6 練習題 .167
5.7 實操題 .168
第6 章 持續集成和持續部署 . 169
6.1 真實案例分析:把維護不善的WordPress 網站轉換成Hugo 169
6.1.1 設定Hugo .171
6.1.2 把WordPress 文章轉換成Hugo 文章 .172
6.1.3 創建並更新Algolia 索引 174
6.1.4 使用Makefile 編排流程 176
6.1.5 使用AWS CodePipeline 部署 .176
6.2 真實案例分析:使用Google Cloud Build 把Python 套用部署到
Google App Engine 中 178
6.3 真實案例分析:NFSOPS 185
第7 章 監控和日誌 187
7.1 構建可靠系統的關鍵概念 187
7.2 不可變的DevOps 原則 188
7.2.1 集中處理日誌 .188
7.2.2 案例分析:生產資料庫塞滿硬碟 .189
7.2.3 自建還是購買? 190
7.2.4 容錯 .190
7.3 監控 192
7.3.1 Graphite .192
7.3.2 StatsD .192
7.3.3 Prometheus 193
7.4 監測程式 .197
7.4.1 監測程式概述 .197
7.4.2 命名約定200
7.5 日誌 201
7.5.1 為什麼很難 202
7.5.2 basicconfig 202
7.5.3 深度配置203
7.5.4 常用模式208
7.6 ELK 棧 .209
7.6.1 Logstash .210
7.6.2 Elasticsearch 和Kibana .212
7.7 練習題 .215
7.8 實操題 .216
第8 章 pytest 在DevOps 中的套用 217
8.1 測試小鋼炮pytest 217
8.2 pytest 入門 .218
8.2.1 使用pytest 測試 218
8.2.2 與unittest 的區別 .220
8.3 pytest 特性 .222
8.3.1 conftest.py 223
8.3.2 出色的assert223
8.3.3 參數化 225
8.4 固件 226
8.4.1 入門 .227
8.4.2 內置固件229
8.5 基礎設施測試 231
8.5.1 什麼是系統驗證 232
8.5.2 Testinfra 簡介 .233
8.5.3 連線遠程節點 .233
8.5.4 特性和特殊固件 237
8.5.5 案例 .238
8.6 使用pytest 測試Jupyter Notebooks 241
8.7 練習題 .242
8.8 實操題 .242
第9 章 雲計算 243
9.1 雲計算基礎知識 .244
9.2 雲計算的類型 246
9.3 雲服務的類型 246
9.3.1 IaaS 247
9.3.2 MaaS 251
9.3.3 PaaS .251
9.3.4 Serverless 252
9.3.5 SaaS .255
9.4 IaC .256
9.5 持續交付 .256
9.6 虛擬化和容器 256
9.6.1 硬體虛擬化 256
9.6.2 SDN .257
9.6.3 SDS .257
9.6.4 容器 .257
9.7 分散式計算面臨的挑戰和機遇 258
9.8 雲時代Python 的並發、性能和進程管理 260
9.9 進程管理 .261
9.9.1 使用subprocess 管理進程 261
9.9.2 使用multiprocessing 庫解決問題 .263
9.9.3 使用Pool( ) 派生進程 264
9.9.4 FaaS 和Serverless 267
9.9.5 使用Numba 提升Python 的性能 267
9.9.6 使用Numba JIT 編譯器 .267
9.9.7 使用高性能伺服器 268
9.10 小結 269
9.11 練習題 269
9.12 實操題 270
第10 章 IaC 271
10.1 基礎設施自動化工具分類 272
10.2 手動配置 274
10.3 使用Terraform 自動配置基礎設施 .275
10.3.1 配置S3 bucket .276
10.3.2 使用ACM 配置SSL 證書 .279
10.3.3 配置Amazon CloudFront 分配 280
10.3.4 配置Route 53 DNS 記錄 283
10.3.5 把靜態檔案複製到S3 中 284
10.3.6 刪除使用Terraform 配置的所有AWS 資源 .285
10.4 使用Pulumi 自動配置基礎設施285
10.4.1 為AWS 新建一個Pulumi Python 項目 286
10.4.2 為過渡堆疊創建配置值 291
10.4.3 配置一個ACM SSL 證書 291
10.4.4 配置Route 53 區域和DNS 記錄 292
10.4.5 配置一個CloudFront 分配 .295
10.4.6 為網站的URL 配置一個Route 53 DNS 記錄 296
10.4.7 創建並部署一個新堆疊 297
10.5 練習題 300
第11 章 容器技術:Docker 和Docker Compose 301
11.1 Docker 容器是什麼 .302
11.2 創建、構建、運行及刪除Docker 映像和容器 .302
11.3 把Docker 映像發布到Docker 註冊處中 .306
11.4 使用相同的映像在不同的宿主機中運行Docker 容器 308
11.5 使用Docker Compose 運行多個Docker 容器 310
11.6 把Docker Compose 運行的服務移植到新主機和作業系統中 323
11.7 練習題 327
第12 章 容器編排:Kubernetes . 329
12.1 Kubernetes 相關概念簡述 330
12.2 使用Kompose 根據docker-compose.yaml 創建Kubernetes 清單 331
12.3 使用minikube 把Kubernetes 清單部署到本地Kubernetes 集群 .333
12.4 在GCP 中使用Pulumi 創建GKE Kubernetes 集群 349
12.5 把Flask 示例套用部署到GKE 中 352
12.6 安裝Helm chart Prometheus 和Grafana 359
12.7 銷毀GKE 集群 .364
12.8 練習題 365
第13 章 Serverless 技術 367
13.1 把同一個Python 函式部署到三大雲服務商中 .370
13.1.1 安裝Serverless 框架 .370
13.1.2 把Python 函式部署到AWS Lambda 中 .370
13.1.3 把Python 函式部署到Google Cloud Functions 中 373
13.1.4 把Python 函式部署到Azure 中 380
13.2 把Python 函式部署到自託管的FaaS 平台中 384
13.2.1 把Python 函式部署到自託管的PaaS 平台的優勢 384
13.2.2 把Python 函式部署到OpenFaaS 中 .385
13.3 使用AWS CDK 配置DynamoDB 數據表、Lambda 函式和
API 網關方法 .393
13.4 練習題 415
第14 章 MLOps 和機器學習工程 417
14.1 機器學習是什麼 417
14.1.1 監督型機器學習 .417
14.1.2 建模 420
14.2 Python 機器學習生態環境 423
14.2.1 Python 機器學習框架和生態系統 423
14.2.2 PyTorch 深度學習 424
14.3 機器學習雲平台 428
14.4 機器學習成熟模型 429
14.4.1 機器學習重點術語 .429
14.4.2 第1 層:問題構建、範圍界定和問題定義 430
14.4.3 第2 層:持續交付數據 431
14.4.4 第3 層:持續交付淨化數據 .432
14.4.5 第4 層:持續交付探索性數據分析 434
14.4.6 第5 層:持續交付傳統機器學習和AutoML 434
14.4.7 第6 層:機器學習運作反饋環 435
14.5 使用Docker 和Kubernetes 部署sklearn Flask 套用 435
14.5.1 EDA 440
14.5.2 建模 441
14.5.3 調整GBM 縮放 442
14.5.4 擬合模型 .443
14.5.5 評估 444
14.5.6 adhoc_predict 445
14.5.7 JSON 工作流 446
14.5.8 縮放輸入 .446
14.5.9 adhoc_predict 447
14.5.10 縮放輸入 448
14.6 練習題 448
14.7 實操題 449
14.8 學習評價 449
第15 章 數據工程 . 451
15.1 小數據 452
15.1.1 小數據與大數據 .452
15.1.2 處理小數據檔案 .452
15.2 寫檔案 453
15.3 讀檔案 453
15.4 使用生成器流水線逐行讀取和處理 453
15.5 使用YAML .454
15.6 大數據 455
15.7 大數據工具、組件和平台 457
15.7.1 數據源 .458
15.7.2 檔案系統 .458
15.7.3 數據存儲 .459
15.7.4 實時流式採集 460
15.8 案例分析:自製數據流水線 461
15.9 Serverless 數據工程 462
15.9.1 使用AWS Lambda 處理CloudWatch 事件 463
15.9.2 使用Amazon CloudWatch 日誌分析AWS Lambda 463
15.9.3 使用AWS Lambda 填充Amazon Simple Queue Service .464
15.9.4 連線CloudWatch 事件觸發器 468
15.9.5 創建事件驅動型lambda .469
15.9.6 從AWS Lambda 中讀取Amazon SQS 事件 .470
15.10 小結 .474
15.11 練習題 .475
15.12 實操題 .475
第16 章 DevOps 慘痛經驗和人物訪談 . 477
16.1 產不出電影的電影廠 .478
16.2 推不出遊戲的遊戲坊 .480
16.3 耗時60 秒才啟動的Python 腳本 .482
16.4 用快取和智慧型監測程式澆滅火情 483
16.5 自動化會讓你失業 484
16.6 DevOps 反模式 .485
16.6.1 反模式:沒有自動化構建伺服器 485
16.6.2 盲目行事 .486
16.6.3 協調難題不可避免 .486
16.6.4 沒有團隊合作 487
16.7 人物訪談 492
16.7.1 Glenn Solomon 492
16.7.2 Andrew Nguyen 493
16.7.3 Gabriella Roman .495
16.7.4 Rigoberto Roche .496
16.7.5 Jonathan LaCour .498
16.7.6 Ville Tuulos 500
16.7.7 Joseph Reis 502
16.7.8 Teijo Holzer 503
16.7.9 Matt Harrison 505
16.7.10 Michael Foord 507
16.8 一些建議 510
16.9 練習題 511
16.10 挑戰題 . 511
16.11 畢業項目 511

作者簡介

Noah Gift是西北大學和杜克大學研究生院數據科學專業與工程項目的講師和顧問。
Kennedy Behrman是一位資深顧問,專門為初創企業設計和實施雲解決方案。
Alfredo Deza是一位軟體工程師和開源軟體開發者,他重建了公司的基礎設施。
Grig Gheorghiu是一名程式設計師、研究實驗室主任、系統/網路/安全架構師和軟體測試工程師。

相關詞條

熱門詞條

聯絡我們