tags: DevOps
Common
- Development + Operations
- 重視「軟體開發人員(Dev)」和「IT運維技術人員(Ops)」之間溝通合作的文化、運動或慣例
- 開發者(包含軟體品質、測試人員)
- 維運人員(包含維護、系統架設人員)
- 反例
- DevOps
- 敏捷式開發(Agile Development)
- 精神:較短的開發循環(建立在反覆式開發方式上)以及漸進式開發與交付。專案的成果,包含計畫、各類的需求細節、設計等都會隨著專案的進行而漸漸完整,而非在一開始將所有的計畫與需求擬定完成
- 原則:
- 最為優先的事情是透過早期與持續交付有價值的軟體來使客戶滿意
- 歡迎需求的變動,即使是在開發的晚期
- 在開發團隊中最快也最有效的傳遞資訊方法就是面對面的溝通
- 專案發起者,開發人員以及使用者都必須持續的維持專案進度
- 在規律的反覆之間,團隊會反省與思考如何更有效率,然後相對的來調整與修正團隊的開發方式
- Scrum
- ScrumMaster(SM)
- 負責確認流程本身能運作的有效率
- ProductOwner(PO,產品負責人)
- WHAT
- 與顧客有密切連結的人,負責把顧客的回饋意見傳達給團隊
- DevelopmentTeam(DT,開發團隊)
- HOW
- ScrumMaster(SM)
- 持續整合 CI (Continuous Integration)
- 建置 (build)
- 測試 (test)
- 程式碼分析 (source code analysis)
- 其他相關工作
- 工具例如:Jenkins
- 持續發布 CD (Continuous Delivery & Continuous Deployment)
- 敏捷式開發(Agile Development)
工具
-
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.
- 消除浪費 (eliminate waste)
- Measurement
- 各種數據中產生有用的回饋
- 從開發到部署需要多長時間?
- 經常發生錯誤或失敗的頻率是多少?
- 系統出現故障後需要多長時間才能恢復?
- 各種數據中產生有用的回饋
- Sharing
- What are the goals?
- What are the current practices and flows?
- 例如:Scrum的各種活動
- 站立會議(團隊資訊同步)
- 待辦清單會議
- Sprint 衝刺檢視會議(軟體操作及feedback)
- 衝刺回顧會議(自省)
分類
- 實際用數據測量改進:Automation、Measurement
- Culture、Sharing
原點
- How to recreate your system
- 如何從原始碼變成可執行的軟體?
- 如何確定軟體已經是可發佈的品質?
- 如何備妥軟體的執行環境?
- 如何自動化上述事項?自動化到什麼程度?
- How to safely change your system
- 如何管控原始碼變更?
- 如何管控執行環境變更?
- 如何確定軟體變更後,仍然是可發佈的品質?
- 如何管控新版軟體的部署?
- 如何自動化上述事項?自動化到什麼程度?
- When something has gone wrong
- 如何知道系統出了狀況?
- 怎麼樣才叫做「系統出了狀況」?有哪些質化量化指標?
- 怎樣處理?
- 怎樣復原?
- 怎樣預防?
- 怎樣集中處理?
- 如何自動化上述事項?自動化到什麼程度?
沒有留言:
張貼留言