站長留言

  • ✅ 本站維護及更新歷史紀錄,詳情請參考公告
  • ✅ 有任何意見、想法,歡迎留言給Spicy知道喔
  • ✅ 固定於每周一至周五更新Blogger文章,周末不定期
DevOps

【Note】DevOps 概述

tags: DevOps

Common

  • Development + Operations
  • 重視「軟體開發人員(Dev)」和「IT運維技術人員(Ops)」之間溝通合作的文化、運動或慣例
    • 開發者(包含軟體品質、測試人員)
    • 維運人員(包含維護、系統架設人員)
  • 反例
    • 瀑布式開發
    • biz:business



  • DevOps
    • 敏捷式開發(Agile Development)
      • 精神:較短的開發循環(建立在反覆式開發方式上)以及漸進式開發與交付。專案的成果,包含計畫、各類的需求細節、設計等都會隨著專案的進行而漸漸完整,而非在一開始將所有的計畫與需求擬定完成
      • 原則:
        • 最為優先的事情是透過早期與持續交付有價值的軟體來使客戶滿意
        • 歡迎需求的變動,即使是在開發的晚期
        • 在開發團隊中最快也最有效的傳遞資訊方法就是面對面的溝通
        • 專案發起者,開發人員以及使用者都必須持續的維持專案進度
        • 在規律的反覆之間,團隊會反省與思考如何更有效率,然後相對的來調整與修正團隊的開發方式
      • Scrum
        • ScrumMaster(SM)
          • 負責確認流程本身能運作的有效率
        • ProductOwner(PO,產品負責人)
          • WHAT
          • 與顧客有密切連結的人,負責把顧客的回饋意見傳達給團隊
        • DevelopmentTeam(DT,開發團隊)
          • HOW
    • 持續整合 CI (Continuous Integration)
      • 建置 (build)
      • 測試 (test)
      • 程式碼分析 (source code analysis)
      • 其他相關工作
      • 工具例如:Jenkins
    • 持續發布 CD (Continuous Delivery & Continuous Deployment)

工具


  • Git - Feature Branch Workflow


  • SVN - Distributed Development


CALMS

  • Culture
    • 開發寫程式時,把設定檔設計的非常適合維運人員管理
    • 導入一些套件管理工具,維運可以支持並配合上線
  • Automation
    • 產生可重複的流程
      • unit testing
      • acceptance testing
      • CI
    • 開發人員努力創建模塊化,可組合的應用程序
  • Lean
    • 消除浪費 (eliminate waste)
      • Dev 與 Ops 間的衝突
    • 盡量延遲決策 (decide as late as possible)
      • 很多資訊在 Dev 階段是無法確定的,常需要到了 Ops 階段、或上線階段才能確定,如資料庫連線資訊、業務管理者密碼等
      • 保留給 Ops / 業務人員修改,如環境變數或後台管理介面
    • 盡快交付 (deliver as faster as possible)
    • 定期回顧及A/B testing
    • Our engineers are responsible for QA, writing, and running their own tests to get the software out to customers.
  • Measurement
    • 各種數據中產生有用的回饋
      • 從開發到部署需要多長時間?
      • 經常發生錯誤或失敗的頻率是多少?
      • 系統出現故障後需要多長時間才能恢復?
  • Sharing
    • What are the goals?
    • What are the current practices and flows?
    • 例如:Scrum的各種活動
      • 站立會議(團隊資訊同步)
      • 待辦清單會議
      • Sprint 衝刺檢視會議(軟體操作及feedback)
      • 衝刺回顧會議(自省)

分類

  • 實際用數據測量改進:Automation、Measurement
  • Culture、Sharing

原點

  1. How to recreate your system
    • 如何從原始碼變成可執行的軟體?
    • 如何確定軟體已經是可發佈的品質?
    • 如何備妥軟體的執行環境?
    • 如何自動化上述事項?自動化到什麼程度?
  2. How to safely change your system
    • 如何管控原始碼變更?
    • 如何管控執行環境變更?
    • 如何確定軟體變更後,仍然是可發佈的品質?
    • 如何管控新版軟體的部署?
    • 如何自動化上述事項?自動化到什麼程度?
  3. When something has gone wrong
    • 如何知道系統出了狀況?
    • 怎麼樣才叫做「系統出了狀況」?有哪些質化量化指標?
    • 怎樣處理?
    • 怎樣復原?
    • 怎樣預防?
    • 怎樣集中處理?
    • 如何自動化上述事項?自動化到什麼程度?

Reference

  1. Udacity
  2. DevOps 介紹
  3. https://william-yeh.net/post/2015/12/devops-1st-step/.
  4. https://blog.91app.com/continuous-integration-delivery/
  5. Scrum

沒有留言:

張貼留言

本網站建議使用電腦或平板瀏覽