DevOps

 DevOps

於2015 成大資工F723000創業課程分享

1ee211172ad7e550d0f83987c842dbe0?s=128

Hsin Yi, Chen

March 24, 2015
Tweet

Transcript

  1. None
  2. picture from https://en.wikipedia.org/wiki/DevOps DevOps 是團隊⽂文化。

  3. picture from http://www.slideshare.net/CAinc/dev-ops-a- culturetransformationmorethantechnology? qid=447e66a2-9330-43aa-8e2c-8fb047508c8f&v=default&b=&from_search=6

  4. picture from http://www.slideshare.net/CAinc/dev-ops-a- culturetransformationmorethantechnology? qid=447e66a2-9330-43aa-8e2c-8fb047508c8f&v=default&b=&from_search=6

  5. 古早古早,蕃薯吃不飽 • 把程式碼放到伺服器上,這是 tarball。 • 安裝相依性是什麼? 怎麼安裝? • 哪⼀一個資料庫? •

    誒~ 我的電腦不能裝這個誒。 • RD: 奇怪,在我的電腦上裝正常誒。
  6. 營運 • 哪⽀支程式讓伺服器CPU過載? • 現在記憶體⽤用量多少? • 現在伺服器跑的是哪⼀一個版本的程式碼? • 現在有多少使⽤用者,伺服器頂得住嗎? •

    哎呀! debugging mode 怎麼開著! • 這⽀支程式誰寫的,網站噴Error了。
  7. 產品上線 • 上線很痛苦 • 網站跟伺服器架構是⼀一體兩⾯面的 • 程式碼可以在offline時做測試,⾃自動化 • 但伺服器架構呢? •

    沒⼈人喜歡上線,除了⽼老闆
  8. ⼈人⽣生七⼗十網站上線才開始 使⽤用者能挖掘出的Bug,遠⽐比上線之前你想像的多

  9. 開發與營運的對⽴立 • Dev A: 在我的電腦就正常,怎麼上線後就不正常 了,伺服器那邊有問題吧? • Ops: 我最近甚麼都沒改,只有上線的程式碼改了, ⼀一定是你的問題。

    問題出在哪? 開發端還是營運端?
  10. 使⽤用者與開發的對⽴立 • 上線之前: 花了三個⽉月開發的功能 • 上線之後: 使⽤用者說這是個Bug • ⽼老闆: OMG~

    趕快改⼀一改,趕快再上線!!!!!
  11. 產品上線要多久? • 1 台伺服器的時候 • 2 台伺服器的時候 • 10 台伺服器的時候

    • 100 台伺服器的時候 • 10000 台伺服器的時候!!!!!!
  12. 後 PASS 時代,加機器變快了 • AWS • Heroku • Windows Azure

    • GAE • Parse
  13. 但準備環境依舊花時間 • 產品程式碼要從哪邊拉? 哪⼀一版? 怎麼安裝? • 作業系統要裝哪些套件? • 設定檔怎麼改? •

    資料庫怎麼接? • 網路環境架構? • 伺服器狀態怎麼監控?
  14. 及早獲得回饋,及早治療 • 新功能做好了 • 使⽤用者喜歡嗎? 增加了多少使⽤用者? • 使⽤用者願意為了這個功能付錢嗎? • 沒多少⼈人想⽤用,趕快再下⼀一個開發週期趕快修正。

    • 有 Bug, 趕快修,避免流失使⽤用者。 • 時常出現更新,讓使⽤用者產⽣生新鮮感,繼續使⽤用產 品。
  15. DevOps 的⺫⽬目的 • 讓產品能持續不斷地提供更新,交付時程縮短。 • 從⽉月為單位轉成週為單位,甚⾄至是⼩小時為單位。 • ⺫⽬目的是盡量快點上線讓使⽤用者使⽤用,取得使⽤用者回饋 • 做為下⼀一次開發的決策依據。

    • 讓產品開發者專注在開發⼯工作上,⽽而不是環境設定。
  16. 怎麼達成?

  17. 無⽌止境的迴圈 picture from http://devana.rs/blog/devops-is-a-culture-not-a-job-description/

  18. Build Pipelines Software Build & Test Data Build & Test

    Infrastructure Build & Test OS Level Application Data
  19. 開發環境 • Version Control • Automated Build • Bugtracking •

    Continous Integration • Integrated testing • Automated Deployment • Version Control • Automated Build • Bugtracking • Continous Integration • Integrated testing • Automated Deployment For Devs For Ops
  20. Version Control 別想了,就先⽤用這個吧 picture from http://giscollective.org/github-bringing-geojson-to-life-since-2013/

  21. Continuos Integration • 程式碼要做版本控制 - git + github • 將開發中的程式碼跟上線中的程式碼分開

    - git flow • 正式上線的 branch 叫 master • 開發中的 branch 叫 develop • 每⼀一次有⼈人 commit 程式碼就跑⼀一次測試!!!!
  22. 程式碼測試 • 單元測試 • 針對 function, class 做測試 • 功能測試

    • ⾃自動化編譯 • 針對功能做測試
  23. Travis 可與 Github 無痛接軌 不需⾃自⼰己維護 容易設定 travis.com

  24. Continous Deployment • 伺服器, 網路架構安裝設定⾃自動化 • 讓開發環境, 測試環境, 線上環境保持⼀一致 •

    減少⼈人為失誤,增加安全性 • 容易備份, 容易升級 • ⾼高可靠性 - uptime 99.99! • 延展性 - 流量爆衝時, 是否能輕鬆延展架構 • 與軟體開發時⼀一樣,能確保異常可再交付前發現
  25. 安裝/設定⾃自動化 • 安裝100台電腦 • 修改1000個檔案 • 如果同時呢? • 你可以⽤用 •

    ansible, salt, puppet, chef
  26. 這些東⻄西簡單來說... • 包含 • 可重複被利⽤用的腳本 • 作業系統套件安裝 • 設定檔範本 •

    Shell Command • ⼀一些⼩小⼯工具 • 容易讓⼈人找到可重複利⽤用腳本的網路服務
  27. 環境⼀一致 • 讓運⾏行環境與程式碼可以被封裝起來 • 防⽌止發⽣生 • “A: 你的code我跑不起來誒”, B: “可是在我的電腦

    可以!” • 你可以使⽤用 • vagrant, docker
  28. picture from https://www.docker.com/

  29. picture from https://www.docker.com/

  30. 謝謝聆聽