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