云時代,你需了解開發運維DevOps新趨勢
原創本文是WOT2016互聯網運維與開發者大會的現場干貨, 新一屆主題為WOT2016企業安全技術峰會將在2016年6月24日-25日于北京珠三角JW萬豪酒店隆重召開!!
信息化的時代大數據、物聯網、人工智能等這些熱詞經常出現在話語間,這些概念之間相互交叉相互促進著。如物聯網會產生海量數據、如機器學習會把這些數據加以分析產生更好的效果。張俠表示,云計算與數據中心(運維機房)促使這些熱門行業越來越火。云計算是開發和運維的屌絲們對IT的逆襲。原來運維人員的具體分工多處在底層,但在云時代,開發運維一體化使得運維人員變得尤為重要。 運維人員需了解一些開發運維DevOps新趨勢,來應對飛速的變化。
應該了解的運維新詞和術語
在揭曉云時代開發運維DevOps新趨勢之前,這些運維的新詞和術語大家應該了解。張俠表示,開發運維在云時代會越來越火、更會有越來越多的先進內容,下面這些遠遠不夠,但確實是必須要知道的。
新詞
- Scrum, Agile, Kanban——敏捷性、靈活性、看板
- TDD、BDD、DDD——測試驅動設計、行為驅動設計、域驅動設計
- CI, CD, Cloud——持續概念、持續部署、云
- DevTestSecFinChatOps——開發一體化、測試運維、安全運維、財務金融運維等
術語
- DevOps——是一種開發、測試、運營、維護部門之間溝通、協作與整合的軟件過程、方法與系統。
- 微服務 Micro Service: ——一個單純的小型的有意義的功能。
- 容器 Container——容器是用來存儲和組織其他對象的對象。
- Docker—— 一個開源的應用容器引擎
為什么需要DevOps?
為什么需要DevOps?最主要原因是原來開發完成后就交給運維人員,兩個團隊之間貌似有一堵墻,各干各的活。這種開發一般是一兩個月搞出一個版本,像金融銀行這樣的傳統行業,有時一季、半年出一個版本就很不錯了。但在互聯網時代,需要快速的創新、快速的迭代,一天可能就要推出多少個版本,那這里就需要用到DevOps的方法。
微服務,是支撐DevOps方法的手段,傳統開發是在一個服務器里面,把各種元素裝在一起組合成一個程序,但微服務是每一個服務是一個單獨的單元,可以部署在不同的服務器上,通過SOA的方法,把它連接起來,再提供整個功能。
從單體架構到微服務架構 (Microservices)
如上圖類似一個光纖的截面,每一個小光纖點是一個微服務,微服務構造的程序變成下面的結構,很多小結點密密麻麻連在一起。微服務面向服務的架構由單一原生的小的服務來構成,再通過APIs調用它們,使得這個程序從這個層次上,把它更加的結構化,一個一個的單元化,然后再可以重新組合。
從單體到微服務開發生命周期
微服務如何做開發?傳統開發者分成很多團隊,整個工作常用程序,做好后涉及到整個建造、編輯、退出、測試,直到部署。微服務是由一個個團隊組成,每團隊有自己的服務,做好后,可以獨立的進行測試、開發、部署,然后整個應用組合到一起。張俠表示,開發運維一體化、微服務和Container是同等的,把它們組合起來,加上云的手段才成為可能。DevOps不光是一個簡單的技術手段,實際上是一個方法理念。
基礎設施即代碼 Infrastructure as code
張俠表示,運維還有一個很重要的一個概念那就是Infrastructure as code。傳統系統部署,從服務器開始裝操作系統、裝應用、升級補丁、網絡配置等事都是由運維人員來操作,一旦離開就會出現問題。但在不久的將來這些工作都會被程序來實現,所以技術人員要了解什么是前途?學哪些有價值?如還是維持原來技術,就可能就被一些程序代替。 因為機器實現可拓展性、可靠性、重復性、一致性、能夠審計、能夠記錄、安全等,也會比人做的好。而且在云里面正確操作,比傳統IT安全很多。
Infrastructure as Code 基礎設施即代碼示例
張俠表示,亞馬遜云有很基礎的服務叫做Infrastructure as code,是一個基礎架構的部署服務。如果要開一些機器,全套架構,從網絡,從服務器,這是一個真正文件,比如說Packages是什么,升級一下相關操作系統,重要的原文件放在什么地方等。通過這個方式整個一套基礎設施在云里運行,包括底層架構、網絡架構,虛機上運行,裝什么系統、裝什么應用、裝什么服務器都可以進行。
從軟件開發的角度看DevOps
AWS對DevOps的全面支持
從DevOps的角度講,需要很多層次邏輯和控制、多編程語言支持等整個一套操作系統。也有一些開源的工具,平時說的Docker的一些平臺,基本上是對應的關系,這些都要靠API,還有很多基礎服務,如安全服務,是機器做、還是人為、在什么時間進行。
基于AWS的DevOps實踐要素
從開發工具來說,AWS推出一套叫Code Commit,把原代碼管理放到版本管理的工具里面。Code Pipeline可以持續交付做一些測試工具,Code Deploy把它真正的推出來。ECS,是云里面做的Docker的容器的服務。CodeDeploy是做應用部署的,它來直接部署,可以部署的開發測試,直到生產各種環境中,從一個部署到上千個實例中,也可以部署在本地的,就是說傳統的機房,或者電信托管的機房,連公有云帶私有云,混合架構上任何一種全都能實現,然后集中的控制和監控。CodeDeploy部署分為包裝APP、指定目標和部署三部。
從虛機到容器
從虛機到容器
張俠表示,原來大家都熟悉的VM虛機模式,模式雖然不錯,但是有很多問題,最主要是可移植,部署的速度、靈活性等方面比較專門。在虛擬化的基礎上,容器是進一步虛擬化,把應用在虛機上準備好,不光是脫離它的硬件,還脫離它的操作系統,還脫離它所有的基礎設施的軟件,搭建的平臺。Docker就是封裝的群,在不同OS上快速部署,文件系統簡化升級和遷移。
那在云上如何操作呢?這里張俠提到EC2 Container services,是把云、EC2虛機、Container各自的優點結合在一起的服務。
Amazon EC2 Container Service
ECS是如何使用的?首先選擇一些集群,這是一組機器,不是一臺機器,一組虛機,里面有四個虛機,一個上面裝了三個Container,然后把任務定義清楚,又是一個清單,這是一個要部署的應用,然后就開始做這個事情了。可以通過任務的執行器,把這些任務在虛機的組成的群里面,先有一個代理實現這些,知道誰都管什么,然后這里面有一些Container,然后把這些任務定義應用一個一個放到容器里,這個容器就跑起來。
ECS Service Scheduler – 升級你的應用
上圖為藍綠升級,如果這個任務原來是一個版本,把這個任務改成另一個版本重新部署一遍,在這些容器里重新部署,又實現了滾動的升級,所以這是第二個方法。在容器的時代,使用公有云現成的ECS容器怎么樣做應用的滾動的升級和部署,又可以完成這些事情。所以大家看到自動化所起的作用。
AWS couldTrail
上圖是一個操作平臺,一類叫開發人員工具,一類叫管理工具,其他的基本計算服務放在前面,這是在大平臺里面,這些服務在哪,現在都可以用的,都是實實在在的應用。云里面有很多其他應用,計算應用、網絡應用、數據庫應用、存儲應用等等,包括各種的平臺類的服務,甚至企業級的服務都有一些服務。
AWS 十年云運維經驗分享 – CTO Werner Vogel
1、構建可發展型系統
基于網絡服務可擴展的架構, 如同飛機在空中飛行中升級
2、時刻準備好迎接意外情況
可以隨時擁抱失敗的系統, 但有效控制失敗的“爆炸半徑”
3、提供多樣化且可塑的“基礎型”服務
向用戶提供多樣化可塑的“基礎型”服務,讓用戶 “量體而擇”。
4、自動化是關鍵
建立起自動化管理的機制,摒除容易出錯的人為操作。
5、API的構建務要一步到位,因為一旦上線就不可更改
一旦用戶開始利用我們的API,API就不能再更改。
6、建立聰明的收費機制才能保證可持續運轉
建立收費機制時,必須對運營所需成本了如指掌。如存儲 “請求數量” 。
7、安全從源頭抓好安全
保護用戶安全始終是,并將永遠是AWS的頭號任務和優先投資方向。
8、加密技術是重中之重
逐步掌握將加密技術整合進服務的最好方式。如Amazon CloudHSM和KMS 。
9、網絡、網絡、網絡
讓網絡基礎設施保持高度靈活,如能支持SR I/O V的NIC,以降低虛擬額外負載。
10、用途不設限
為客戶締造了一個極深極廣的平臺,為用戶營造一個極為豐富的生態系統。
本文整理自由51CTO主辦的WOT2016互聯網運維與開發者大會上來自亞馬遜AWS首席云計算企業顧問張俠做的主題為馬遜AWS云服務推動IT運維創新的精彩演講。
大會演講視頻鏈接:http://edu.51cto.com/lesson/id-100764.html
講師簡介:
張俠,畢業于北京大學獲學士學位, 并獲得美國萊斯大學碩士和博士學位以及韋恩大學工程管理碩士學位。 張俠博士現任亞馬遜AWS首席云計算企業顧問,負責幫助企業利用云計算技術進行業務創新和數字化轉型。張俠于2012-2014年任北京御風云科技有限公司總裁;2006-2012年任SAP思愛普軟件系統有限公司大中華區首席技術官 CTO;2002-2005年任中國銀行個人金融部和銀行卡中心的技術總監CTO。他曾于1993-2002年在美國福特汽車公司工作,其中 2000-2002年任福特直銷FordDirect的首席信息官CIO。