在技術(shù)團(tuán)隊(duì)里,如何達(dá)成DevOps共識(shí)?落地好難
DevOps是一個(gè)復(fù)雜的多維話題。這是上下文相關(guān)的。那些試圖了解和實(shí)施DevOps的人將他們的角色和文化觀點(diǎn)帶入了流程。意見(jiàn)和專(zhuān)業(yè)知識(shí)的多樣性可能是重要的優(yōu)勢(shì)。但是,這也可能導(dǎo)致開(kāi)發(fā)DevOps共識(shí)產(chǎn)生摩擦和爭(zhēng)論。按我的個(gè)人經(jīng)歷,在團(tuán)隊(duì)里,想要推動(dòng)DevOps發(fā)展和落地是很痛苦的,特別是在小團(tuán)隊(duì)里,因?yàn)檫@將是一場(chǎng)顛覆的變革。你可以噴我,但我不賠錢(qián)。
為什么需要DevOps達(dá)成共識(shí)?
需要共識(shí),因?yàn)镈evOps不僅是一回事。這是一整套解決廣泛?jiǎn)栴}的想法。任何共同解決問(wèn)題的團(tuán)隊(duì)必須首先同意:
- 我們要解決什么問(wèn)題?
- 解決指定問(wèn)題的最佳工具是什么?
- 我們?nèi)绾魏饬扛倪M(jìn)(或缺乏改進(jìn))?
想要使用DevOps回答這些問(wèn)題的企業(yè)和團(tuán)隊(duì)必須首先就以下兩個(gè)問(wèn)題的答案達(dá)成共識(shí):
- 什么是DevOps?
- 我們?nèi)绾问褂盟鼇?lái)改善軟件交付?
每個(gè)企業(yè)想要完善或升級(jí)自身的運(yùn)維體系,都必須問(wèn)自己這些問(wèn)題才能開(kāi)始使用DevOps,并且每個(gè)企業(yè)的答案都不同。進(jìn)行自我詢(xún)問(wèn)和回答的過(guò)程可以知道什么有效,什么無(wú)效,以及可以采取哪些措施來(lái)促進(jìn)有效的變革。
首先,DevOps討論
正在考慮DevOps的企業(yè)應(yīng)首先討論什么是DevOps以及如何使用它。有很多關(guān)于DevOps的學(xué)習(xí)資源(有關(guān)更多示例,請(qǐng)找度娘或者關(guān)注并私聊我)如果你承擔(dān)著促進(jìn)討論的任務(wù),那么你很幸運(yùn),有許多有效的方法可以引導(dǎo)對(duì)話。你的第一步是研究。對(duì)基本概念的理解將使你能夠?qū)⑵浣榻B給各種各樣的利益相關(guān)者。
“領(lǐng)導(dǎo)對(duì)話”并不一定意味著“向同事介紹DevOps。”要達(dá)成DevOps共識(shí),你的首要任務(wù)是打下基礎(chǔ),然后讓討論有效地進(jìn)行。作為協(xié)作的“發(fā)現(xiàn)”會(huì)話,第一次對(duì)話將更加有效。對(duì)話負(fù)責(zé)人往往更有效地作為教練和裁判,而不是教育者。介紹基本思想,然后通過(guò)聆聽(tīng)和提問(wèn)來(lái)促進(jìn)對(duì)話。
如果你準(zhǔn)備在DevOps上做演示,我建議你在簡(jiǎn)介的開(kāi)頭限制使用“ DevOps”一詞。這個(gè)詞可能充滿了成見(jiàn),特別是如果你的聽(tīng)眾對(duì)DevOps接觸很少。重點(diǎn)關(guān)注基本原則,重點(diǎn)在于如何將其用于解決特定問(wèn)題。嘗試避免和阻止對(duì)DevOps的簡(jiǎn)化定義。你會(huì)聽(tīng)到類(lèi)似的聲音:
- DevOps就是自動(dòng)化
- DevOps確實(shí)是過(guò)程改進(jìn)
- DevOps工程師是配置管理方面的專(zhuān)家
這些是快速形成意見(jiàn)的示例,但并未完全理解DevOps的廣度和深度。DevOps涉及自動(dòng)化,流程改進(jìn)和配置管理等等。使用嚴(yán)格規(guī)定的處理方式,不應(yīng)將DevOps視為正統(tǒng)觀念。應(yīng)該將其視為用于實(shí)現(xiàn)業(yè)務(wù)目標(biāo)的一組工具。
隨著對(duì)話的進(jìn)行,記錄關(guān)鍵問(wèn)題。最關(guān)心的業(yè)務(wù)是什么?列出這些問(wèn)題的優(yōu)先順序。該過(guò)程將使小組專(zhuān)注于最關(guān)鍵的業(yè)務(wù)挑戰(zhàn)。一旦達(dá)成共識(shí),即可將DevOps評(píng)估為解決這些問(wèn)題的工具。
如果你的企業(yè)正在考慮對(duì)DevOps進(jìn)行大規(guī)模戰(zhàn)略采用,則你的DevOps共識(shí)討論將需要跨多部門(mén)的領(lǐng)導(dǎo)團(tuán)隊(duì)參與:
- 執(zhí)行管理(首席執(zhí)行官,首席財(cái)務(wù)官,CSO(安全),CIO / CTO)
- IT運(yùn)維管理
- 軟件開(kāi)發(fā)管理
- 項(xiàng)目管理
這些角色各自具有獨(dú)特的視角。確保代表每個(gè)角色,并有機(jī)會(huì)表達(dá)關(guān)切和提出問(wèn)題,這一點(diǎn)至關(guān)重要。公開(kāi)的討論將使這個(gè)跨職能團(tuán)隊(duì)可以考慮所建議方法的折衷方案,并平衡所有角色之間的關(guān)注點(diǎn)。該團(tuán)隊(duì)?wèi)?yīng)該在工作會(huì)議上一起學(xué)習(xí)DevOps,以開(kāi)發(fā)對(duì)你的企業(yè)有意義的DevOps定義。
那么,什么是DevOps?
DevOps不僅是一回事,因此很難編寫(xiě)一個(gè)單一的,包含所有內(nèi)容的單句定義。DevOps有很多東西,而且這些東西還可以解釋。這并不意味著嘗試定義DevOps是徒勞的。恰恰相反,DevOps建立在一些非常成熟的概念上。這些想法和原則為DevOps的實(shí)施方式提供了依據(jù),但它們并不是通往“ DevOps必殺技”的路線圖。它們是指南,是思考問(wèn)題和解決方案的方式。
在團(tuán)隊(duì)中達(dá)成DevOps共識(shí)的第一步是以通俗易懂的語(yǔ)言向同事介紹這些基本思想。為了使討論首先圍繞目標(biāo)而進(jìn)行,然后再討論方法,請(qǐng)以這些基本思想為重點(diǎn)開(kāi)始介紹。
以下是一些DevOps的首要原則,可幫助你達(dá)成DevOps共識(shí):
簡(jiǎn)短的反饋循環(huán):敏捷使用諸如站立式的儀式來(lái)確保開(kāi)發(fā)人員和利益相關(guān)者之間的定期溝通。DevOps還強(qiáng)調(diào)縮短和放大反饋回路。
精益IT:精益IT的原理主要集中于消除生產(chǎn)中的浪費(fèi)。DevOps是在控制過(guò)量生產(chǎn)和提高生產(chǎn)流程效率方面發(fā)揮了作用。
約束理論:約束理論提供了一種通過(guò)識(shí)別和“打破”(消除)約束的連續(xù)過(guò)程來(lái)提高吞吐量的方法。約束定義為多步驟生產(chǎn)過(guò)程中的任何“瓶頸”步驟,其中工作變慢并開(kāi)始積壓。敏捷實(shí)踐將工作流程可視化,有助于揭示工作障礙。DevOps將這種想法從軟件開(kāi)發(fā)生命周期擴(kuò)展到整個(gè)軟件交付生命周期。
價(jià)值流圖:所有服務(wù)都是通過(guò)不同復(fù)雜的過(guò)程生產(chǎn)的。一個(gè)人很少了解復(fù)雜的過(guò)程。每個(gè)步驟(在制造中稱(chēng)為“工作站”)通常由具有專(zhuān)門(mén)技能的員工來(lái)處理。軟件開(kāi)發(fā)工作站包括開(kāi)發(fā),測(cè)試,部署和維護(hù)。
理想情況下,創(chuàng)建價(jià)值流圖是一個(gè)協(xié)作過(guò)程。每個(gè)團(tuán)隊(duì)匯聚一堂,講述他們?cè)谏a(chǎn)中的故事,這將有助于達(dá)成DevOps共識(shí)。整個(gè)故事源于價(jià)值流圖的過(guò)程。此練習(xí)通常會(huì)暴露整個(gè)過(guò)程的效率低下。DevOps使用“價(jià)值流圖”將生產(chǎn)工作與戰(zhàn)略性企業(yè)目標(biāo)保持一致。
持續(xù)改進(jìn):持續(xù)改進(jìn)是一種尋求并消除過(guò)程中效率低下的科學(xué)實(shí)踐。持續(xù)改進(jìn)團(tuán)隊(duì)不斷評(píng)估生產(chǎn)團(tuán)隊(duì)的過(guò)程和結(jié)果。關(guān)于約束或其他低效率如何影響生產(chǎn)的理論得到了發(fā)展。然后,團(tuán)隊(duì)對(duì)流程進(jìn)行細(xì)微的更改,并測(cè)量改進(jìn)(或缺少改進(jìn))的過(guò)程。這個(gè)過(guò)程永無(wú)止境,一直在尋找消除浪費(fèi)和提高生產(chǎn)率的機(jī)會(huì)。DevOps從業(yè)人員使用持續(xù)改進(jìn)作為一種整體測(cè)量和改進(jìn)軟件交付過(guò)程的方法。
你將學(xué)到的大多數(shù)關(guān)于DevOps的知識(shí)都植根于這些基本概念中的一個(gè)或多個(gè)。在DevOps討論中采用“自下而上”的方法將使人們對(duì)第一個(gè)原則產(chǎn)生共同的共識(shí)。共同的理解是下一步的強(qiáng)大平臺(tái):弄清楚如何使DevOps適應(yīng)企業(yè)的獨(dú)特需求。
企業(yè)如何適應(yīng)DevOps?
你已經(jīng)向跨職能團(tuán)隊(duì)介紹了DevOps的基礎(chǔ)知識(shí)。你已經(jīng)共同確定了最重要的業(yè)務(wù)目標(biāo)和挑戰(zhàn)?,F(xiàn)在,你準(zhǔn)備好將它們配對(duì),并開(kāi)始談?wù)揇evOps如何解決這些挑戰(zhàn),并且你正在逐步達(dá)成DevOps共識(shí)。對(duì)話已準(zhǔn)備好從抽象過(guò)渡到方法,最后過(guò)渡到實(shí)施計(jì)劃。這仍然是一項(xiàng)復(fù)雜的工作,因此,此時(shí)最好的方法是“分而治之”。
DevOps可以分為三個(gè)主要領(lǐng)域:
- 文化/人
- 處理
- 技術(shù)
這些領(lǐng)域之間當(dāng)然存在一定的相互依存關(guān)系,但是可以由不同的利益相關(guān)者分別并行地解決它們。前面列出的每個(gè)角色都將在這些主要領(lǐng)域中占有一席之地。但是,每個(gè)人都有一個(gè)自然的重點(diǎn)領(lǐng)域。
DevOps文化
“ DevOps”始于開(kāi)發(fā)和運(yùn)營(yíng)部門(mén)之間關(guān)系的功能失調(diào)狀態(tài)。開(kāi)發(fā)人員想要快速行動(dòng),運(yùn)營(yíng)部門(mén)需要放慢進(jìn)度以保持穩(wěn)定性。在這種體制下,雙方不能同時(shí)獲勝。
DevOps旨在將軟件交付中的開(kāi)發(fā),運(yùn)營(yíng),安全性和其他利益相關(guān)者召集在一起,共同承擔(dān)使命。開(kāi)發(fā)人員應(yīng)贊賞并了解他們生產(chǎn)的軟件的操作要求。運(yùn)營(yíng)需要了解開(kāi)發(fā)路線圖,以便為新版本做好準(zhǔn)備。在整個(gè)過(guò)程中,安全人員必須坐在桌子旁。軟件交付的全部目的是向客戶交付業(yè)務(wù)價(jià)值,這最終由執(zhí)行管理層代表。
在向DevOps的文化轉(zhuǎn)變中,每個(gè)人都可以發(fā)揮作用。但是,高級(jí)管理人員應(yīng)最終負(fù)責(zé)轉(zhuǎn)變后的消息傳遞。高管人員的交流可以領(lǐng)導(dǎo)高層的變革。
DevOps流程
DevOps的過(guò)程部分基于敏捷軟件開(kāi)發(fā)方法。如果你的組織已經(jīng)使用敏捷,那么你將處于領(lǐng)先地位。你可能會(huì)發(fā)現(xiàn)一些敏捷實(shí)踐應(yīng)該改變的領(lǐng)域,以適應(yīng)更大的DevOps實(shí)踐。如果你不練習(xí)敏捷,那么這是開(kāi)始你的DevOps旅程的好地方。關(guān)于DevOps的一個(gè)常見(jiàn)問(wèn)題是:“可以在沒(méi)有敏捷的情況下實(shí)踐DevOps嗎?”簡(jiǎn)而言之,是的,但是,如果將DevOps作為敏捷實(shí)踐的更大一部分來(lái)實(shí)施,你的工作回報(bào)將會(huì)更大。
持續(xù)改進(jìn)也是一個(gè)主要主題。IT運(yùn)維和開(kāi)發(fā)人員可以與項(xiàng)目管理和業(yè)務(wù)分析師合作,以識(shí)別軟件交付所涉及的所有流程中效率低下和浪費(fèi)的領(lǐng)域。價(jià)值流映射在此領(lǐng)域可能會(huì)有所幫助,以可視化整個(gè)端到端過(guò)程。
技術(shù)
DevOps方法論的技術(shù)領(lǐng)域集中于一個(gè)主題:自動(dòng)化。任何可以自動(dòng)化的東西都必須自動(dòng)化。這包括持續(xù)集成,基礎(chǔ)架構(gòu)即代碼,自動(dòng)化部署,測(cè)試,用戶接受度等等。正如工業(yè)革命期間的自動(dòng)化改變了行業(yè)和制造業(yè)一樣,軟件交付的自動(dòng)化從根本上改變了軟件交付的過(guò)程。
自動(dòng)化任務(wù)使它們更具可重復(fù)性和可靠性。自動(dòng)化測(cè)試是自動(dòng)化帶來(lái)巨大價(jià)值的一個(gè)領(lǐng)域。當(dāng)關(guān)鍵時(shí)間早于發(fā)布日期時(shí),測(cè)試通常會(huì)延遲,有時(shí)會(huì)完全跳過(guò)。自動(dòng)化的測(cè)試過(guò)程使其可重復(fù),并降低了成本。盡早進(jìn)行測(cè)試的過(guò)程通常被稱(chēng)為“左移”,如將質(zhì)量轉(zhuǎn)移到軟件交付過(guò)程中的最早步驟。
自動(dòng)化還改善了一個(gè)關(guān)鍵指標(biāo):速度。速度本質(zhì)上是軟件發(fā)布的頻率。較小的頻繁發(fā)布要比較大的不頻繁發(fā)布要好。這與另一個(gè)精益原則有關(guān):小批量。當(dāng)功能作為小更改的一部分發(fā)布時(shí),它們的風(fēng)險(xiǎn)就較小。回滾和重新處理小的更改并不像回滾巨大,復(fù)雜的版本那樣具有破壞性。
IT運(yùn)維和軟件開(kāi)發(fā)團(tuán)隊(duì)最有能力專(zhuān)注于DevOps的技術(shù)領(lǐng)域。
DEVOPS如何落地?
DevOps可以提供工具來(lái)應(yīng)對(duì)與軟件交付相關(guān)的許多業(yè)務(wù)挑戰(zhàn)。首先,組建利益相關(guān)者跨職能團(tuán)隊(duì)。圍繞一小部分你認(rèn)為可以用來(lái)解決DevOps的業(yè)務(wù)挑戰(zhàn),建立DevOps共識(shí)。這些挑戰(zhàn)很可能屬于DevOps支柱中的一個(gè)或多個(gè)支柱:文化,流程和技術(shù)。確定一個(gè)關(guān)鍵挑戰(zhàn),然后在最適合它的DevOps支柱的背景下進(jìn)行構(gòu)架?,F(xiàn)在你可以考慮實(shí)施了。
關(guān)于實(shí)施,請(qǐng)從小做起。DevOps的改編是一項(xiàng)持續(xù)改進(jìn)工作。采取科學(xué)的方法。不要嘗試一次更改太多,否則會(huì)混淆實(shí)驗(yàn)。在問(wèn)題,工具和表明改進(jìn)的指標(biāo)上達(dá)成一致。在這種情況下,“失敗”不是災(zāi)難。正在學(xué)習(xí)。繼續(xù)嘗試進(jìn)行一些小的更改,直到你看到要改進(jìn)的目標(biāo)為止。有了耐心,持久性和專(zhuān)注力,DevOps可能是適合你企業(yè)的工具箱。