如何以DevOps爲中心對架構進行變革,成功實施DevOps?數據庫
DevOps的核心要素編程
在DevOps土壤上,將當前業務與DevOps思想、方法和工具結合時,最好參照已有的最佳實踐模式來指導實踐活動。
這將會實現規避掉一部分可能的問題,主要的時間和精力不該該花費在一個又一個問題上。後端
The Twelve-Factor App緩存
- 使用標準化流程自動配置,從而使新的開發者花費最少的學習成本加入這個項目。 - 和操做系統之間儘量的劃清界限,在各個系統中提供最大的可移植性。 - 適合部署在現代的雲計算平臺,從而在服務器和系統管理方面節省資源。 - 將開發環境和生產環境的差別降至最低,並使用持續交付實施敏捷開發。 - 能夠在工具、架構和開發流程不發生明顯變化的前提下實現擴展。
微服務架構是一種將單個應用做爲一套小型服務來開發的方法。
微服務的9個特徵:服務組件化、以業務功能爲中心組織團隊、作產品的態度、服務端點、分佈式治理、分佈式數據管理、基礎設施自動化和容錯和演進式設計。
每一個小服務都以業務功能爲單位來構建,採用自動化部署機制進行獨立部署,並以獨立的進程運行,不一樣進程之間使用輕量HTTP資源API等方式進行通訊。
各個進程相互獨立,所以在保持最低限度的集中式管理前提下,每一個服務均可以採起不一樣的編程語言和存儲來實現。
簡而言之,微服務架構以業務功能爲單位把一個大的服務拆分爲多個小的進程,由這些小進程的集合構成一個完整的服務,能夠輕鬆地對各個小進程進行功能的添加、修改和重複使用等操做。
對應的在組織架構上,每一個單獨的進程是由包含不一樣技能人員的一個團隊來實現。服務器
顧名思義,其主要含義就是在基礎設施構建完成後就再也不進行任何變動。
若是想對環境進行操做時,須要先銷燬現有的基礎設施,而後再建立新的基礎設施。
也就是說,可以捨棄原有的基礎設施並能夠從零開始從新構建出和原來同樣的基礎設施。架構
其主要優勢負載均衡
須要特別關注的地方運維
藍綠部署是爲了解決傳統發佈方式的問題而出現的。編程語言
原理上,藍綠部署是經過冗餘來解決問題。分佈式
藍綠部署的切換速度快,即便發生故障,也能容易回退版本,幾乎不影響用戶的使用。
但也有一些限制,就是須要保持雙重的基礎設施,並且不適用於有狀態服務器。
DevOps的實現並不要求特定類型的環境,而是建議根據具體條件因地制宜。
本地部署
公有云
私有云
對於和服務不直接相關的非核心功能,能夠選擇基於互聯網服務來實現,完全削減非核心部分的成本。
例如,在持續集成範圍,就有CircleCI和Travis CI等。
若是SaaS服務提供的功能越重要,就越須要在使用以前進行嚴密的驗證並制定相應的應急計劃(災害、故障的應對計劃)
SaaS的好處
SaaS的缺點
在DevOps中,日誌除了被收集和存儲,還應該積極地用於分析。
在使用不可變基礎設施的狀況下,最爲理想的方式是實時進行日誌收集、處理和輸出展示。
使用ELK技術棧(Elasticsearch、Logstash和Kibana)、能夠快速完成日誌的傳輸、分析和可視化(信息的數值化和圖形化),有助於進行客觀的判斷。
經過持續地日誌分析和可視化,認真地對現狀加以思考和檢討,經過迭代式的改進最終達到長期的目標。
敏捷開發是一種經過改善開發方法和團隊結構,持續對最終成果進行改善的方法。
開發成功與否並不在因而否按計劃準時發佈了服務,而在於服務的的開發是否能應對變化,是否產生了商業價值。
在以迅速應對變化爲目標的敏捷開發中,計劃、設計、開發、測試以及發佈等相關工做均由一個小型團隊完成。
經過在短時間內不斷重複這一系列的工做,接受外界對服務和產品的反饋,從而持續進行改善。
全部成員都要對服務和產品負責,須要理解彼此的業務,天然而然地就造成了DevOps所須要的模式。
在軟件開發過程當中使用JIRA、Redmine和Trac等缺陷跟蹤系統或問題跟蹤系統,以ticket爲單位對問題、缺陷以及敏捷開發中的用戶故事等進行管理的方法。
做爲DevOps實踐的一個良好補充,解決了文檔式管理的信息分散問題,能夠支持從瀑布開發到Scrum開發。
在DevOps中,經過ticket爲單位進行信息共享以及任務管理,將會使內外部之間的協調變得簡單,信息也更易於集中管理。
在具體實現上,就是全部任務包括代碼改動都以ticket方式進行管理,與具體事項和相關人員進行關聯,同步更新狀態。
ticket中能夠包含各種日期、負責人、詳細內容和討論記錄等信息。
提供儀表盤功能(Dashboard),能夠從項目管理、工做量估算和進度管理等角度把握開發總體狀況。
基於Google長期的運維實踐經驗而提出,重點關注運維,能夠說SRE是DevOps中運維的一個更加具體的描述。
雖然網站可靠性的降低並不會直接阻礙商業價值的實現,但受阻的風險機率大幅提升。
SRE團隊要在資源有限的條件下保證SRE,技術難度很大,要求較高的改善技能。
提升SRE的主流方法與觀點
針對各類任務,經過即時通信工具來提升工做效率,確保團隊成員都可以實時瞭解其餘人的操做和系統當前的狀況。
通信工具能夠全部類型信息作集成,例如CI&CD工具、Web服務等。
Slack(聊天工具,可集成第三方工具)和Hubot(聊天機器人)是實現ChatOps的表明性組合。
使用ChatOps實現自動化與效率化
ChatOps的構成
ChatOps的階段