雲的革命(一)

雲的革命
      從一個世界開始的時候,由於它像圓圈同樣四處轉動,而且在它開始的圓圈上沒有地方。
      第一次革命是雲的創造,咱們將解釋它是什麼以及它爲何重要。第二個是DevOps的曙光,你會發現它涉及到什麼以及它如何改變運營。第三次革命是集裝箱的到來。這三個變化浪潮共同創造了一個新的軟件世界:雲原生世界。這個世界的操做系統叫作Kubernetes。

     在本文中,咱們將簡要敘述這些革命的歷史和重要性,並探討這些變化如何影響咱們全部部署和運行軟件的方式。咱們將概述雲本機的含義,以及若是您從事軟件開發,運營,部署,工程,網絡或安全工做,您能夠在這個新世界中看到哪些變化。數據庫

     因爲這些相互關聯的革命的影響,咱們認爲計算的將來在於基於雲的容器化分佈式系統,由Kubernetes平臺(或很是相似的東西)經過自動化動態管理。開發和運行這些應用程序的技術 - 雲原生DevOps  - 是咱們將在本文其他部分探討的內容。安全

     若是您已經熟悉全部這些背景材料,而且您只想開始享受Kubernetes的樂趣,請舒服地安頓下來,喝一杯最喜歡的飲料,咱們會開始的。服務器

雲的創造
      一開始(不管如何,20世紀60年代),計算機在大型,遠程,空調數據中心中逐個機架,用戶永遠不會看到它們或直接與它們交互。相反,開發人員將他們的工做遠程提交到機器並等待結果。

      雲的核心思想是:購買計算而不是購買計算機。 也就是說,不是將大量資金投入到難以擴展的物理機械中,且機械地分解,而且迅速變得過期,您只需在別人的計算機上花時間,讓他們負責擴展,維護和升級。 在裸機的時代 - 「鐵器時代」,若是你喜歡 - 計算能力是一筆資本支出。 這是一項運營費用。網絡

      雲不只僅是遠程租用的計算能力。它也是關於分佈式系統的。您能夠購買原始計算資源(例如Google Compute實例或AWS Lambda函數)並使用它來運行您本身的軟件,但您也愈來愈多地租用雲服務:本質上,使用其餘人的軟件。例如,若是您使用PagerDuty監控系統並在出現故障時提醒您,則您使用的是雲服務(有時稱爲軟件即服務或當您使用雲基礎架構來運行本身的服務時,您所購買的是基礎架構即服務(IaaS)。 您沒必要花費資金購買它,您沒必要構建它,雲計算是企業與其IT基礎架構之間關係的一次革命。外包硬件只是故事的一部分; 雲還容許您外包您不編寫的軟件:操做系統,數據庫,羣集,複製,網絡,監控,高可用性,隊列和流處理,以及跨越差距的全部無數軟件和配置層 在你的代碼和CPU之間。 託管服務能夠爲您處理幾乎全部這些無差異的繁重工做。

      在DevOps以前,開發和運行軟件本質上是兩個獨立的工做,由兩個不一樣的人羣執行。 開發人員編寫軟件,而後將其傳遞給操做員,操做人員在生產中運行和維護軟件(也就是說,爲真實用戶提供服務,而不只僅是在測試條件下運行)。 就像須要本身建築物樓層的計算機同樣,這種分離的根源在於上個世紀中葉。 軟件開發是一項很是專業的工做,計算機操做也是如此,二者之間幾乎沒有重疊。架構

     雲計算的革命也引起了使用它的人們的另外一場革命:DevOps運動。實際上,這兩個部門的目標和激勵措施徹底不一樣,每每相互衝突(圖1-2)。 開發人員傾向於專一於快速發佈新功能,而運營團隊則關注長期穩定可靠的服務。當雲層出現時,狀況發生了變化。分佈式系統很複雜,互聯網很是龐大。操做系統的技術 - 從故障中恢復,處理超時,平滑升級版本 - 並不與系統的設計,架構和實現分離。分佈式

      此外,「系統」再也不僅僅是您的軟件:它包括內部軟件,雲服務,網絡資源,負載平衡器,監控,內容分發網絡,防火牆,DNS等。全部這些事情都密切相關,相互依存。編寫軟件的人必須瞭解它與系統其餘部分的關係,操做系統的人必須瞭解軟件的工做原理或失敗。函數

     DevOps的起源在於嘗試將這兩個羣體彙集在一塊兒:協做,分享理解,分擔系統可靠性和軟件正確性的責任,以及提升軟件系統和構建人員團隊的可擴展性。

理解DevOps工具

      DevOps偶爾也是一個有爭議的想法,不管是那些堅持認爲它只不過是現有的軟件開發良好實踐標籤的人,仍是那些拒絕在開發和運營之間增強協做的人。DevOps
其實是存在廣泛的誤解:職稱?團隊?方法論?技能?頗具影響力的DevOps做家John Willis已經肯定了DevOps的四個關鍵支柱,他稱之爲文化,自動化,測量和共享(CAMS)。另外一種分解方法是Brian Dawson稱之爲DevOps三位一體:人與文化,流程與實踐,工具與技術。單元測試

     有些人認爲雲和容器意味着咱們再也不須要DevOps  - 有時稱爲NoOps的觀點。咱們的想法是,因爲全部IT運營都外包給雲提供商或其餘第三方服務,所以企業不須要全職運營人員。NoOps謬誤是基於對DevOps工做實際涉及的內容的誤解:使用DevOps,許多傳統的IT操做工做都會在代碼到達生產以前完成。每一個版本都包括監控,日誌記錄和A / B測試。 CI / CD管道會在每次提交時自動運行單元測試,安全掃描程序和策略檢查。部署是自動的。控制,任務和非功能需求如今在發佈以前實現,而不是在嚴重中斷的狂熱和後果期間實現。  
業務優點
     從業務角度來看,DevOps被描述爲「經過利用雲來自動化和實踐加速發佈週期來提升軟件質量,以及實際停留在生產中的軟件的額外好處」(The Register)。採用DevOps須要對企業進行深入的文化轉型,這須要從執行,戰略層面開始,逐步傳播到組織的每一個部分。速度,敏捷性,協做,自動化和軟件質量是DevOps的關鍵目標,對於許多公司而言,這意味着思惟方式的重大轉變。
     但DevOps能夠運行,而且按期研究代表,採用DevOps原則的公司能夠更快地發佈更好的軟件,更好,更快地應對故障和問題,在市場上更靈活,並大大提升產品質量:
DevOps不是一種時尚;相反,它是成功的組織今天實現高質量軟件產業化的方式,並將成爲明天和將來幾年的新基準。

 基礎設施代碼學習

     曾幾什麼時候,開發人員處理軟件,而運營團隊則處理硬件和在該硬件上運行的操做系統。如今硬件在雲中,從某種意義上說,一切都是軟件。 DevOps運動爲操做帶來了軟件開發技能:工具和工做流程,用於快速,靈活,協做地構建複雜系統。與DevOps密不可分的是基礎設施做爲代碼的概念。雲計算基礎設施能夠由軟件自動配置,而不是對計算機和交換機進行物理架設和佈線。操做工程師已經成爲編寫自動化雲的軟件的人,而不是手動部署和升級硬件。交通不只僅是單向的。開發人員正在向運營團隊學習如何預測分佈式,基於雲的系統中固有的故障和問題,如何減輕其後果,以及如何設計降級優雅且安全性低的軟件。

     雲的大規模擴展以及DevOps運動的以代碼爲中心的協做性質已將運營轉變爲軟件問題。 與此同時,他們也將軟件轉變爲操做問題,全部這些都引起了如下問題:如何在不一樣服務器架構和操做系統的大型,多樣化網絡中部署和升級軟件?如何使用基本標準化的組件以可靠且可重現的方式部署到分佈式環境?

從而進入第三次革命:容器。
相關文章
相關標籤/搜索