第一章 DevOps概述
什么是軟件開發
軟件開發是根據用戶要求建造出軟件系統或者系統中的軟件部分的過程。
軟件開發是一項包括需求捕捉,需求分析,實現和測試的系統工程
軟件開發有哪些困難?
軟件開發的本質困難
復雜性
不可見性
可變性
一致性
The Mythical Man-Month 人月神話Frederick P.Brooks.J:
對本質難題的進一步分析
三個本質難題因項目而異
四大本質難題相互促進
本質難題的變化帶動軟件方法(過程)演變
軟件項目管理和軟件過程管理
軟件發展三大階段
軟硬件一體化階段(50年代~70 年代)
?? 軟件完全依附于硬件
?? 軟件作坊
軟件成為獨立的產品(70年代~90年代)
網絡化和服務化(90年代中期迄今)
軟件完全依附于硬件
軟件應用典型特征
?? 軟件支持硬件完成計算任務
?? 功能單一
?? 復雜度有限
?? 幾乎不需要需求變更
·軟件開發典型特征
?? ◆硬件太貴
?? ◆團隊以硬件工程師和數學家為主
軟件作坊
·軟件應用典型特征?
?? 功能簡單
?? 規模小
·軟件開發典型特征
?? 很多非專業領域的人員涌入軟件開發領域
?? 高級程序語言出現
?? 質疑權威文化盛行
典型軟件過程和實踐
“Code and fix”
軟件成為獨立產品
軟件應用特征
?? 擺脫了硬件束縛(OS)
?? 功能強大
?? 規模和復雜度劇增
個人電腦出現 –> 普通人成為軟件用戶
?? ·需求多變
?? ·兼容性要求
來自市場的壓力
典型軟件過程和實踐
·方法之一:形式化方法
·方法之二:結構化程序設計和瀑布模型
網絡化和服務化
·軟件應用特征
?? ◆功能更復雜,規模更大用戶數量急劇增加(這會帶來什么問題?)
?? ◆快速演化和需求不確定
?? ◆分發方式的變化(SaaS)
典型軟件過程和實踐
迭代式:大型軟件系統的開發過程也是一個逐步學習和交流的過程,軟件系統的交付不是一次完成,|而是通過多個迭代周期,逐步來完成交付。
更深化的網絡化和服務化
軟件應用典型特征
?? 隨處可見(pervasive)
?? 用戶需求多樣性進一步凸顯
?? 軟件產品和服務的地位變化
?? 錯綜復雜的部署環境
近乎苛刻的用戶期望
多:功能豐富
快:快速使用,及時更新
好:穩定,可靠
省:用戶的獲得成本低,最好免費
·軟件開發典型特征
◆空前強大的開發和部署環境——XaaS
·IaaS
·PaaS
·SaaS,FaaS,etc.
盛行開源和共享文化
盛行敏捷
軟件工程的潛在支撐力量獲得了長足進步(AI, Bigdata,Cloud,etc.)
典型軟件過程和實踐—DevOps
·方法論基礎是敏捷軟件開發、精益思想以及看板 Kanban方法。
·以領域驅動設計為指導的微服務架構方式 大量虛擬化技術的使用
·一切皆服務XaaS(Xas a Service)的理念指導
·構建了強大的工具鏈,支持高水平自動化
The Three Ways-The First Way
·概念
?? 充分理解工作流(開發-運維客戶)
?? 流量最大化(小批量、縮小任務間隔、缺陷控制)
?? 不斷為了整體目標的實現而優化工作流
·部分關鍵實踐和方法
?? 持續構建、集成以及交付;
?? 按需創建環境;
?? 限制半成品(WIP);
?? 構建支持順利變更的安全系統;看板(任務可視化)
The Three Ways-The Second Way
概念?
?? 價值流(開發-運維-客戶)的快速持續反饋
?? 避免問題再次發生
??? (或者快速發現和修復)
?? 從源頭上保證質量
部分關鍵實踐和方法
?? 適時停止生產線
? 持續改進
?? 構建自動化測試套件,確保代碼隨時可部署
?? Dev和Ops共享目標和pain
?? 遠程監測手段(自動化)
The Three Ways-The Third Way
概念
?? ◆創建培育良好的文化(不斷嘗試、重復和練習)
部分關鍵實踐和方法
?? ◆營造勇于創新、敢于冒險以及高度信任的企業文化
?? 確保至少20%資源投入在非功能需求上
?? 不斷鼓勵和強化改進
總結
以上是生活随笔為你收集整理的第一章 DevOps概述的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 第二章 个体软件过程
- 下一篇: Devops 导论