世界各地的開(kāi)發(fā)者正在經(jīng)歷著迄今為止最大的軟件變革:從單體、單節(jié)點(diǎn)的應(yīng)用程序遷移到運(yùn)行在分布式系統(tǒng)上的基于微服務(wù)的云原生應(yīng)用程序。
Lightbend最近完成了一項(xiàng)對(duì)1000多名者和其他IT決策者的調(diào)查,揭示了企業(yè)在這一轉(zhuǎn)變過(guò)程中面臨的挑戰(zhàn)以及如何應(yīng)對(duì)這些挑戰(zhàn)。作為一名開(kāi)發(fā)人員或軟件工程師,你可以從這項(xiàng)研究了解到一些有用的東西。
別忘了為什么要采用云原生技術(shù)
你很容易陷入這樣一個(gè)困境:你想搞明白在使用什么技術(shù),以至于你忘記了當(dāng)初為什么要使用它們。但請(qǐng)記住,采用云基礎(chǔ)設(shè)施——無(wú)論是自己數(shù)據(jù)中心的Kubernetes集群,還是公共云中的無(wú)服務(wù)器API——不是目標(biāo)。目標(biāo)是幫助組織構(gòu)建更具可伸縮性和靈活性的應(yīng)用程序,并更快地完成構(gòu)建。如果你在構(gòu)建應(yīng)用程序時(shí)沒(méi)有真正考慮云基礎(chǔ)設(shè)施的優(yōu)缺點(diǎn),那么很有可能沒(méi)有真正實(shí)現(xiàn)組織的目標(biāo)。
設(shè)計(jì)云原生應(yīng)用程序來(lái)處理無(wú)響應(yīng)或損壞的組件
節(jié)點(diǎn)崩潰。網(wǎng)絡(luò)故障。遠(yuǎn)程API會(huì)產(chǎn)生意外的結(jié)果。云原生開(kāi)發(fā)需要你“優(yōu)雅”地處理這些問(wèn)題。應(yīng)用程序需要給用戶某種響應(yīng),即使一個(gè)或多個(gè)組件損壞或無(wú)響應(yīng)。你還需要考慮一旦損壞或不可用的組件再次工作時(shí)如何恢復(fù)。
別忘了安全性和法規(guī)遵從性
云原生應(yīng)用程序面臨獨(dú)特的合規(guī)性和安全挑戰(zhàn)。接受調(diào)查的高管們一再表示,他們希望開(kāi)發(fā)者能在這些問(wèn)題上多加考慮。早期將安全和合規(guī)團(tuán)隊(duì)引入開(kāi)發(fā)過(guò)程并愿意投入工作以了解其行業(yè)的安全性和合規(guī)性要求的開(kāi)發(fā)人員不僅會(huì)在工作場(chǎng)所取得領(lǐng)先,也可以通過(guò)避免在開(kāi)發(fā)周期中進(jìn)一步重構(gòu)特性或整個(gè)應(yīng)用程序,提高團(tuán)隊(duì)的工作效率。
一定要盡快找到可以轉(zhuǎn)移到微服務(wù)或無(wú)服務(wù)器的功能
云原生開(kāi)發(fā)不是一個(gè)全有或全無(wú)的命題。你不必一次扔掉所有的單體。你可以構(gòu)建面向微服務(wù)的試點(diǎn)應(yīng)用程序,同時(shí)查看所有現(xiàn)有的單體應(yīng)用程序,并考慮哪些功能可以中斷。跨多個(gè)應(yīng)用程序共享的功能,如支付處理,是一個(gè)不錯(cuò)的選擇。CPU密集型特性也會(huì)降低整個(gè)應(yīng)用程序的速度。鏡像轉(zhuǎn)換是一個(gè)典型的例子,它可能最好在功能即服務(wù)(FaaS)平臺(tái)上單獨(dú)運(yùn)行。FaaS不會(huì)強(qiáng)迫用戶等待應(yīng)用程序調(diào)整上傳的一些鏡像的大小,而是可以在應(yīng)用程序的其余部分繼續(xù)運(yùn)行時(shí)處理該任務(wù)。
不要以為更可配置或更便攜的解決方案是“殺手锏”
依賴于那些給開(kāi)發(fā)者提供了很多選擇并且在云端之間完全可移植的框架是很誘人的。但更多的選擇和控制也意味著更復(fù)雜和更大的維護(hù)責(zé)任。這樣做的結(jié)果是,你需要做更多的工作,從而將精力集中在構(gòu)建提供業(yè)務(wù)價(jià)值的功能上的時(shí)間更少。當(dāng)然,依賴云提供商的特殊功能會(huì)降低應(yīng)用程序的可移植性。但是,如果你沒(méi)有利用這些提供商提供的資源,你真的從云計(jì)算中獲得了全部?jī)r(jià)值嗎?有時(shí)候,最好犧牲一點(diǎn)控制權(quán)來(lái)?yè)Q取靈活性和更專注于重要事情的能力。
確定組織可以接受哪些權(quán)衡
構(gòu)建云原生應(yīng)用程序需要權(quán)衡。你需要了解這些權(quán)衡,并明確哪些是可以犧牲的,哪些是不能的。這通常意味著要與管理團(tuán)隊(duì)溝通,確保技術(shù)目標(biāo)與管理目標(biāo)一致。
結(jié)論
向云原生環(huán)境的巨大轉(zhuǎn)變會(huì)要求你放棄許多您熟悉的東西,從架構(gòu)到開(kāi)發(fā)流程再到框架。這也意味著放棄對(duì)應(yīng)用程序部分的控制。但是,這種改變也會(huì)讓你解脫,當(dāng)你專注于更高層次的功能時(shí),你會(huì)從開(kāi)發(fā)的苦差事中解脫出來(lái)。這種遷移意味著把更多的精力放在感興趣的事情上。
原文鏈接:
6 Cloud Native Do’s and Don’ts for Developers–The New Stack