DevOps 到底是什麼?
Ming-der Wang, 王銘德
資深顧問
集先鋒科技有限公司
Log4analytics.com
10/31/2020 Python Taiwan (讀書會)
7/29/2016 Taipei DevOps Meetup
2020年增訂版
DevOps
是一群人做事情的新方法:
有效率 - 快速的 iteration
有彈性 - 很容易 refactoring
有把握 - 持續 monitoring
- keep learning
傳統的軟體開發
一個網站專案做一年半
沒有規格, 客戶一直改想法
沒有版本控制, 反正沒人管
老闆只要看到成果, 不管怎麼做
客戶只管 UI, 不管背後穩不穩
程式會動就好, 不管對不對
QA 沒抓到 bug 就算了, 上架...
有問題, 重開機就好 (不找原因)
....
如何有效率?
(個人, 團隊, 工作)
<快速的 iteration>
溝通與工作效率
- 不要再用 email, 改用 slack
- 不要再用 meld, 改用 git diff
- 不要再用 GUI, 改用 cli
- 不要再用 ghost, 改用
chef-> vagrant, ansible + docker 就好 - 不要再手動裝軟體, 用 ansbile
- 不要再用 grep, 改用 ELK
- 不要再用 make, 改用 jenkins
- shell 不要再用 bash, 改用 zsh
- 當然不在用 login, ftp 改用 ssh
- 不要再用 windows, 改用 mac
- 不要再用你現在用的所有東西...
(開玩笑 der) -> 趕快學新的東西
還有...
- 不要再加班了, 早點下班, 參加社團, 學點新東西
- 把你英文學好, 多看
blogs
-> 現在看 medium
真的會有人還在用 ghost,
相信我 !!
軟體開發流程
一直重複 (iterate)
圖片參考: https://bkimg.cdn.bcebos.com/pic/5d6034a85edf8db18ab01af50323dd54574e7480?x-bce-process=image/watermark,image_d2F0ZXIvYmFpa2U4MA==,g_7,xp_5,yp_5
客戶的反饋
DevOps 產品開發流程的循環
程式 計畫 出貨 部署
build 測試 監看 維運
圖片來源 http://devclass.in/blog/10-of-the-best-devops-tools-for-infrastructure-automation-and-monitoring/
Dev Ops
開發團隊與工具之間的關係
如何有彈性?
(軟體設計)
<很容易 refactoring>
架構要
- 規格 features 化
- 程式要模組化
- 服務 microservice 化
- 前端要 component 化
- 後端要 API 化
- 測試環境虛擬化
- 使用環境雲端化
程式要
- 模組大小 (2 周內可以重構)
- 版本控制, 改用 git
- 測試自動化, 改用 jenkins
- 問題管理用 Jira, 或 gitlab...
- 安裝配置 docker 化
- logs all the time
- 寫 unit tests
- MVP(對產品規格的認知要有彈性)
出貨要
最簡可行產品 (MVP) 的概念
(英語:Minimum Viable Product, MVP)
圖片來源: https://tenten.co/blog/wp-content/uploads/2017/12/Making-sense-of-MVP-.png
* 部份機能的慨念是, 可用的最小部分, 例如要做一台可代步的東西, 分階段的設計應該是
而不是
如何有把握?
(掌握軟體品質)
<持續 monitoring>
除了測試
- 自動測試 unit tests
- 快速 regression tests
- 測試排程自動化
- CI/CD
- Integrating security testing and controls into the daily work of Development, QA and Operations.
還需要持續的監控
- 從開發過程開始, 就 logging
- 測試過程配合 logs, report 問題
- 利用 ELK, 協助 logs 集中收集與查詢, 一直用到維運, 客服都還可以用...
- 配合 performance 與 metric monitoring
- 自動化監控 production 運作情況, 善用 dashboard
- 連網物與資安都要監看
什麼是 CI / CD?
利用 ELK 監看日誌, 與效能
(ELK = Elasticsearch, Logstash, Kibana)
還有很多方法
* DataDog
* Splunk (很貴)
* 雲端供應商的 monitoring
(例如 Google monitoring)
* 等等
* 有時候也有 Cloud 的服務
(例如 Elastic Cloud)
很多工具
monitoring tools
Keep Learning
不斷得學習新東西
學會 docker, docker-compose 後,
再學 kubernetes
Install Docker
Install Vagrant
VirtualBox
Vagrantbox.es
偶而, 你還是會需要用部署 VMs
學會 shell 後再學 ansible
github.com
學 git 指令
常用 gist
至少申請一個 Cloud 帳號
Red Hat OpenShift
Ready to Rock
Q & A
DevOps 到底是什麼?
By Ming-der Wang
DevOps 到底是什麼?
- 1,999