本文來自微信公眾號“開源云中文社區(qū)”。
Matt Stephenson在Starburst Data工作之前,曾在Square工作。在那里,他學(xué)到了一些關(guān)于使用遺留基礎(chǔ)設(shè)施即代碼(IaC)的慘痛教訓(xùn)。
Starburst的高級首席軟件工程師Stephenson表示:“我們構(gòu)建了一個完整的系統(tǒng),用Terraform和Helm進(jìn)行了大量編排,并與我們自己的一些后端服務(wù)進(jìn)行了集成。”
“必須建立和維護(hù)這項服務(wù)的經(jīng)歷讓我審視了這個行業(yè)的可用性。”他說,問題不在于Terraform本身,而是“執(zhí)行Terraform的所有代碼,管理Terraform本身的輸入和輸出的所有代碼。”
遺留IaC可以給工程團隊的生活帶來許多挑戰(zhàn),包括:
——在定義配置時,遵循所需的約定和標(biāo)準(zhǔn)可能會變得更加復(fù)雜,而且復(fù)雜性會隨著擴展而增加。
——因此,配置漂移很常見,并可能導(dǎo)致不合規(guī)和服務(wù)中斷。(一般來說,錯誤配置是安全漏洞的主要原因。)
——必要的集成和功能并不總是適用于特定的用例。
——遺留IaC可能會帶來重大的維護(hù)需求,而且很難招聘和留住具備這些技能的工程師。
Stephenson說:“許多遺留基礎(chǔ)設(shè)施即代碼產(chǎn)品都有自己的語言,有自己的環(huán)境,你必須成為其中的一名專家,才能有效地使用它們?;蛘吣惚仨毜玫侥撤N支持,才能使用其中一種。”
在Starburst Data,他負(fù)責(zé)公司Galaxy產(chǎn)品的架構(gòu),這是一個托管的數(shù)據(jù)湖分析平臺。他的團隊已經(jīng)逐漸將遺留IaC換成了Pulumi,這是一款開源的IaC產(chǎn)品,允許用任何編程語言構(gòu)建基礎(chǔ)設(shè)施。
Stephenson將出席6月15日舉行的PulumiUP虛擬用戶會議,專門討論“基礎(chǔ)設(shè)施即代碼”,如何實現(xiàn)更快的應(yīng)用程序開發(fā),以及用戶如何應(yīng)對遺留系統(tǒng)的挑戰(zhàn)。
他說,在會議上,他將談?wù)揚ulumi的自動化API。“這對我們來說是一個很大的驅(qū)動力,能夠編排我們所有的Pulumi堆棧,而不必編寫我們過去必須編寫的整個服務(wù)。”
賦予整個團隊權(quán)力
Stephenson說,Pulumi和遺留IaC解決方案的區(qū)別之一是,“它基于人們在大學(xué)里學(xué)習(xí),或者在加入這個行業(yè)時學(xué)得很快的編程語言。”
Pulumi允許開發(fā)人員使用通用語言構(gòu)建基礎(chǔ)設(shè)施,包括任何Java語言(Java、Scala、Clojure、Groovy、Kotlin),.NET(C#、F#、PowerShell),Node.js(JavaScript、TypeScript),Go、Python甚至YAML。這有助于使供應(yīng)基礎(chǔ)設(shè)施成為工程團隊中更多成員可以做的事情。
在使用Pulumi之前,Stephenson說:“大多數(shù)是更資深的工程師會參與設(shè)置所有的基礎(chǔ)設(shè)施和代碼環(huán)境。如今,我們有不同技能水平的人在其中工作。”
現(xiàn)在,他說,即使是所在組織中沒有基礎(chǔ)設(shè)施或現(xiàn)場可靠性工程背景的人,“當(dāng)他們進(jìn)行產(chǎn)品開發(fā)時,他們也可以進(jìn)去做他們需要的改變。”
因此,Stephenson補充道,團隊不太需要雇傭?qū)iT針對IaC的專家,更多的人有能力處理問題。
“如果發(fā)生涉及基礎(chǔ)設(shè)施的事件,很多時候人們可以做出所需的更改,以執(zhí)行持續(xù)交付流程并解決問題。”
尋求靈活性
華盛頓信托銀行聘請的第一位DevOps工程師Dennis Sauvé也將在PulumiUP上發(fā)表演講,講述他的公司從完全的內(nèi)部部署系統(tǒng)轉(zhuǎn)變?yōu)樵贛icrosoft Azure Cloud上運行的系統(tǒng)的經(jīng)驗,IaC主要由Pulumi提供,用TypeScript編寫。
在該行聘請Sauvé之前,它決定啟動云服務(wù),以推進(jìn)客戶協(xié)作工具等創(chuàng)新,使華盛頓信托的關(guān)系經(jīng)理能夠直接與客戶交談。Sauvé表示,它已經(jīng)確定Azure的通信服務(wù)將幫助更容易地構(gòu)建該應(yīng)用程序。但該行也希望未來可能構(gòu)建的應(yīng)用程序以及可能部署這些應(yīng)用程序的云具有靈活性。
Sauvé說,Pulumi提供了他的團隊所需要的靈活性和選擇。“你可以選擇云提供商。一旦有了云提供商,你就可以選擇一種想要構(gòu)建堆棧的語言,而他們支持它。”
“因此,我們可以放心,不僅可以改變編寫基礎(chǔ)設(shè)施即代碼的語言,還可以改變云提供商。在考慮不同的提供商時,這是一個巨大的好處。”
節(jié)省時間和精力
Sauvé說,Pulumi給華盛頓信托銀行帶來的最大好處之一是,它能讓團隊節(jié)省時間和精力。他和開發(fā)團隊一直在創(chuàng)建用于創(chuàng)建資源的最佳實踐模板。
與開發(fā)人員和運維工程師之間可能存在的來回交流不同,“開發(fā)人員現(xiàn)在可以進(jìn)入基礎(chǔ)設(shè)施包,找到他們想要構(gòu)建的資源,選擇并設(shè)置它進(jìn)行部署。這確實加快了開發(fā)和測試環(huán)境的速度。”
不僅如此,他補充道,Pulumi已經(jīng)成為一個標(biāo)準(zhǔn)化工具,確保整個組織以同樣的方式創(chuàng)建資源。
然而,他補充道,移動到云端和Pulumi,并非一帆風(fēng)順。值得注意的是,“從文件大小的角度來看,原生Typescript包只是一個龐大的包,對使用的資源有點浪費,但它在生產(chǎn)中有效。”
他指出,Pulumi將很快發(fā)布TypeScript包的下一代版本,該版本“應(yīng)該非常精簡,并解決一些性能問題”。
Stephenson承認(rèn),放棄遺留IaC一開始可能會造成一些干擾。但他說,從長遠(yuǎn)來看,它賦予了組織中更廣泛的人群權(quán)力。