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)

* New Relic

* 等等

* 有時候也有 Cloud 的服務

   (例如 Elastic Cloud)

很多工具

* Elasticsearch, Logstash, Kibana (有免費版本)

* Grafana

* Prometheus

* Fluentd

 monitoring tools

Keep Learning

不斷得學習新東西

學會 docker, docker-compose 後,

再學 kubernetes

Install Docker

Install Vagrant

VirtualBox

Vagrantbox.es

偶而, 你還是會需要用部署 VMs

學會 shell 後再學 ansible

其他看公司用哪一種

chef, puppet, Saltstack

github.com

學 git 指令

常用 gist

至少申請一個 Cloud 帳號

Red Hat OpenShift

Ready to Rock

Q & A

DevOpsTaiwan.slack.com 討論問題

http://devopstaiwan.com/ 入口網站

改用 https://t.me/python_taiwan