DevOps實踐一:DevOps概述

2021-02-13 OneAndZero
0. 前言

DevOps系列文章包含了本人在工作中的實踐和認知理論,現總結並分享出來,希望能夠給「迷你型」團隊在DevOps上的實踐提供一個「反面教材」和可行性建議。

本系列主要包含以下文章(過程中可能也會有所更改):

1. DevOps 的產生

人類曾有長達250萬年的時間靠採集及狩獵維生,並不會特別幹預動植物的生長情形。直立人、匠人或是尼安德特人都會採集野無花果、獵捕野綿羊,但不會去管究竟無花果樹該長在哪,羊該在哪片草地吃草,又或是哪只公羊該跟母羊交配。

這段話摘錄自《人類簡史》,之所以引入這段話,是因為運維技術的發展也可以類比到人類的發展史。運維在很長的時間內,都是在靠「人肉」來提供運維能力,即使是發展到現在,依然如此。雖然國內外有很多大公司,在這方面已經走在前沿並且輸出了一些實踐經驗,但是運維進化的過程還有很長一段路要走。畢竟這世界上,更多的是小公司、小團隊。

2009年,Patrick Debois發起了一個名為DevOpsDays的會議,始於比利時,現已經傳播到多個國家。術語DevOps現在已經在多種情況下使用。Bass, Weber和Zhu提出的定義是:

DevOps是一組旨在保證高質量的同時,減少將更改提交到系統和將更改放入正常生產之間的時間的實踐。

通俗點來說,DevOps的目的在保證高質量的同時減少發布流程的總耗時。然而, 這一點真的這麼重要嗎?



2. 為什麼需要DevOps?

我相信幾乎所有的開發、測試、運維都聽過敏捷軟體開發,有的公司也是採用這種模式來進行產品的快速迭代,以此驗證產品的可行性,快速搶佔市場、拿到更多投資;或提供更多的功能給用戶使用;或修復軟體Bug解決用戶的抱怨。快速迭代意味著產品需要頻繁的部署上線,這也就意味著研發、測試、運維團隊必須克服這種頻繁上線帶來的諸多問題:研發質量低;測試不充分,上線後Bug層出不窮;運維上線部署慢、跟不上研發的節奏,經常由於環境、配置等問題導致應用不能正常提供服務等等等等。

一方面公司希望快速將產品交付給用戶使用,另一方面技術人員又害怕這種快速交付,畢竟越快越容易出問題,而且壓力大(身上背了很多鍋)。

正是在這種背景下,DevOps應運而生。為研發、測試、運維團隊提供了理論性指導。

3. DevOps模式定義

AWS對DevOps模式做了一個完整的定義,我個人也是傾向於此:

DevOps集文化理念、實踐和工具於一身。可以提高組織交付應用程式和服務的能力。與使用傳統軟體和基礎設施管理流程相比,能夠幫助組織更快的發展和改進產品。這種速度使組織更好的服務其客戶,並在市場上高效的參與競爭。

DevOps文化的宗旨就是為了消除團隊之間的壁壘。因此,DevOps的文化理念決定了開發、測試、運維團隊不再是一個孤立的團隊。彼此之間需要增強合作,成為一個高效的團隊。

通過DevOps的定義我們可以一窺其優勢:

這些優勢會在後續文章中不斷地體現出來。



4. 應用發布流程

在介紹DevOps實踐時,我們需要先探討一下應用發布流程。我簡單的畫了一個圖:

有的公司可能還有預發布環境,但是該圖應該能反應大部分公司的整個發布流程。



5. DevOps實踐

由於DevOps是一種跨職能(開發、測試、運維)的工作模式,不是一個單獨的DevOps工具,因此DevOps作為工具時,它包含了多個工具,形成了一個完整的工具鏈。結合個人經驗,這裡先做一個簡單的概括,後續文章會將這些進行詳解介紹。

對照上面的發布流程中,我舉出每個環節所使用的常用工具:

代碼倉庫,用於存儲程序源文件的地方。如:GitLab,Github

構建,這是一個持續集成工具,用於編譯、打包程序,運行單元測試 如:Jenkins

測試,提供有關業務風險反饋的連續測試工具。 如:Selenium

發布,快速上線部署,自動化發布。這裡我是自研,後續文章會做一個介紹。

配置,基礎架構配置和管理。如 SaltStack

監控,應用監控、基礎監控,幫助運維快速定位問題。如:Zabbix, OpenFalcon

上面這些工具,結合業內提出的概念,按照發布流程進行組合,可以概括為以下四點:

        軟體發布流程的構建和單元測試階段。這是由開發者提交變更到代碼倉庫後自動觸發。

        對持續集成的補充,在單元測試完成後,自動部署到測試環境/生產環境。持續交付的中心模式是部署流水線,本質上講就是一個應用程式從構建、測試、到發布這整個過程的自動化實現。

        持續交付在最後上線階段需要人工幹預,持續部署不需要。持續部署就是在沒有明確批准的情況下自動發生。

        實時獲取應用狀態和環境狀態,異常發生後運維能作出快速反應。

如果對持續集成和持續交付不太理解的,可以參考下面這種圖,再對照我上面的應用發布流程圖,應該能很快理解:

如果理解了持續交付,可能會有一種持續交付和DevOps是同一個事物的錯覺,實則不是。引用維基百科的一段描述作此說明:

Continuous delivery and DevOps have common goals and are often used in conjunction, but there are subtle differences.

While continuous delivery is focused on automating the processes in software delivery, DevOps also focuses on the organization change to support great collaboration between the many functions involved.

持續交付和DevOps有共同的目標,並且經常結合使用,但存在細微差別。雖然持續交付的重點是自動化軟體交付流程,但DevOps還專注於組織變更,以支持所涉及的眾多功能之間的良好協作。

對此我解讀為:持續交付是DevOps的一個子集,是DevOps的一個實踐經驗。

備註:DevOps於2009年提出,持續交付於2010年提出。

6. 總結

本章主要講述了DevOps的產生背景,以及一個基本的概念。最後概述性的介紹了DevOps的實踐,並列舉了一些工具。本章只是開端,一篇理論性的文章也很難讓人明白到底什麼是DevOps。後面會將個人的一些實踐經驗進行一個總結,希望能夠讓讀者大致明白我所理解的DevOps。之所以稱之為「我所理解的DevOps」,是因為在實踐中,我並不是完全遵循了這些理論性指導,箇中緣由我會在後面的文章中進行闡述。但我們的重點是在於讓軟體快速交付、解決運維工作中的痛點,不是嗎?我一直堅信,理論是對我們行為模式的指導,並不一定需要完全遵從。

相關焦點

  • Gdevops北京站:網際網路、金融與運營商的智慧運維、資料庫、Fintech...
    依託迄今成功舉辦的17場大會在分享議題上的精心打磨、在技術圈子裡的口碑傳播,Gdevops在展開新一年技術巡演中邀請到更頂級的嘉賓陣容,將帶來更重磅的科技成果與獨家實踐。2020 Gdevops北京站時間:2020年5月29日地點:北京新世紀日航飯店(北京市海澱區首都體育館南路6號)指導單位:上海市經濟和信息化委員會主辦單位:上海市雲計算產業促進中心、dbaplus社群2020 Gdevops
  • 中小團隊基於Docker的devops實踐
    devops成了我們不二的選擇。  文章是基於目前的環境和團隊規模做的devops實踐總結,方案簡單易懂,容易落地且效果顯著。  實現方法  先來看下流程圖:docker hub,然後觸發kubernetes滾動更新  鏡像包含了基礎鏡像+項目代碼,基礎鏡像就是根據項目運營環境打包的一個最小化的運行環境(不包含項目代碼),根據項目依賴的技術棧不同我們打包了很多不通類型的基礎鏡像,例如包含nginx服務的基礎鏡像,包含jdk+tomcat的基礎鏡像  如果發現程序上線出錯或有bug短時間內無法解決,可通過jenkins快速回滾到上一鏡像版本
  • 企業對DevOps的偏見,及幾個轉型建議
    對DevOps感興趣的企業往往實踐或採用了一個對運維需求非常搞的敏捷技術,比如建立一個測試環境,或者測試節後發布軟體到生產環境。持續加快的步伐給運維團隊施加了很大的壓力,因為大多時候工作集中在項目後期(例如,是時候發布到生產環境中)。迫於時間壓力或者過量工作,運營團隊很難完成相對請求,甚至有時聽到開發者埋怨想親力親為。
  • DevOps術語表-徵集協作者
    這個術語表目前主要基於《DevOps Handbook》,DevOps社區強調去中心化,不存在集中的、唯一的核心和權威,重在對DevOps實踐經驗的分享
  • 錘子的墨村 之 程序猿眼中的REA DevOps
    DevOps 集文化理念、實踐和工具於一身,可以提高組織高速交付應用程式和服務的能力,與使用傳統軟體開發和基礎設施管理流程相比,能夠幫助組織更快地發展和改進產品。這種速度使組織能夠更好地服務其客戶,並在市場上更高效地參與競爭。[3]這幅圖片[3] 可以看到發布生產線。
  • 技術掌舵人齊聚Gdevops峰會,解讀資料庫、智慧運維、Fintech轉型精要
    依託迄今成功舉辦的17場大會在分享議題上的精心打磨、在技術圈子裡的口碑傳播,Gdevops在展開新一年技術巡演中邀請到更頂級的嘉賓陣容,將帶來更重磅的科技成果與獨家實踐。Gdevops北京站從中精選出多家大型商業銀行、頭部互金企業等在中臺建設、資料庫遷移、運維轉型上的典型成功案例,助力Fintech戰略落地。
  • 全球IT管理最佳實踐之DevOps Master 認證
    隨後2009年在比利時根特舉辦的首屆DevOpsDays 活動中,Patrick DeBois 先生首次在公開場合提出「DevOps」 這一名詞。 此後,「DevOps」隨即成為全球IT界大咖們在各種活動中熱議和討論的焦點話題。 Patrick DeBois先生也隨之被全球IT大佬們譽為 「DevOps 之父」!
  • 你了解DevOps的自動化架構GitOps嗎?
    【51CTO.com快譯】如今,許多團隊都在各種項目中爭相使用著諸如:版本控制、代碼審查、以及CI/CD管道等,與DevOps有關的優秀實踐。不過,您是否注意到,這些方法主要針對的是軟體開發生命周期中的自動化。而在涉及到基礎架構的設置和部署時,項目團隊仍然主要依賴的是手動的過程。
  • 技術中臺之DevOps自動化測試實踐
    4.如何在DevOps中執行rf腳本並生成測試報告一、為什麼採用RobotFramework?針對接口、web網頁、app自動化測試的工具有很多:selenium、jmeter、soapui、robotFramework、postman等,如何選擇適合自己的自動化測試工具?此時便要看具體需求和業務。
  • 2020Gdevops北京站 中郵消費金融李遠鑫解讀敏捷運維背後的深度...
    維峰會在京舉辦,中郵消費金融有限公司部門負責人、資深架構師李遠鑫受邀出席,並發表「敏捷消費金融中臺架構下的深度服務治理」主題演講,系統分享了中郵消費金融現代化服務治理體系以及在敏捷開發過程中的實踐經驗。
  • Gdevops | 福昕助力金融共繪金融行業美好藍圖
    首頁 > 傳媒 > 關鍵詞 > 福昕最新資訊 > 正文 Gdevops | 福昕助力金融共繪金融行業美好藍圖
  • DevOps 是什麼不是什麼
    DevOps 到底是不是一個職位,還是像敏捷、精益一樣是一種思想、最佳實踐?
  • DevOps團隊如何選擇監控工具
    譯者:王延飛原文連結:https://dzone.com/articles/how-to-choose-monitoring-tools-for-devops-and-sre最近面試BAT,整理一份面試資料《Java面試BAT通關手冊》,覆蓋了Java核心技術、JVM、Java並發、SSM、微服務
  • 七款做好DevOps的強大工具
    「有很多的工具,比如Jenkins、Travis和Bamboo,它們都過不了最後資源配置的那一關。」弗蘭克如是說。Atlas自購系統的安裝預計在今年年初進行。2. Chef 最新發布的3.7版本推出了Puppet Apps,這是一款專用於應用IT自動化的應用,其包含的Node Manager,可用於管理大量常變系統。Puppet的開源版本也已推出。史丹福大學採用Puppet的開源版本來「解決開發新型數字圖書館服務和保持這些服務高性能安全運行之間的矛盾,」史丹福大學的Bess Sadler在Puppet網站的視頻推薦中如是說。
  • 如何建設移動 DevOps?
    阿里妹導讀:DevOps這一優秀的軟體交付理念在服務端已經有很多相關的實踐,那麼是否也可以應用到移動端進行交付呢?基於移動端和服務端場景的差異,移動DevOps跟服務端DevOps又有哪些不同和挑戰?本文分享阿里云云原生應用研發平臺EMAS在建設雲原生Mobile DevOps過程中的思考、遇到的挑戰以及解法,解密其設計架構和技術細節。
  • 如何成為一名 Top DevOps 工程師
    最後,代碼終於到了運維人員的手裡,接力棒到了最後一公裡,這裡將會是最混亂的戰場:運維人員參考開發人員給出的部署文檔,進行部署,可惜有些開發人員的文檔寫得很爛,更多的是不寫文檔,跑過來遞給運維人員一支芙蓉王,你只需要執行我精心準備的start.sh就可以運行了。
  • 江蘇蘇寧銀行出席中國DevOps社區交流會 分享DevOps實踐經驗
    而DevOps (研發運營一體化)將在這一過程中發揮重要作用。 作為「科技驅動的O2O銀行」,蘇寧銀行堅持研發立行,聚焦金融科技,在大數據、區塊鏈、物聯網、人工智慧、雲計算等前沿技術領域均有所布局。在此次大會上,蘇寧銀行相關負責人介紹,在DevOps 實踐方面,蘇寧銀行也走在行業前列,將業務探索、產品設計、系統開發、測試驗證、生產部署、業務運營統一起來,實現組織協作效率提升和應用架構的優化。