基礎(chǔ)設(shè)施即代碼:為更快的開(kāi)發(fā)而現(xiàn)代化

與開(kāi)發(fā)人員和運(yùn)維工程師之間可能存在的來(lái)回交流不同,“開(kāi)發(fā)人員現(xiàn)在可以進(jìn)入基礎(chǔ)設(shè)施包,找到他們想要構(gòu)建的資源,選擇并設(shè)置它進(jìn)行部署。這確實(shí)加快了開(kāi)發(fā)和測(cè)試環(huán)境的速度?!?

本文來(lái)自微信公眾號(hào)“開(kāi)源云中文社區(qū)”。

Matt Stephenson在Starburst Data工作之前,曾在Square工作。在那里,他學(xué)到了一些關(guān)于使用遺留基礎(chǔ)設(shè)施即代碼(IaC)的慘痛教訓(xùn)。

Starburst的高級(jí)首席軟件工程師Stephenson表示:“我們構(gòu)建了一個(gè)完整的系統(tǒng),用Terraform和Helm進(jìn)行了大量編排,并與我們自己的一些后端服務(wù)進(jìn)行了集成。”

“必須建立和維護(hù)這項(xiàng)服務(wù)的經(jīng)歷讓我審視了這個(gè)行業(yè)的可用性。”他說(shuō),問(wèn)題不在于Terraform本身,而是“執(zhí)行Terraform的所有代碼,管理Terraform本身的輸入和輸出的所有代碼。”

遺留IaC可以給工程團(tuán)隊(duì)的生活帶來(lái)許多挑戰(zhàn),包括:

——在定義配置時(shí),遵循所需的約定和標(biāo)準(zhǔn)可能會(huì)變得更加復(fù)雜,而且復(fù)雜性會(huì)隨著擴(kuò)展而增加。

——因此,配置漂移很常見(jiàn),并可能導(dǎo)致不合規(guī)和服務(wù)中斷。(一般來(lái)說(shuō),錯(cuò)誤配置是安全漏洞的主要原因。)

——必要的集成和功能并不總是適用于特定的用例。

——遺留IaC可能會(huì)帶來(lái)重大的維護(hù)需求,而且很難招聘和留住具備這些技能的工程師。

Stephenson說(shuō):“許多遺留基礎(chǔ)設(shè)施即代碼產(chǎn)品都有自己的語(yǔ)言,有自己的環(huán)境,你必須成為其中的一名專(zhuān)家,才能有效地使用它們?;蛘吣惚仨毜玫侥撤N支持,才能使用其中一種。”

在Starburst Data,他負(fù)責(zé)公司Galaxy產(chǎn)品的架構(gòu),這是一個(gè)托管的數(shù)據(jù)湖分析平臺(tái)。他的團(tuán)隊(duì)已經(jīng)逐漸將遺留IaC換成了Pulumi,這是一款開(kāi)源的IaC產(chǎn)品,允許用任何編程語(yǔ)言構(gòu)建基礎(chǔ)設(shè)施。

Stephenson將出席6月15日舉行的PulumiUP虛擬用戶會(huì)議,專(zhuān)門(mén)討論“基礎(chǔ)設(shè)施即代碼”,如何實(shí)現(xiàn)更快的應(yīng)用程序開(kāi)發(fā),以及用戶如何應(yīng)對(duì)遺留系統(tǒng)的挑戰(zhàn)。

他說(shuō),在會(huì)議上,他將談?wù)揚(yáng)ulumi的自動(dòng)化API。“這對(duì)我們來(lái)說(shuō)是一個(gè)很大的驅(qū)動(dòng)力,能夠編排我們所有的Pulumi堆棧,而不必編寫(xiě)我們過(guò)去必須編寫(xiě)的整個(gè)服務(wù)。”

賦予整個(gè)團(tuán)隊(duì)權(quán)力

Stephenson說(shuō),Pulumi和遺留IaC解決方案的區(qū)別之一是,“它基于人們?cè)诖髮W(xué)里學(xué)習(xí),或者在加入這個(gè)行業(yè)時(shí)學(xué)得很快的編程語(yǔ)言。”

Pulumi允許開(kāi)發(fā)人員使用通用語(yǔ)言構(gòu)建基礎(chǔ)設(shè)施,包括任何Java語(yǔ)言(Java、Scala、Clojure、Groovy、Kotlin),.NET(C#、F#、PowerShell),Node.js(JavaScript、TypeScript),Go、Python甚至YAML。這有助于使供應(yīng)基礎(chǔ)設(shè)施成為工程團(tuán)隊(duì)中更多成員可以做的事情。

在使用Pulumi之前,Stephenson說(shuō):“大多數(shù)是更資深的工程師會(huì)參與設(shè)置所有的基礎(chǔ)設(shè)施和代碼環(huán)境。如今,我們有不同技能水平的人在其中工作。”

現(xiàn)在,他說(shuō),即使是所在組織中沒(méi)有基礎(chǔ)設(shè)施或現(xiàn)場(chǎng)可靠性工程背景的人,“當(dāng)他們進(jìn)行產(chǎn)品開(kāi)發(fā)時(shí),他們也可以進(jìn)去做他們需要的改變。”

因此,Stephenson補(bǔ)充道,團(tuán)隊(duì)不太需要雇傭?qū)iT(mén)針對(duì)IaC的專(zhuān)家,更多的人有能力處理問(wèn)題。

“如果發(fā)生涉及基礎(chǔ)設(shè)施的事件,很多時(shí)候人們可以做出所需的更改,以執(zhí)行持續(xù)交付流程并解決問(wèn)題。”

尋求靈活性

華盛頓信托銀行聘請(qǐng)的第一位DevOps工程師Dennis Sauvé也將在PulumiUP上發(fā)表演講,講述他的公司從完全的內(nèi)部部署系統(tǒng)轉(zhuǎn)變?yōu)樵贛icrosoft Azure Cloud上運(yùn)行的系統(tǒng)的經(jīng)驗(yàn),IaC主要由Pulumi提供,用TypeScript編寫(xiě)。

在該行聘請(qǐng)Sauvé之前,它決定啟動(dòng)云服務(wù),以推進(jìn)客戶協(xié)作工具等創(chuàng)新,使華盛頓信托的關(guān)系經(jīng)理能夠直接與客戶交談。Sauvé表示,它已經(jīng)確定Azure的通信服務(wù)將幫助更容易地構(gòu)建該應(yīng)用程序。但該行也希望未來(lái)可能構(gòu)建的應(yīng)用程序以及可能部署這些應(yīng)用程序的云具有靈活性。

Sauvé說(shuō),Pulumi提供了他的團(tuán)隊(duì)所需要的靈活性和選擇。“你可以選擇云提供商。一旦有了云提供商,你就可以選擇一種想要構(gòu)建堆棧的語(yǔ)言,而他們支持它。”

“因此,我們可以放心,不僅可以改變編寫(xiě)基礎(chǔ)設(shè)施即代碼的語(yǔ)言,還可以改變?cè)铺峁┥?。在考慮不同的提供商時(shí),這是一個(gè)巨大的好處。”

節(jié)省時(shí)間和精力

Sauvé說(shuō),Pulumi給華盛頓信托銀行帶來(lái)的最大好處之一是,它能讓團(tuán)隊(duì)節(jié)省時(shí)間和精力。他和開(kāi)發(fā)團(tuán)隊(duì)一直在創(chuàng)建用于創(chuàng)建資源的最佳實(shí)踐模板。

與開(kāi)發(fā)人員和運(yùn)維工程師之間可能存在的來(lái)回交流不同,“開(kāi)發(fā)人員現(xiàn)在可以進(jìn)入基礎(chǔ)設(shè)施包,找到他們想要構(gòu)建的資源,選擇并設(shè)置它進(jìn)行部署。這確實(shí)加快了開(kāi)發(fā)和測(cè)試環(huán)境的速度。”

不僅如此,他補(bǔ)充道,Pulumi已經(jīng)成為一個(gè)標(biāo)準(zhǔn)化工具,確保整個(gè)組織以同樣的方式創(chuàng)建資源。

然而,他補(bǔ)充道,移動(dòng)到云端和Pulumi,并非一帆風(fēng)順。值得注意的是,“從文件大小的角度來(lái)看,原生Typescript包只是一個(gè)龐大的包,對(duì)使用的資源有點(diǎn)浪費(fèi),但它在生產(chǎn)中有效。”

他指出,Pulumi將很快發(fā)布TypeScript包的下一代版本,該版本“應(yīng)該非常精簡(jiǎn),并解決一些性能問(wèn)題”。

Stephenson承認(rèn),放棄遺留IaC一開(kāi)始可能會(huì)造成一些干擾。但他說(shuō),從長(zhǎng)遠(yuǎn)來(lái)看,它賦予了組織中更廣泛的人群權(quán)力。

THEEND

最新評(píng)論(評(píng)論僅代表用戶觀點(diǎn))

更多
暫無(wú)評(píng)論