深度剖析Devops系列(1)--入門篇

? ? 最近我閱讀了很多有關(guān) DevOps 的文章埃篓,其中一些非常有趣雷恃,對(duì)于Devops的見解也是見仁見智疆股。在效率和質(zhì)量日益重要的今天,Devops已成為炙手可熱的話題倒槐,由于目前業(yè)內(nèi)對(duì)于Devops的理解眾說紛紜旬痹,且Devops還是一個(gè)比較抽象的概念體系。因此想做一個(gè)系列讨越,對(duì)于DevOps整個(gè)體系做一個(gè)詳細(xì)的分析两残。

? ? 本篇會(huì)從最簡(jiǎn)單的Devops的理論基礎(chǔ)開始帶領(lǐng)大家一起走進(jìn)Devops的世界。

誰應(yīng)該關(guān)心Devops : 如果你的工作與構(gòu)建軟件系統(tǒng)有關(guān)把跨,并且你所在的組織有意增加產(chǎn)品質(zhì)量和縮短新功能推向市場(chǎng)的時(shí)間人弓,那么,您就應(yīng)該要關(guān)注Devops着逐。

一.什么是Devops

DevOps崔赌,字面理解是Develop+Operation, 以及他們之前千絲萬縷的聯(lián)系耸别。

目前對(duì)于Devops的定義健芭,主流有4中觀念:

1. DevOps 是一種角色 : 當(dāng)Devops成為一種主流,很多人會(huì)傾向去找做"Devops"的人,并希望能提升自己組織的Devops能力秀姐,因此設(shè)置了一些稱之為"Devops工程師"的崗位和角色慈迈,主要有如下幾種,但是很多都不是一個(gè)完善的定義:

? ? ? 作為Dev的Ops(會(huì)開發(fā)技能的運(yùn)維工程師) :忽視了開發(fā)和運(yùn)維的專業(yè)性和差異性

? ? ? 作為Ops的Dev(會(huì)運(yùn)維技能的開發(fā)工程師) : (同上)

? ? ? 基礎(chǔ)設(shè)施開發(fā)工程師:基礎(chǔ)設(shè)施開發(fā)者(InfrastructureDeveloper)或者云計(jì)算工程師(CloudEngineer)

? ? ? 全棧工程師:DevOps 是一個(gè)團(tuán)隊(duì)屬性省有,而不是一個(gè)人屬性痒留,不能保證整個(gè)組織內(nèi)部全是全棧工程師,而且能處理所有事情蠢沿。

2. DevOps 是一組技術(shù)/實(shí)踐:提到Devops伸头,我們不可以避免的會(huì)提到工具的使用,Jenkins舷蟀,GitHub熊锭,Sonar....等等弧轧, 當(dāng)然,好的工具選擇以及組織結(jié)構(gòu)可以促進(jìn)工程師用更有效率碗殷,更優(yōu)雅的方式解決問題精绎。但是,僅僅是簡(jiǎn)單的工具組合锌妻,可能適得其反代乃。如果你不能有直觀的理解,可以想象下周星馳電影里"要你命3000"仿粹。下面列一些Devops高頻搜索的話題:

? ? ? 高頻部署: DevOps 絕不是為了提升部署頻率而犧牲了軟件質(zhì)量和業(yè)務(wù)價(jià)值搁吓,甚至是安全措施。換句話說吭历,DevOps 不是一種對(duì)質(zhì)量的平衡和妥協(xié)堕仔,它是一種全局改進(jìn)。全局的改進(jìn)就意味著以價(jià)值為最高原則所度量的相關(guān)指標(biāo)是不能有所下降的晌区。

? ? ? 持續(xù)交付:? DevOps 的核心實(shí)踐之一摩骨,因?yàn)槿绻銢]有實(shí)踐持續(xù)交付。那么根本不能稱之為DevOps朗若。

? ? ? 云計(jì)算/虛擬化技術(shù):共有云的高可用架構(gòu)設(shè)計(jì)以及其天然的IaaS/PaaS/SaaS層服務(wù)優(yōu)勢(shì)恼五,為Devops提供了強(qiáng)力的支撐。

? ? ? 基礎(chǔ)設(shè)施即代碼(AWS CloudFormation) : 基礎(chǔ)設(shè)施即代碼除了工具以外哭懈,更是一種Dev 和 Ops 之間相互溝通的媒介灾馒,能夠讓開發(fā)人員和運(yùn)維人員相互理解。所以遣总,基礎(chǔ)設(shè)施即代碼毫無疑問的是DevOps 的核心實(shí)踐之一睬罗。

? ? ? Docker : 更簡(jiǎn)單的解決了基礎(chǔ)設(shè)施即代碼和虛擬化在實(shí)踐中的問題,進(jìn)一步提升了自動(dòng)化能力以提升效率旭斥,并且對(duì)開發(fā)人員和運(yùn)維人員都十分友好容达。

? ? ? 自動(dòng)化運(yùn)維: 雖然 DevOps 里的一個(gè)重要特征是“自動(dòng)化”,但擁有自動(dòng)化運(yùn)維琉预,并不代表你就正在實(shí)踐DevOps董饰,很可能你僅僅提升了運(yùn)維部門的效率蒿褂,但并沒有從全局的角度提升開發(fā)和運(yùn)維之間的效率和端到端價(jià)值的流動(dòng)圆米。因此,僅僅有自動(dòng)化運(yùn)維啄栓,還不足以稱之為DevOps.

3. DevOps 是一種工作方式:比較貼近 DevOps 的目標(biāo)的定義娄帖,但是,片面的理解和機(jī)械的模仿都會(huì)給組織帶來不必要的資源浪費(fèi)或者損失昙楚,DevOps 的工作方式近速,有以下四個(gè)常見的理解:

? ? ? 用Dev的方法做Ops的事:Develop占主導(dǎo)地位,Operation仍然是一個(gè)雞肋位置

? ? ? 換了名字的Ops團(tuán)隊(duì):Operation占主導(dǎo)地位,出了問題全部拋給運(yùn)維團(tuán)隊(duì)

? ? ? 一個(gè)有Ops的Dev團(tuán)隊(duì):Ops和Dev組成一個(gè)團(tuán)隊(duì)削葱,但是如果Ops和Dev依舊各自為政奖亚,效率反而會(huì)大打折扣

? 一個(gè)Dev和Ops合作的團(tuán)隊(duì):

這就是 DevOps 所要達(dá)到的目標(biāo),它不是一個(gè)人的屬性析砸,而是一個(gè)團(tuán)隊(duì)的屬性昔字。它讓利益相關(guān)方坐在一起解決問題,而不是相互甩鍋首繁。然而作郭,由于"合作"的定義很簡(jiǎn)單,也很空泛弦疮,導(dǎo)致"合作"難以落地夹攒。DevOps 合作方式:

? ? ? 共同進(jìn)行架構(gòu)設(shè)計(jì)、共同進(jìn)行技術(shù)決策

? ? ? 持續(xù)交付流水線的建立

? ? ? 共同Pair 和 Review代碼和環(huán)境的配置

? ? ? 共同參與回顧會(huì)議

? ? ? 通過定期的內(nèi)部Session增加相互的理解

? ? ? 共同處理運(yùn)維的問題

從項(xiàng)目管理角度來說胁塞,就是Dev和Ops必須把彼此作為項(xiàng)目中的重要干系人咏尝,進(jìn)行任何的設(shè)計(jì)以及決策都要進(jìn)行溝通以及分享。

4. DevOps 是一種組織文化

文化包括組織過程資產(chǎn)和事業(yè)環(huán)境因素闲先,devops文化可能會(huì)跟目前您的組織文化有不一樣状土,但 卻是一種健康積極的因素:

? ? ? 相互信任

? ? ? 有效溝通

? ? ? 共同學(xué)習(xí)

? ? ? 分享/共擔(dān)

? ? ? 不要指責(zé)

總 結(jié) :總的來說,Devops 是一套實(shí)踐方法伺糠, 是一種工作方式蒙谓,是一套組織文化,在保證高質(zhì)量的前提下训桶,縮短系統(tǒng)變更從提交到部署至生產(chǎn)環(huán)境的時(shí)間累驮,以及在此過程中形成的良好的組織結(jié)構(gòu),溝通方式以及責(zé)任分擔(dān)模型 舵揭。

二.DevOps生命周期

了解了Devops的概念谤专,我們從實(shí)踐方法的角度一起來看下其生命周期:

Devops能力環(huán)

1.Plan : 需求階段,無論該需求來自客戶的新需求還是BUG修改午绳,這是觸發(fā)整個(gè)Devops流程的起點(diǎn)置侍,因此,作為Devops團(tuán)隊(duì)拦焚,開發(fā)團(tuán)隊(duì)需要把運(yùn)維團(tuán)隊(duì)作為首要干系人蜡坊,在進(jìn)行開發(fā)之前獲取他們的意見,比如運(yùn)維人員可能會(huì)對(duì)日志文件的類型和結(jié)構(gòu)提出建議赎败。

2. build:開發(fā)/構(gòu)建階段秕衙,該階段需要開發(fā)人員開發(fā)和運(yùn)維團(tuán)隊(duì)也要保持密切的溝通,對(duì)于開發(fā)進(jìn)度僵刮,單元測(cè)試的執(zhí)行等据忘,構(gòu)建工具的使用鹦牛,持續(xù)集成等運(yùn)維人員也需要有所了解

3. Test:測(cè)試階段,測(cè)試方案的規(guī)劃勇吊,使用什么測(cè)試工具曼追,是否使用自動(dòng)化測(cè)試等(有一種新的Taas服務(wù),將測(cè)試作為一種基礎(chǔ)服務(wù)提出)汉规,都需要跟開發(fā)和運(yùn)維溝通拉鹃。

4. Release : 該階段主要是對(duì)新版本的上線做的一系列準(zhǔn)備,例如release之前需要對(duì)該版本支持的平臺(tái)版本進(jìn)行確認(rèn)鲫忍,測(cè)試結(jié)果進(jìn)行確認(rèn)膏燕,安全檢查等報(bào)告進(jìn)行核實(shí),確保上線之前最后一套手續(xù)的完整性

5. Deploy : 部署階段悟民,部署工具的使用坝辫,部署方案的制定(A/B部署,金絲雀部署等)射亏,以及回滾方案的確認(rèn)近忙,確保在服務(wù)不受影響的情況下,順利將新版本發(fā)布智润。

6. Operation / Monitor: 運(yùn)維階段及舍,對(duì)于已經(jīng)上線的服務(wù)做一系列的性能監(jiān)控(CPU , Memory等),日志分析窟绷,執(zhí)行系統(tǒng)及軟件的例行審計(jì)锯玛,執(zhí)行備份,對(duì)操作系統(tǒng)的更新補(bǔ)丁升級(jí)兼蜈,優(yōu)化系統(tǒng)性能等攘残,并及時(shí)發(fā)現(xiàn)監(jiān)控過程中的問題,以及搜集來自于客戶的問題清單为狸,并將此作為下次版本更新的需求歼郭。

總 結(jié): Devops生命周期是一個(gè)環(huán)形結(jié)構(gòu),它不會(huì)以項(xiàng)目上線為終止辐棒,而是不斷會(huì)搜集來自于客戶的需求病曾,以對(duì)整個(gè)軟件服務(wù)做不斷的更新以及優(yōu)化,這種結(jié)構(gòu)就要求Devops整個(gè)流程的高效性漾根。

三. 一個(gè)使用DevOps的案例:

IMVU是一家娛樂社交公司泰涂,他的產(chǎn)品允許以一種3D阿凡達(dá)式的體驗(yàn)互相連接起來,IMVU使用了持續(xù)集成(CI):

1.開發(fā)人員盡早并且經(jīng)常提交

2.提交完成后會(huì)觸發(fā)測(cè)試套件的執(zhí)行

3.IMVU有上千個(gè)測(cè)試文件立叛,為了保持性能负敏,這些測(cè)試文件分布在30多臺(tái)機(jī)器上贡茅,所有case執(zhí)行完需要9分鐘

4.通過了所有測(cè)試之后秘蛇,會(huì)自動(dòng)實(shí)施部署其做,需要6分鐘

5.代碼移動(dòng)到集群中數(shù)百臺(tái)機(jī)器中,會(huì)使用金絲雀部署方案赁还,測(cè)試性能

6.取樣金絲雀結(jié)果妖泄,如果回歸數(shù)量很多,則會(huì)進(jìn)行回滾操作艘策,否則集群中其他機(jī)器就會(huì)啟用最新版本蹈胡。

這個(gè)case主要說明了目前主流的DevOps 的技術(shù)/實(shí)踐,下一章將會(huì)詳細(xì)從該角度講解當(dāng)前DevOps生命周期中各個(gè)階段使用的熱門技術(shù)/工具朋蔫。

曾經(jīng)有人跟我很自豪的聊他們的devops系統(tǒng)罚渐,他們的Devops系統(tǒng)每天會(huì)發(fā)布500多次新版本。我問他驯妄,真的有那么多新需求要開發(fā)荷并?有沒有分析下這500多次的發(fā)布有多少是因?yàn)樽詣?dòng)化測(cè)試不通過而產(chǎn)生的代碼修改,或者甚至連最基本的靜態(tài)代碼檢查都沒有通過青扔?

因此源织,運(yùn)維一套完善的Devops系統(tǒng),并不能成為可以忽略質(zhì)量的理由微猖,畢竟谈息,質(zhì)量,才是一個(gè)產(chǎn)品的一切~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末凛剥,一起剝皮案震驚了整個(gè)濱河市侠仇,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌犁珠,老刑警劉巖傅瞻,帶你破解...
    沈念sama閱讀 218,640評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異盲憎,居然都是意外死亡嗅骄,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,254評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門饼疙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來溺森,“玉大人,你說我怎么就攤上這事窑眯∑粱” “怎么了?”我有些...
    開封第一講書人閱讀 165,011評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵磅甩,是天一觀的道長炊林。 經(jīng)常有香客問我,道長卷要,這世上最難降的妖魔是什么渣聚? 我笑而不...
    開封第一講書人閱讀 58,755評(píng)論 1 294
  • 正文 為了忘掉前任独榴,我火速辦了婚禮,結(jié)果婚禮上奕枝,老公的妹妹穿的比我還像新娘棺榔。我一直安慰自己,他們只是感情好隘道,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,774評(píng)論 6 392
  • 文/花漫 我一把揭開白布症歇。 她就那樣靜靜地躺著,像睡著了一般谭梗。 火紅的嫁衣襯著肌膚如雪忘晤。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,610評(píng)論 1 305
  • 那天激捏,我揣著相機(jī)與錄音德频,去河邊找鬼。 笑死缩幸,一個(gè)胖子當(dāng)著我的面吹牛壹置,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播表谊,決...
    沈念sama閱讀 40,352評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼钞护,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了爆办?” 一聲冷哼從身側(cè)響起难咕,我...
    開封第一講書人閱讀 39,257評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎距辆,沒想到半個(gè)月后余佃,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,717評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡跨算,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,894評(píng)論 3 336
  • 正文 我和宋清朗相戀三年爆土,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片诸蚕。...
    茶點(diǎn)故事閱讀 40,021評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡步势,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出背犯,到底是詐尸還是另有隱情坏瘩,我是刑警寧澤,帶...
    沈念sama閱讀 35,735評(píng)論 5 346
  • 正文 年R本政府宣布漠魏,位于F島的核電站倔矾,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜哪自,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,354評(píng)論 3 330
  • 文/蒙蒙 一丰包、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧提陶,春花似錦、人聲如沸隙笆。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,936評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽您访。三九已至铅忿,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間灵汪,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,054評(píng)論 1 270
  • 我被黑心中介騙來泰國打工享言, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人览露。 一個(gè)月前我還...
    沈念sama閱讀 48,224評(píng)論 3 371
  • 正文 我出身青樓荧琼,卻偏偏與公主長得像,于是被迫代替她去往敵國和親差牛。 傳聞我的和親對(duì)象是個(gè)殘疾皇子命锄,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,974評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容