DevOps - DevOps初解

1 - DevOps的含義

DevOps涉及領域普遍,其含義因人而異,在不一樣的理解和需求場景下,有着不一樣的實踐形式。
DevOps能夠理解爲是一個職位、一種組織形式、一套工具集合、一組過程與方法。
但從商業價值角度來講,DevOps是指經過Dev(開發)和Ops(運維)的緊密合做來實現和提升商業價值的工做方式和文化。
不只包括了新技術和新工具的使用,還包括相關的團隊組織建設和文化,實現持續改善的運維結構,以及開發流程設計等。
經過開發與運維之間的協做,可以消除對我的的依賴、減輕團隊之間的損耗,提升質量和開發速度,並經過互相理解來加強變動的靈活性,快速知足商業需求。安全

各類支撐DevOps的思想、改善對策和工具共同組成了DevOps,難以在普遍的場景中明確地指出DevOps實踐的準肯定義。
但一般都會包括實現「基礎設施即代碼」和組建適合DevOps的體制這兩部分。服務器

「基礎設施即代碼」是在DevOps實踐中支持開發和運維緊密合做的一個很是有效的方法。
「基礎設施即代碼」,能夠簡單理解爲:網絡

  • 將服務器、網絡設備等基礎設施的設置和架構代碼化、信息化,把軟件開發的開發模式應用到基礎設施運維中。
  • 全部基礎設施的構建、變動都根據其配置信息來進行,全部成員均可以訪問配置信息,對配置信息的更改也都如實地反應在基礎設置環境中。
  • 按照定義文件的要求來編寫和更改配置信息,使用測試工具對其進行測試,並將配置信息和代碼同樣進行版本管理。

組建適合DevOps的體制,運維團隊和開發團隊共享信息,在變動時互相審查,深刻了解對方的工做內容,進而理解並達成共識。
擁有共同的目的意識,雙方經過自主行動來不斷接近共同目標。架構

此外,DevOps是融合在業務中的持續性的改善和實踐,而不是爲了一次性完成全部的改善。運維

2 - DevOps的誕生與要素

2.1 兩個關鍵因素

理解傳統開發模式和敏捷開發模式的不一樣,以及各自的問題。工具

以敏捷開發爲表明的持續開發方式的出現

瀑布模型明確劃分了開發階段和各階段的產出物,沒法有效應對新增需求。
敏捷開發以小規模團隊爲前提,每次只發布最低限度的功能集,而後聽取反饋,進行持續改善。測試

持續開發帶來的運維問題

開發和運維之間的產生「混亂」:運維產生技術負債、抵觸變動和基礎設施不足,開發忽略非功能性需求,運維和開發逐漸「割裂和對立」。優化

2.2 應對變化

開發部門確保需求的實現,運維部門確保系統穩定、快速地運行,但最重要的根本任務是確保商業的有效性,商業價值的實現
經過工具和文化來支持開發和運維緊密合做,消除專業性和複雜性,減小工做量,同時使信息可視化,以此來下降變動帶來的風險。
團隊中任何成員均可以基於相同的信息迅速開展工做,同時經過自動化和持續集成來大幅縮短應對變動所須要的時間,高效知足商業需求。操作系統

工具所具有的要素

  • 抽象化:經過「標準化」或「虛擬化」來抽象化全部資源,消除不一樣平臺之間的差別,下降專業難度和複雜度
  • 自動化:經過自動化方式使用抽象化的資源,下降專業難度,減小開發、運維人員的工做壓力
  • 統一管理:經過統一的版本管理系統和溝通工具使信息可視化,構建開發和運維之間的緊密聯繫,進行有效的信息傳播和溝通
  • 即時溝通:經過互聯網通信工具和聊天機器人,增強點對點的聯繫和減小對敏感信息的反應時間
  • 持續集成與部署:統一開發部門和運維部門的開發及構建方法,一步式構建和部署,大幅提高系統改善的速度
  • 監控:對資源等信息進行集中管理和可視化,構建開發和運維的緊密合做關係

文化所具有的要素

文化的含義:尊重(Respect)、信任(Trust)、正確認識失敗(Healthy attitude about failure)和避免指責(Avoiding Blame)。設計

  • 目的意識:相同的目標,共同創造服務、迅速知足商業需求,更容易實現緊密合做。
  • 同理心:互相考慮對方的感覺,接受對方,創建緊密的關係
  • 自主思考:不互相依賴,能自主開展工做,以此來不斷接近共同目標

3 - DevOps的工具應用

3.1 抽象化

  • 操做系統:使用LXC(Linux Containers)實現的容器技術Docker
  • 物理服務器:虛擬機,在虛擬機上混合型部署和運行容器
  • 存儲:根據SDS(Software Defined Storage)思想用軟件和API來對虛擬化存儲進行控制
  • 網絡:VLAN(Virtual Local Area Network)、SDN(Software Defined Network)

3.2 自動化

基於REST API能夠根據指定的參數來進行自動化配置。
REST API能夠用URL表示資源,經過HTTP協議來獲取資源的狀態或者變動資源的配置。

3.3 統一管理

在設計上支持和外部系統進行集成,能夠將更新信息發送到外部溝通工具,也能夠直接共享URL來訪問指定的信息。

  • 問題跟蹤系統(Issue Tracking System, ITS):也被稱爲Ticket管理工具,例如JIRA、Redmine等
  • Wiki:保存設計文檔和會議記錄,例如Confluence和Redmine的Wiki

3.4 即時溝通

例如通用的WeChat、Skype等,面向企業的Cisco Jabber、Chatwork等。
將聊天機器人與聊天工具、業務系統集成,能夠代替部分的人工做業,提高反應速度。

3.5 持續集成與部署

除了開源的持續集成和部署工具Jenkins,還有云的持續集成工具服務,例如Circle CI和Travis CI。
在持續交付階段,可採用藍綠部署方法來確保部署的安全性。

3.6 監控

主流的監控工具主要是指Zabbix。

  • 實時把握資源的使用狀態和業務的運行狀態
  • 獲取和分析商業活動所需的數據,進行持續改善
  • 指標監控,對關鍵指標進行定量分析和優化

3.7 日誌分析

經過組合不一樣的中間件,能夠將日誌做爲監控信息來進行分析處理。

  • 用於日誌收集:Logstas
  • 從收集的日誌中檢索過濾信息:Elasticsearch
  • 將結果可視化:Kibana 以上三個中間件統稱爲ELK棧,是被普遍使用的主流組合。
相關文章
相關標籤/搜索