Cheng Wei Chen @台灣軟體工程學會 - 台灣軟體的生命力 III - DevOps 的產業實務作法圖片來來源: http://finda.photo/image/11418
以自動化先行之
DevOps實踐經驗分享
Cheng Wei Chen 陳 正瑋
http://chengweichen.com
https://devopsdays.tw/cfs
https://devopstw.club
Call for Speakers & Sponsors
Photo by Xenia Bogarova on Unsplash
先說個故事吧
老闆:「⼩小陳,我最
近聽說外⾯面有⼀一個叫
做 DevOps 的技術似乎
很熱⾨門!」
⼩小陳:「!?!?!?」
老闆
小陳
Photo by Pascal van de Vendel, Niko Lienata on Unsplash
老闆:「所以從明天
開始,你就是公司的
DevOps 負責⼈人!」
⼩小陳:「!?!?!?!?!?!?!?」
老闆
小陳
!?
Photo by Pascal van de Vendel, Niko Lienata on Unsplash
老闆:「從下⼀一季開
始,你要讓所有⼈人全
⾯面善⽤用⾃自動化,全體
⼯工作效率要提升 2 倍
以上!」老闆
!?!?!?!?!?
小陳
Agenda
1 DevOps 與自動化的誤解
2 自動化的誤區
3 案例分享
4 結語
誤解⼀一:DevOps 即是 CI / CD
Photo by NeONBRAND on Unsplash
持續整合 CI
Continuous Integration
1999 年年
持續交付 CD
Continuous Delivery
2010 年年
持續交付 2.0
Container、
Cloud Native…
老闆:「所以我們公
司何時能導入完畢
DevOps 的 CI / CD 呢?」
老闆
小陳
「早在三年年前就導入了了」
Photo by Pascal van de Vendel, Niko Lienata on Unsplash
誤解⼆二:DevOps 即是 Automation
Photo by NeONBRAND on Unsplash
最常見、最糟糕的一種誤解
Photo by Kelly Sikkema on Unsplash
Photo by Cesar Carlevarino Aragon on Unsplash
認為 DevOps 不過是引入
某種工具或解決方案。
老闆:「從下⼀一季開
始,你要讓所有⼈人全
⾯面善⽤用⾃自動化,全體
⼯工作效率要提升 X 倍
以上!」老闆
到底是故事?還是真實案例例?
誤解三:DevOps 即是銀彈與特效藥
Photo by NeONBRAND on Unsplash
Photo by Cesar Carlevarino Aragon on Unsplash
認為 DevOps 在短期之內
就能產生巨大的成效
即對、也錯
品質不佳的⾃自動化腳本
違章建築的⾃自動化流程
千瘡百孔的⾃自動化平台
Photo by Paweł Czerwiński on Unsplash
圖片來來源: https://www.offworlddesigns.com/game-over-t-shirt/
死亡⼭山⾕谷
Agenda
1 DevOps 與自動化的誤解
2 自動化的誤區
3 案例分享
4 結語
理想與現實的差距
會遇到的坑,比想像的多
Oooops
誤區⼀一:⽋欠缺全局觀
Photo by Branden Tate on Unsplash
Step7 Step8
Step3 Step4
Step6
Step2
Step1 「局部優化」能提供
的助益有限
Step5
需具備
全局觀
從
瓶頸點
著⼿手
Photo by Saketh Garuda on Unsplash
在「非瓶頸點」省下的每
個小時都是虛幻的。
高德拉特博士
code build test release deploy operateplan
Continuous Integration
Continuous Delivery
Automation
你會從何處著手?
Continuous Deployment
CIcommit dev stagingtest
testprod deploy
environment
dev
staging
prod
local
Infrastructure
as
Code
老闆:「快提升效率,
讓⾃自動化可以做到每
⼩小時部署10次!」
老闆
小陳
「老闆,可是我們每個⽉月
才出⼀一個新版本。」
Photo by Pascal van de Vendel, Niko Lienata on Unsplash
誤區⼆二:技能喪失、埋下危機
Photo by Branden Tate on Unsplash
⾃自動化
導致喪失
專業技能
Photo by Ahmed zayan on Unsplash
開發⾃動化控制系統的設計⼈員,努
⼒彌補⼈為執⾏的不可靠性,卻在不
知不覺中創造了導致新錯誤的機會,
這個錯誤甚至可能比他們原本極⼒避
免的更加嚴重。
—James Reason
老闆:「⼩小陳,我忘
記要如何 ssh 登入伺
服器了了!」
老闆
小陳
「誰叫你都只會按下按鈕」
Photo by Pascal van de Vendel, Niko Lienata on Unsplash
誤區三:喪失靈活性
Photo by Branden Tate on Unsplash
應用程式所需的 environment?
Deploy
自動化之前
如何取得 Artifacts?
是否有其他初始化的動作?
如何因應「部署失敗」?
如何連上主機? 需要額外的組態管理?
如何因應「重新部署」?
x2 x5 x3
x6x5
x3 x2
應用程式所需的 environment?
Deploy
自動化之後,過度標準化
如何取得 Artifacts?
是否有其他初始化的動作?
如何因應「部署失敗」?
如何連上主機? 需要額外的組態管理?
如何因應「重新部署」?
x1 x1 x1
x1x1
x1 x1
• ⾃自動化腳本能兼容遺
產與新專案?
• ⾃自動化平台能兼

Monolith Architecture 與
Microservices Architecture?
Photo by Paweł Czerwiński on Unsplash
誤區四:⽋欠缺維護性、可配置性
Photo by Branden Tate on Unsplash
⾃自動化腳本不只要能
運⾏行行
還要能
長長久久
Photo by Marco Secchi on Unsplash
50%
傳統 Ops
https://landing.google.com/sre/book.html
50%
研發/改善
Automation 需要
持續維護 與 維運
Photo by rawpixel on Unsplash
老闆:「為何你們導
入⾃自動化後,⼿手上還
有⼀一堆⼯工作?」
老闆
小陳
「你以為⾃自動化腳本不⽤用經
過 CI / CD / Code Review 嗎?」
Photo by Pascal van de Vendel, Niko Lienata on Unsplash
誤區五:⼯工具決策優先
Photo by Branden Tate on Unsplash
⼯工具與技術決策?
技術及工具的決策?
Add or Delete AWS DNS (Route 53)
• 團隊主要的技術棧為 php
• 擅長串串接 API 與第三⽅方服務
• 剛開始採⽤用 Ansible
• 預定建立內部的⾃自動化管理理平台
AWS SDK for Python
Ansible Module - AWS Module
AWS SDK for PHP
人們並不抵制改變,
他們抵制的是被改變。
—— Linda Rising
Photo by Sasha Freemind on Unsplash
並非新
技術
⽽而是⼀一套需要
持續實現的
實踐⽅方法
工具 = 文化的加速器
工具決策與組織文化有關
康威定律與工具
老闆:「我鄭重宣布
從明天開始,所有員
⼯工⼀一律律都只能使⽤用⼯工
具 A!」
老闆
小陳
「為什什麼不選 B?」
「我跟⼩小城溝通都⽤用 C,

跟⼩小盧協作都⽤用 D。」
Photo by Pascal van de Vendel, Niko Lienata on Unsplash
Agenda
1 DevOps 與自動化的誤解
2 自動化的誤區
3 案例分享
4 結語
案例例⼀一:嵌入式裝置之公司
Photo by Branden Tate on Unsplash
產
品
專
案
多
⽽而
雜
硬體組態配置 程式總數量量多 產品維護期長
困境
開發 維運
從單一專案之流水線開始
產出物、組態配置儲存庫
發佈自動化整合測試
自動化組態配置
自動化建置測試環境
監控提
升
產
品
的
靈
活
性
更更
彈
性
的
組
態
配
置
自動化
自動化
自動化
自動化
自動化
複製經驗至其他專案
開發
驗證
整合
測試
打包
交付
反饋
迭代
產品
設計
持續改善
自動化成效 產品設計 架構設計
案例例⼆二:網站開發公司之案例例
Photo by Branden Tate on Unsplash
困境
Dev Ops / Infra
Support
小型
網站
CMS API
路由器
交換器
實體機
虛擬機需要大量伺服器,不同環境需求 Support
困境
Dev Ops / Infra
Support
小型
網站
CMS API
路由器
交換器
實體機
虛擬機需要大量伺服器,不同環境需求 Support
開發:
老闆等著看,
伺服器好了了沒?
維運:
都忙你要的,
其他⼯工作
都不要做了了
實踐過程
Ops / Infra
IaC
虛擬化 / 容器化
SOP / 標準化
自動化平台
工單管理 / 追蹤
自動化建置伺服器
自動化建置鏡像
API
Dev
自動建置環境
ChatOps
Dev Ops
開始研發
自家的
自動化維運平台
人/文化
流程 技術/工具
自動化成效
跨部門協作
產品研發
Agenda
1 DevOps 與自動化的誤解
2 自動化的誤區
3 案例分享
4 結語
Photo by Sven Scheuermeier on Unsplash
Automation
是個
老把戲
老狗也可以變出新把戲
Photo by Valerie Elash on Unsplash
Automation
圖片來來源: http://finda.photo/image/11418
工程師 自動化
⼜又懶懶,⼜又有⽣生產⼒力力的⼀一群⼈人
圖片來來源: http://finda.photo/image/11418
反思,Automation?
自動化 / 工具對於你的意義為何?
圖片來來源: http://finda.photo/image/11418
1. 沒有自動化,純手動。
2. 個人自行使用與維護系統特定用途之
腳本、程序、服務。
3. 多人共同維護共用之特定用途的腳本、
程序、服務。
4. 半自動觸發、執行的自動化平台。
5. 全自動、無需人為介入的自動化平台
(甚至具備自癒能力)。
Automation 的演進
50%
傳統 Ops
https://landing.google.com/sre/book.html
50%
研發/改善
建議與結語
LEAN
• 建立全局觀
• 從瓶頸點著⼿手
• 消除價值流中的浪費
• ⾃自動化⼀一切值得⾃自動化之處
• 萬物皆程式碼
• 重視維護性、可配置性
• 敏捷 Agile
• 重視靈活性與標準化的取捨
建議與結語
軟體工程
• 建立灘頭堡
• 康威、逆康威定律律
• 重視⼯工具之於⼈人的價值
• 失敗的是流程,不是⼯工具
• 反饋、持續改善
建議與結語
文化
• Automation 絕對是 DevOps 的重要關鍵。
• ⾃自動化是⼀一種⼒力力量量倍增器,但不是銀彈。
• 萬物皆程式碼,優良的軟⼯工能⼒力力⽇日趨重要。
• 以 Automation 先⾏行行是可⾏行行的,但⽂文化、價值
觀的轉變要跟上腳步。
• DevOps 需要持續監測、持續反饋、持續改進。
Key Takeaways
工商服務
https://devopsdays.tw/cfs
https://devopstw.club
Call for Speakers & Sponsors
參參與社群,與⼈人互動
安全、開放、熱情
圖片來來源: https://unsplash.com/@saksham?photo=YVgOh8w1R4s
Open your mind, Move your body
Photo by Clark Tibbs on Unsplash
Thank You

以自動化先行的 DevOps 實踐經驗分享