本文最初發(fā)布于 Medium 網(wǎng)站,經(jīng)原作者授權(quán)由 InfoQ 中文站翻譯并分享。
沒錯(cuò),我玩了一把標(biāo)題黨。很抱歉,但這樣做也是有理由的。我希望大家都來關(guān)注 DevOps 中一個(gè)被人低估的新趨勢(shì),即 AppOps。
在 IT 世界中,時(shí)不時(shí)學(xué)習(xí)新的流行語是家常便飯。大多數(shù)流行術(shù)語就像流星一樣,在你完全理解應(yīng)該學(xué)習(xí)的內(nèi)容之前就消失在了天際。還有一些概念會(huì)成為接下來幾年中的趨勢(shì),比如 DevOps 和 Frontend 就是兩個(gè)例子。
新的術(shù)語層出不窮,所以我們必須專注于其中真正有意義的那些。我并不相信什么流行語或者趨勢(shì),我相信的是概念。即便技術(shù)和趨勢(shì)紛紛過時(shí),概念依舊長(zhǎng)青。
所以我會(huì)在這篇文章中討論 AppOps 這個(gè)概念。讀完本文后,當(dāng)你開始聽別人談到新的 AppOps 趨勢(shì)時(shí),你就知道該怎樣跟他們討論和爭(zhēng)論了。
NoOps 趨勢(shì)
顧名思義,NoOps 趨勢(shì)旨在消除開發(fā)和運(yùn)維之間的所有摩擦,做法就是直接把運(yùn)維去掉了。
看起來這是一個(gè)頗為激進(jìn)的解決方案,但我們也用不著從字面上去理解它。正確的解釋——也是可行的解釋——是在部署和交付階段盡可能移除人為因素。
這種方法自然是由云來提供支持的,云可以幫助各種事物實(shí)現(xiàn)自動(dòng)運(yùn)作。如果你有興趣了解更多關(guān)于 NoOps 的信息,可以參考我?guī)啄昵皩懙囊黄恼隆?/p>
順便說一下,要繼續(xù)閱讀本文,你只需知道:
NoOps 做的就是減少部署管道中的人為因素,并將感知帶入開發(fā)團(tuán)隊(duì)。
因此,NoOps 與 DevOps 并不沖突。相反,它說的只是在情況允許時(shí)以巧妙的方式使用 DevOps。
專注于應(yīng)用
不管你正在編寫的是一個(gè)小型應(yīng)用程序還是一個(gè)非常大的項(xiàng)目,你都需要合適的 DevOps 設(shè)置才能繼續(xù)下去。
我簡(jiǎn)直無法想象在 2021 年會(huì)有人通過 FTP 上傳文件來更新應(yīng)用程序——如果你正在這樣做,請(qǐng)趕快停止吧。
所有人都需要 DevOps 和基礎(chǔ)設(shè)施,但是我們真的要在上面花費(fèi)時(shí)間和金錢嗎?
當(dāng)然,我們必須這樣做,因?yàn)楹锰幪黠@了!但如果我們從投資者的角度來看這個(gè)問題,我們就會(huì)明白這不是團(tuán)隊(duì)的最終目標(biāo)。
如果說技術(shù)是讓事物由概念走向?qū)嵺`的推動(dòng)因素,那么 DevOps 就是提高事物效率的方法。但是我們不能忘記我們的應(yīng)用程序應(yīng)該做的那些“事情”。
這就是 AppOps 的目的:將注意力集中在應(yīng)用層面,包括源代碼和基礎(chǔ)設(shè)施。為什么是 AppOps?
AppOps 優(yōu)勢(shì)體現(xiàn)得最明顯的場(chǎng)景之一就是基于 Kubernetes 的應(yīng)用程序。如果你打開一個(gè)個(gè)集群,你會(huì)發(fā)現(xiàn)很多 pod/service/deployment 設(shè)置大體都是一樣的。
事實(shí)上,每個(gè) PHP 應(yīng)用程序都有相同的配置,只有參數(shù)不一樣。Java、.Net 或其他應(yīng)用程序也是如此。問題是 Kubernetes 對(duì)主機(jī)應(yīng)用程序的內(nèi)容是不可知的,因此它需要將所有細(xì)節(jié)都告知應(yīng)用。
即便用的技術(shù)都是一樣的,我們也必須從頭開始處理所有新的應(yīng)用程序,為什么?
我本應(yīng)只解釋一次 PHP 應(yīng)用程序的組成方式。而且我不該浪費(fèi)時(shí)間來定義 PHP 應(yīng)用程序的部署方式,因?yàn)槭澜缟纤械?PHP 應(yīng)用程序基本上都是相同的,我希望有人(可能是供應(yīng)商)向社區(qū)提供一次正確的配置來重用。假設(shè)有一個(gè)可重用的配置。你就只需要簡(jiǎn)單地開發(fā)應(yīng)用程序就夠了,無需再費(fèi)力做那些重復(fù)性任務(wù),不再重新發(fā)明輪子。此外,你還可以專注于真正重要的事情,不用操心什么細(xì)節(jié)。
前面我說的關(guān)于 Kubernetes 的內(nèi)容還可以擴(kuò)展到虛擬機(jī)、云服務(wù)等等。這就是 AppOps 的有趣之處。
AppOps 是怎樣做到的?
可以想象,Kubernetes 沒有什么水晶球插件可以讓集群預(yù)測(cè)你正在部署的內(nèi)容。Kubernetes 是一個(gè)容器編排器,將自身確立為抽象基礎(chǔ)設(shè)施的標(biāo)準(zhǔn),你不能強(qiáng)求它做更多事情。所以我們基本上有兩種選擇:
我們來具體看看兩種方法的細(xì)節(jié)。
老方法
老方法是最簡(jiǎn)單但最不時(shí)髦的解決方案,不過你用不著重新發(fā)明輪子了。
如果你正在使用 Kubernetes,你可以使用 Helm 或 ArgoCD 等工具自動(dòng)設(shè)置應(yīng)用并創(chuàng)建可重用的應(yīng)用定義。
如果你使用的是虛擬機(jī),一個(gè)好的解決方案是準(zhǔn)備 Ansible 腳本。
此外,你可能有興趣探索 Terraform 這種簡(jiǎn)單的基于云的解決方案,用它將基礎(chǔ)設(shè)施作為代碼來管理。
除了上面這些解決方案之外,你還需要制作第一個(gè)解決方案的原型,并部署這個(gè)部分。因此我更喜歡下面這種方式!
云方法
在云時(shí)代,使用現(xiàn)成即用的服務(wù)是加快事物實(shí)現(xiàn)的巨大推動(dòng)力。
所以我們應(yīng)該首先評(píng)估易于使用的解決方案。在 Kubernetes 領(lǐng)域有一些云工具,它們可以讓你在應(yīng)用程序級(jí)別部署,無需操心背后的事物。
第一個(gè)工具是Shipa,這是一個(gè)非常有趣的新興解決方案,用來在沒有任何 DevOps 流程的情況下部署應(yīng)用程序。這個(gè)解決方案確實(shí)可以讓我們只專注于應(yīng)用程序開發(fā)而忘掉服務(wù)器。
第二個(gè)選項(xiàng)是Devtron,它提供了一個(gè)交付工作流實(shí)現(xiàn),可以簡(jiǎn)化 Kubernetes 管理并讓部署過程非常順滑。這款工具與一些預(yù)定義的配方相結(jié)合,可以讓我們忘掉基礎(chǔ)設(shè)施。
我相信很快就會(huì)有越來越多的解決方案以 AppOps 的方式實(shí)現(xiàn) DevOps 的目標(biāo),就像技術(shù)世界每次都會(huì)看到的那樣,工具永遠(yuǎn)不會(huì)成為問題。
結(jié)語
應(yīng)用程序開發(fā)和交付領(lǐng)域在過去幾年中取得了令人難以置信的創(chuàng)新和發(fā)展。
Kubernetes 是加快開發(fā)速度和減少開發(fā)與運(yùn)維之間摩擦的革命性工具中的一員。我們可以在網(wǎng)絡(luò)上找到大量資源,并且云也提供了巨大的推動(dòng)力。
雖然這些解決方案都推動(dòng)了全球的數(shù)字化轉(zhuǎn)型,但我們并沒有就此止步。我們現(xiàn)在希望不要再為管理這些工具和復(fù)雜性付出那么多精力,這樣才能更多地關(guān)注應(yīng)用程序的開發(fā),并為最終用戶帶來更多價(jià)值。
AppOps 是實(shí)現(xiàn)這一目標(biāo)的一種方法。有了那些從更高視角管理基礎(chǔ)設(shè)施的工具后,我們就能隱藏復(fù)雜性,專注于那些對(duì)業(yè)務(wù)真正重要的事情。并且這樣做是可行的,我們已經(jīng)有許多工具可以很好地實(shí)現(xiàn)這一目標(biāo)。
本文由 InfoQ 翻譯自 Daniele Fontani 的文章:https://betterprogramming.pub/devops-appops-f096cdbb02ac
聯(lián)系客服