DevOps 實踐

DevOps 實踐

《DevOps 實踐》 一書原作者【瑞典】Joakim Verona(約阿基姆·維羅納,譯者高清華、馬博文,由電子工業出版社2016年10月出版。

內容提要

《DevOps 實踐》介紹了DevOps 的起源和概覽,並通過一個貫穿全書的例子,從架構開始,到代碼的存儲、構建、測試、部署、監控,直至流程的跟蹤,推薦了許多可用的工具和可行的示範,是一本DevOps實踐方面不可多得的參考書籍。

《DevOps 實踐》面向願意承擔更大責任的開發人員和系統管理員,也很適合願意更好地支持開發人員的運維人員。無須任何DevOps 知識即可快速上手!

目錄

前言 XIII

1 DevOps 和持續交付簡介 1

DevOps 簡介 1

多快才算快? 3

敏捷之輪 4

敏捷不只是形式 5

DevOps 和ITIL(信息技術基礎架構庫) 7

總結 8

2 洞察全局 9

DevOps 流程和持續交付——概覽 9

開發人員 10

版本控制系統 12

構建伺服器 13

工件庫 13

包管理器 13

測試環境 14

預發布/生產 15

發布管理 15

Scrum、看板和交付流水線 16

圓滿結束——一個完整的例子 17

識別瓶頸 18

總結 18

3 DevOps 如何影響架構 19

介紹軟體架構 19

單塊系統場景 20

架構經驗法則 21

關注點分離 21

內聚原則 21

耦合 22

回到單塊系統場景 22

一個真實例子 22

三層系統 23

表示層 23

業務層 24

數據層 24

處理資料庫遷移 24

滾動升級 25

Liquibase 的Hello world 26

變更記錄檔案 27

pom.xml 檔案 27

手動安裝 29

微服務 30

小插曲——康威定律 31

如何保持服務接口向上兼容 32

微服務和數據層 33

DevOps、架構和彈性 33

總結 34

4 一切皆代碼 35

原始碼控制的必要性 35

原始碼管理歷史 36

角色和代碼 37

哪一個原始碼管理系統? 38

原始碼管理系統遷移之言 39

選擇分支策略 39

分支問題域 41

工件版本命名 42

選擇一個客戶端 43

創建一個基本的Git 伺服器 44

共享認證 45

託管Git 伺服器 45

大的二進制檔案 46

嘗試不同的Git 伺服器實現 47

中場休息,插播Docker 48

Gerrit 49

安裝git-review 包 49

歷史修正主義的價值 50

拉請求模型 52

GitLab 52

總結 54

5 構建代碼 55

我們為什麼要構建代碼 55

構建系統的各個方面 56

Jenkins 構建伺服器 57

管理構建依賴 60

最終工件 61

用FPM 取巧 62

持續集成 63

持續交付 64

Jenkins 外掛程式 64

託管伺服器 66

構建從機 66

主機上的軟體 67

觸發器 68

任務鏈和構建流水線 68

Jenkins 檔案系統結構概覽 69

構建伺服器和基礎設施即代碼 70

按依賴順序構建 70

構建階段 71

可選的構建伺服器 72

校驗質量指標 72

構建狀態可視化 73

嚴肅對待構建錯誤 74

健壯性 74

總結 75

6 測試代碼 77

人工測試 77

自動化測試的優缺點 78

單元測試 80

一般的JUnit 和特殊的JUnit 81

一個JUnit 的例子 82

Mocking 82

測試覆蓋率 83

自動化集成測試 84

在自動化測試中使用Docker 84

Arquillian 85

性能測試 85

自動化接受測試 86

自動化GUI 測試 88

在Jenkins 中集成Selenium 測試 89

JavaScript 測試 90

測試後端集成點 91

測試驅動開發 93

REPL(互動式命令行)驅動開發 93

一個完整的自動化測試場景 94

人工測試web 套用 94

運行自動化測試 97

查找缺陷 98

測試巡禮 98

用Docker 處理棘手的依賴 102

總結 103

7 部署代碼 105

為什麼有這么多的部署系統 105

配置基礎作業系統 106

描述集群 107

為系統交付包 107

虛擬化棧 109

在客戶端執行代碼 111

有關練習的注意事項 111

Puppet 伺服器和Puppet 代理 112

Ansible 113

PalletOps 117

用Chef 做部署 117

用SaltStack 做部署 118

從執行的模型來比較Salt、Ansible、Puppet 和PalletOps 120

Vagrant 121

用Docker 做部署 123

對比表 124

雲計算解決方案 124

AWS 125

Azure 126

總結 126

8 監控代碼 127

Nagios 127

Munin 134

Ganglia 138

Graphite 142

日誌處理 144

客戶端日誌類庫 145

ELK 147

總結 149

9 問題跟蹤 151

用問題跟蹤器做什麼? 151

工作流和問題的一些例子 152

我們需要從問題跟蹤器里得到什麼? 154

問題跟蹤器激增所帶來的問題 157

所有的跟蹤器 158

Bugzilla 158

Trac 164

Redmine 172

GitLab 問題跟蹤器 178

Jira 181

總結 183

10 物聯網和DevOps 185

IoT 和DevOps 簡介 185

從市場的角度看物聯網的未來 188

機器到機器的通信 190

物聯網的部署影響軟體架構 191

物聯網部署的安全性 191

好啦,但是DevOps 和物聯網有什麼關係? 192

DevOps 的物聯網設備動手實驗室 193

總結 199

作者簡介

Joakim Verona是一位擅長持續交付和DevOps的諮詢師。自1994年以來,在系統開發的所有方面他都曾工作過。他積極地在諸如web系統、多媒體系統和軟硬體混合系統等複雜的多層系統上做出了領導實踐者的貢獻。自2004年以來,他廣泛的技能興趣把他導向了新興的DevOps領域。

Joakim在林雪平理工學院完成了計算機科學的碩士學位。他也曾作為諮詢師工作在各種各樣的工業領域上,例如銀行和財務、電信、工程、印刷和排版,還有遊戲開發。他也對敏捷領域感興趣,是一位Scrum認證的敏捷教練、Scrum產品負責人並擁有Java認證。

【譯者介紹】

高清華:悅跑圈資深研發工程師。工作十多年以來,在簡潔代碼、自動化測試、持續集成、DevOps等方面都有著豐富的經驗。曾在ThoughtWorks任職多年,從事敏捷軟體開發、DevOps諮詢等工作。

馬博文,ThoughtWorks Senior Consultant,Senior DevOps,西安DevOps Meetup發起人。AWS Certified Solution Architect/Certified Developer。《Scala Cookbook》譯者。熟悉Web/Ruby/Java/Scala開發,目前專注DevOps,持續交付,容器技術,微服務,AWS等。

相關詞條

相關搜尋

熱門詞條

聯絡我們