技術(shù)如何改變敏捷的規(guī)則
當(dāng)我們開(kāi)始推行敏捷時(shí),還沒(méi)有容器和 Kubernetes。但是它們改變了過(guò)去最困難的部分:將敏捷性從小團(tuán)隊(duì)?wèi)?yīng)用到整個(gè)組織。
越來(lái)越多的企業(yè)正因?yàn)橐粋€(gè)非常明顯的原因開(kāi)始嘗試敏捷和 DevOps: 企業(yè)需要通過(guò)更快的速度和更多的實(shí)驗(yàn)為創(chuàng)新和競(jìng)爭(zhēng)性提供優(yōu)勢(shì)。而 DevOps 將幫助我們得到所需的創(chuàng)新速度。但是,在小團(tuán)隊(duì)或初創(chuàng)企業(yè)中實(shí)踐 DevOps 與進(jìn)行大規(guī)模實(shí)踐完全是兩碼事。我們都明白這樣的一個(gè)事實(shí),那就是在十個(gè)人的跨職能團(tuán)隊(duì)中能夠很好地解決問(wèn)題的方案,當(dāng)將相同的模式應(yīng)用到一百個(gè)人的團(tuán)隊(duì)中時(shí)就可能無(wú)法奏效。這條道路是如此艱難,以至于 IT 者最簡(jiǎn)單的應(yīng)對(duì)就是將敏捷方法的推行再推遲一年。
但那樣的時(shí)代已經(jīng)結(jié)束了。如果你已經(jīng)嘗試過(guò),但是沒(méi)有成功,那么現(xiàn)在是時(shí)候重新開(kāi)始了。
到目前為止,DevOps 需要為許多組織提供個(gè)性化的解決方案,因此往往需要進(jìn)行大量的調(diào)整以及付出額外的工作。但在今天,Linux 容器和 Kubernetes 正在推動(dòng) DevOps 工具和過(guò)程的標(biāo)準(zhǔn)化。而這樣的標(biāo)準(zhǔn)化將會(huì)加速整個(gè)軟件開(kāi)發(fā)過(guò)程。因此,我們用來(lái)實(shí)踐 DevOps 工作方式的技術(shù)最終能夠滿足我們加快軟件開(kāi)發(fā)速度的愿望。
Linux 容器和 Kubernetes 正在改變團(tuán)隊(duì)交互的方式。此外,你可以在 Kubernetes 平臺(tái)上運(yùn)行任何能夠在 Linux 運(yùn)行的應(yīng)用程序。這意味著什么呢?你可以運(yùn)行大量的企業(yè)及應(yīng)用程序(甚至可以解決以前令人煩惱的 Windows 和 Linux 之間的協(xié)調(diào)問(wèn)題)。容器和 Kubernetes 能夠滿足你未來(lái)將要運(yùn)行的幾乎所有工作。它們正在經(jīng)受著未來(lái)的考驗(yàn),以應(yīng)對(duì)機(jī)器學(xué)習(xí)、人工智能和分析工作等下一代解決問(wèn)題工具。
讓我們以機(jī)器學(xué)習(xí)為例來(lái)思考一下。今天,人們可以在大量的企業(yè)數(shù)據(jù)中找到一些模式。當(dāng)機(jī)器發(fā)現(xiàn)這些模式時(shí)(想想機(jī)器學(xué)習(xí)),你的員工就能更快地采取行動(dòng)。隨著人工智能的加入,機(jī)器不僅可以發(fā)現(xiàn)模式,還可以對(duì)模式進(jìn)行操作。如今,一個(gè)積極的軟件開(kāi)發(fā)沖刺周期也就是三個(gè)星期而已。有了人工智能,機(jī)器每秒可以多次修改代碼。創(chuàng)業(yè)公司會(huì)利用這種能力來(lái)“打擾你”。
考慮一下你需要多快才能參與到競(jìng)爭(zhēng)當(dāng)中。如果你對(duì)于無(wú)法對(duì)于 DevOps 和每周一個(gè)迭代周期充滿信心,那么考慮一下當(dāng)那個(gè)創(chuàng)業(yè)公司將 AI 驅(qū)動(dòng)的過(guò)程指向你時(shí)會(huì)發(fā)生什么?現(xiàn)在是時(shí)候轉(zhuǎn)向 DevOps 的工作方式了,否則就會(huì)像你的競(jìng)爭(zhēng)對(duì)手一樣被甩在后面。
容器技術(shù)如何改變團(tuán)隊(duì)的工作?
DevOps 使得許多試圖將這種工作方式擴(kuò)展到更大范圍的團(tuán)隊(duì)感到沮喪。即使許多 IT(和業(yè)務(wù))人員之前都聽(tīng)說(shuō)過(guò)敏捷相關(guān)的語(yǔ)言、框架、模型(如 DevOps),而這些都有望徹底應(yīng)用程序開(kāi)發(fā)和 IT 流程,但他們還是對(duì)此持懷疑態(tài)度。
向你的受眾“推銷”快速開(kāi)發(fā)沖刺也不是一件容易的事情。想象一下,如果你以這種方式買了一棟房子 —— 你將不再需要向開(kāi)發(fā)商支付固定的金額,而是會(huì)得到這樣的信息:“我們將在 4 周內(nèi)澆筑完地基,其成本是 X,之后再搭建房屋框架和鋪設(shè)電路,但是我們現(xiàn)在只能夠知道地基完成的時(shí)間表。”人們已經(jīng)習(xí)慣了買房子的時(shí)候有一個(gè)預(yù)先的價(jià)格和交付時(shí)間表。
挑戰(zhàn)在于構(gòu)建軟件與構(gòu)建房屋不同。同一個(gè)建筑商往往建造了成千上萬(wàn)個(gè)完全相同的房子,而軟件項(xiàng)目從來(lái)都各不相同。這是你要克服的第一個(gè)障礙。
開(kāi)發(fā)和運(yùn)維團(tuán)隊(duì)的工作方式確實(shí)不同,我之所以知道這一點(diǎn)是因?yàn)槲以?jīng)從事過(guò)這兩方面的工作。企業(yè)往往會(huì)用不同的方式來(lái)激勵(lì)他們,開(kāi)發(fā)人員會(huì)因?yàn)楦暮蛣?chuàng)建而獲得獎(jiǎng)勵(lì),而運(yùn)維專家則會(huì)因降低成本和確保安全性而獲得獎(jiǎng)勵(lì)。我們會(huì)把他們分成不同的小組,并且盡量減少互動(dòng)。而這些角色通常會(huì)吸引那些思維方式完全不同的技術(shù)人員。但是這樣的解決方案注定會(huì)失敗,你必須打破橫亙?cè)陂_(kāi)發(fā)和運(yùn)維之間的藩籬。
想想傳統(tǒng)情況下會(huì)發(fā)生什么。業(yè)務(wù)會(huì)把需求扔過(guò)墻,這是因?yàn)樗麄冊(cè)?ldquo;買房”模式下運(yùn)作,并且說(shuō)上一句“我們 9 個(gè)月后見(jiàn)。”開(kāi)發(fā)人員根據(jù)這些需求進(jìn)行開(kāi)發(fā),并根據(jù)技術(shù)約束的需要進(jìn)行更改。然后,他們把它扔過(guò)墻傳遞給運(yùn)維人員,并說(shuō)一句“搞清楚如何運(yùn)行這個(gè)軟件”。然后,運(yùn)維人員勤就會(huì)勤奮地進(jìn)行大量更改,使軟件與基礎(chǔ)設(shè)施保持一致。然而,最終的結(jié)果是什么呢?
通常情況下,當(dāng)業(yè)務(wù)人員看到需求實(shí)現(xiàn)的最終結(jié)果時(shí)甚至根本辨認(rèn)不出。在過(guò)去 20 年的大部分時(shí)間里,我們一次又一次地目睹了這種模式在軟件行業(yè)中上演。而現(xiàn)在,是時(shí)候改變了。
Linux 容器能夠真正地解決這樣的問(wèn)題,這是因?yàn)槿萜鲝浐祥_(kāi)發(fā)和運(yùn)維之間的鴻溝。容器技術(shù)允許兩個(gè)團(tuán)隊(duì)共同理解和設(shè)計(jì)所有的關(guān)鍵需求,但仍然獨(dú)立地履行各自團(tuán)隊(duì)的職責(zé)。
有了容器技術(shù),我們可以使得運(yùn)維團(tuán)隊(duì)的規(guī)模更小,但依舊能夠承擔(dān)起數(shù)百萬(wàn)應(yīng)用程序的運(yùn)維工作,并且能夠使得開(kāi)發(fā)團(tuán)隊(duì)可以更加快速地根據(jù)需要更改軟件。(在較大的組織中,所需的速度可能比運(yùn)維人員的響應(yīng)速度更快。)
有了容器技術(shù),你可以將所需要交付的內(nèi)容與它運(yùn)行的位置分開(kāi)。你的運(yùn)維團(tuán)隊(duì)只需要負(fù)責(zé)運(yùn)行容器的主機(jī)和安全的內(nèi)存占用,僅此而已。這意味著什么呢?
首先,這意味著你現(xiàn)在可以和團(tuán)隊(duì)一起實(shí)踐 DevOps 了。沒(méi)錯(cuò),只需要讓團(tuán)隊(duì)專注于他們已經(jīng)擁有的專業(yè)知識(shí),而對(duì)于容器,只需讓團(tuán)隊(duì)了解所需集成依賴關(guān)系的必要知識(shí)即可。
如果你想要重新訓(xùn)練每個(gè)人,沒(méi)有人會(huì)精通所有事情。容器技術(shù)允許團(tuán)隊(duì)之間進(jìn)行交互,但同時(shí)也會(huì)為每個(gè)團(tuán)隊(duì)提供一個(gè)圍繞該團(tuán)隊(duì)優(yōu)勢(shì)而構(gòu)建的強(qiáng)大邊界。開(kāi)發(fā)人員會(huì)知道需要消耗什么資源,但不需要知道如何使其大規(guī)模運(yùn)行。運(yùn)維團(tuán)隊(duì)了解核心基礎(chǔ)設(shè)施,但不需要了解應(yīng)用程序的細(xì)節(jié)。此外,運(yùn)維團(tuán)隊(duì)也可以通過(guò)更新應(yīng)用程序來(lái)解決新的安全問(wèn)題,以免你成為下一個(gè)數(shù)據(jù)泄露的熱門話題。
想要為一個(gè)大型 IT 組織,比如 30000 人的團(tuán)隊(duì)教授運(yùn)維和開(kāi)發(fā)技能?那或許需要花費(fèi)你十年的時(shí)間,而你可能并沒(méi)有那么多時(shí)間。
當(dāng)人們談?wù)?ldquo;構(gòu)建新的云原生應(yīng)用程序?qū)椭覀償[脫這個(gè)問(wèn)題”時(shí),請(qǐng)批判性地進(jìn)行思考。你可以在 10 個(gè)人的團(tuán)隊(duì)中構(gòu)建云原生應(yīng)用程序,但這對(duì)《財(cái)富》雜志前 1000 強(qiáng)的企業(yè)而言或許并不適用。除非你不再需要依賴現(xiàn)有的團(tuán)隊(duì),否則你無(wú)法一個(gè)接一個(gè)地構(gòu)建新的微服務(wù):你最終將成為一個(gè)孤立的組織。這是一個(gè)誘人的想法,但你不能指望這些應(yīng)用程序來(lái)重新定義你的業(yè)務(wù)。我還沒(méi)見(jiàn)過(guò)哪家公司能在如此大規(guī)模的并行開(kāi)發(fā)中獲得成功。IT 預(yù)算已經(jīng)受到限制;在很長(zhǎng)時(shí)間內(nèi),將預(yù)算翻倍甚至三倍是不現(xiàn)實(shí)的。
當(dāng)奇跡發(fā)生時(shí):你好,速度
Linux 容器就是為擴(kuò)容而生的。一旦你開(kāi)始這樣做,Kubernetes 之類的編制工具就會(huì)發(fā)揮作用,這是因?yàn)槟銓⑿枰\(yùn)行數(shù)千個(gè)容器。應(yīng)用程序?qū)⒉粌H僅由一個(gè)容器組成,它們將依賴于許多不同的部分,所有的部分都會(huì)作為一個(gè)單元運(yùn)行在容器上。如果不這樣做,你的應(yīng)用程序?qū)o(wú)法在生產(chǎn)環(huán)境中很好地運(yùn)行。
思考一下有多少小滑輪和杠桿組合在一起來(lái)支撐你的業(yè)務(wù),對(duì)于任何應(yīng)用程序都是如此。開(kāi)發(fā)人員負(fù)責(zé)應(yīng)用程序中的所有滑輪和杠桿。(如果開(kāi)發(fā)人員沒(méi)有這些組件,你可能會(huì)在集成時(shí)做噩夢(mèng)。)與此同時(shí),無(wú)論是在線下還是在云上,運(yùn)維團(tuán)隊(duì)都會(huì)負(fù)責(zé)構(gòu)成基礎(chǔ)設(shè)施的所有滑輪和杠桿。做一個(gè)較為抽象的比喻,使用Kubernetes,你的運(yùn)維團(tuán)隊(duì)就可以為應(yīng)用程序提供運(yùn)行所需的燃料,但又不必成為所有方面的專家。
開(kāi)發(fā)人員進(jìn)行實(shí)驗(yàn),運(yùn)維團(tuán)隊(duì)則保持基礎(chǔ)設(shè)施的安全和可靠。這樣的組合使得企業(yè)敢于承擔(dān)小風(fēng)險(xiǎn),從而實(shí)現(xiàn)創(chuàng)新。不同于打幾個(gè)孤注一擲的賭,公司中真正的實(shí)驗(yàn)往往是循序漸進(jìn)的和快速的。
從個(gè)人經(jīng)驗(yàn)來(lái)看,這就是組織內(nèi)部發(fā)生的顯著變化:因?yàn)槿藗冋f(shuō):“我們?nèi)绾瓮ㄟ^(guò)改變計(jì)劃來(lái)真正地利用這種實(shí)驗(yàn)?zāi)芰Γ?rdquo;它會(huì)強(qiáng)制執(zhí)行敏捷計(jì)劃。
舉個(gè)例子,使用 DevOps 模型、容器和 Kubernetes 的 KeyBank 如今每天都會(huì)部署代碼。(觀看視頻,其中主導(dǎo)了 KeyBank 持續(xù)交付和反饋的 John Rzeszotarski 將解釋這一變化。)類似地,Macquarie 銀行也借助 DevOps 和容器技術(shù)每天將一些東西投入生產(chǎn)環(huán)境。
一旦你每天都推出軟件,它就會(huì)改變你計(jì)劃的每一個(gè)方面,并且會(huì)加速業(yè)務(wù)的變化速度。Macquarie 銀行和金融服務(wù)集團(tuán)的 CDO,Luis Uguina 表示:“創(chuàng)意可以在一天內(nèi)觸達(dá)客戶。”(參見(jiàn)對(duì) Red Hat 與 Macquarie 銀行合作的案例研究)。
是時(shí)候去創(chuàng)造一些偉大的東西了
Macquarie 的例子說(shuō)明了速度的力量。這將如何改變你的經(jīng)營(yíng)方式?記住,Macquarie 不是一家初創(chuàng)企業(yè)。這是 CIO 們所面臨的顛覆性力量,它不僅來(lái)自新的市場(chǎng)進(jìn)入者,也來(lái)自老牌同行。
開(kāi)發(fā)人員的自由還改變了運(yùn)營(yíng)敏捷商店的 CIO 們的人才方程式。突然之間,大公司里的個(gè)體(即使不是在最熱門的行業(yè)或地區(qū))也可以產(chǎn)生巨大的影響。Macquarie 利用這一變動(dòng)作為招聘工具,并向開(kāi)發(fā)人員承諾,所有新招聘的員工將會(huì)在第一周內(nèi)推出新產(chǎn)品。
與此同時(shí),在這個(gè)基于云的計(jì)算和存儲(chǔ)能力的時(shí)代,我們比以往任何時(shí)候都擁有更多可用的基礎(chǔ)設(shè)施。考慮到機(jī)器學(xué)習(xí)和人工智能工具將很快實(shí)現(xiàn)的飛躍,這是幸運(yùn)的。
所有這些都說(shuō)明現(xiàn)在正是打造偉大事業(yè)的好時(shí)機(jī)。考慮到市場(chǎng)創(chuàng)新的速度,你需要不斷地創(chuàng)造偉大的東西來(lái)保持客戶的忠誠(chéng)度。因此,如果你一直在等待將賭注押在 DevOps 上,那么現(xiàn)在就是正確的時(shí)機(jī)。容器技術(shù)和 Kubernetes 改變了規(guī)則,并且對(duì)你有利。