譯者 | 盧鑫旺
審校 | 孫淑娟、梁策
1200億美元。
根據(jù)Forrester的一份報告,這就是全球云計算市場的規(guī)模。
在新技術(shù)的推動下,軟件,數(shù)據(jù)存儲和基礎(chǔ)設(shè)施向云大幅邁進,使工作負載在云環(huán)境中易于開發(fā)和執(zhí)行。
根據(jù)云原生計算基金會(CNCF)的說法:
“云原生技術(shù)能讓企業(yè)在如公有云、私有云和混合云的現(xiàn)代動態(tài)環(huán)境中構(gòu)建和運行可擴展的應(yīng)用程序。容器,服務(wù)網(wǎng)格,微服務(wù),不可變基礎(chǔ)設(shè)施和聲明式API都是這個領(lǐng)域的應(yīng)用典范。
如果這些對你來說有點陌生,不要擔心,我們下一節(jié)中還會談到。
各種形式的云計算是商業(yè)技術(shù)的新面孔,如今則是企業(yè)的一個成熟的功能??梢哉f,許多大公司都是靠他們運行的云應(yīng)用來做生意的。這不僅包括Uber和DoorDash等“初創(chuàng)公司”,也包括為經(jīng)紀人提供股票交易應(yīng)用的金融公司。
來自CNCF的數(shù)據(jù)顯示,目前有超過600多萬開發(fā)者正在為各種業(yè)務(wù)功能構(gòu)建云原生應(yīng)用程序。這些應(yīng)用程序基于DevOps等最佳實踐,因此可擴展到底層基礎(chǔ)設(shè)施的極限。
接下來讓我們來探索一下什么是云原生應(yīng)用程序開發(fā),以及它如何給你的業(yè)務(wù)帶來更多價值。
什么是云原生應(yīng)用開發(fā)?
云原生應(yīng)用開發(fā)是在云中,并為云開發(fā)應(yīng)用程序的過程。
聽起來是不是太簡單了?
實際過程可能看起來很復(fù)雜,不過其核心思想并不難理解。進一步分解這個過程,云原生應(yīng)用程序就是一組容器化微服務(wù)的集合,它們通過一個可以持續(xù)交付的自適應(yīng)基礎(chǔ)設(shè)施進行管理。
在一些傳統(tǒng)的項目中,基礎(chǔ)設(shè)施分配系統(tǒng)管理員負責管理。然而在云原生應(yīng)用的開發(fā)生命周期中,編排引擎會控制這個過程。這意味著,開發(fā)人員或管理人員不必再花時間去處理資源分配這些問題。相反,每個資源分配決策都是基于系統(tǒng)中預(yù)先配置的規(guī)則。
應(yīng)用程序依賴的開發(fā)環(huán)境或者技術(shù)設(shè)施,對開發(fā)者來說是“抽象的”或不可見的。他們可以使用自己選擇的技術(shù)來開發(fā)微服務(wù),增強應(yīng)用程序的可移植性,并允許對代碼進行快速更改。這是敏捷開發(fā)的核心原則之一,即快速開發(fā)、快速發(fā)布,并滿足業(yè)務(wù)用戶的實時需求。
從過程的角度來看,下面列出了如何進行云原生應(yīng)用程序開發(fā):
- 將開發(fā)、IT管理和領(lǐng)導(dǎo)團隊的DevOps實踐內(nèi)部化。
- 選擇如Kubernetes這樣的容器管理平臺,它構(gòu)成運行和開發(fā)微服務(wù)的基礎(chǔ)。
- 確保開發(fā)人員熟悉使用容器化技術(shù),并確保通過編排引擎管理資源分配。DevOps團隊可以通過項目的生命周期來監(jiān)控項目。
- 項目交付必須是自動、可持續(xù)化的,具有沙箱和內(nèi)置的可觀察性。
云原生應(yīng)用的商業(yè)價值
云原生應(yīng)用為你的業(yè)務(wù)提供了幾種效率高,性能好的典范,以下是幾個明顯的好處:
1.項目生命周期更具成本效益
對于應(yīng)用程序開發(fā)項目來說,資源管理是最不容忽視的挑戰(zhàn)之一。有經(jīng)驗的團隊往往會為了安全而過度分配資源。雖然這確保了項目生命周期的順利進行,但最終卻增加了應(yīng)用開發(fā)的成本,并降低了項目可能的回報。
云原生的一個重要方面是,它不需要負載平衡、配置,甚至不需要手動分配。云資源是自主管理的,允許它們根據(jù)測試和部署的需要擴展和收縮。節(jié)約的成本會在整個項目生命周期不斷累積,使云原生應(yīng)用程序開發(fā)過程更具成本效益。
2. 彈性架構(gòu)
因為正常運行時間與數(shù)據(jù)中心或公共或私有云中的VDI環(huán)境中的虛擬機(VM)的正常運行時間直接相關(guān),一些開發(fā)人員發(fā)現(xiàn)使用云部署具有挑戰(zhàn)性。云原生應(yīng)用程序是可移植的,并且獨立于虛擬機運行。換句話說,除非某個特定的微服務(wù)需要一個專用的GPU,否則該架構(gòu)可以無縫運行,幾乎不需要任何依賴。
依賴越少,工作負載就越有彈性,故障排除也變得更簡單和更快。由于云基礎(chǔ)設(shè)施依賴關(guān)系不再是問題,項目管理者們可以將他們的精力集中在隔離其他潛在的威脅上。
3. 產(chǎn)品更快推向市場
持續(xù)集成和持續(xù)交付(CI/CD)是云原生應(yīng)用開發(fā)成功的關(guān)鍵。到目前為止,軟件交付過程受制于各個階段——在發(fā)布alpha、beta和生產(chǎn)版本之前需要進行全面的測試。
如今,該過程可以完全自動化,在云環(huán)境中進行按需智能測試和持續(xù)部署。與DevOps同步使用,可以讓項目團隊在更大范圍內(nèi)進行協(xié)作,降低產(chǎn)品發(fā)布的風(fēng)險,大大縮短從開發(fā)到第一個版本發(fā)布的時間。
4. 不依賴供應(yīng)商
供應(yīng)商鎖定是幾乎所有應(yīng)用程序的一個主要問題,包括那些部署在主要云提供商(如谷歌、亞馬遜或微軟)上的應(yīng)用程序。除非你自己也是一個科技巨頭,否則工作負載的平穩(wěn)運行取決于云存儲供應(yīng)商的可用性和效率。
由于云原生應(yīng)用程序是可移植的,它們消除了對單一平臺或云基礎(chǔ)設(shè)施的依賴問題。無論底層架構(gòu)如何,開發(fā)人員都可以繼續(xù)更新和升級應(yīng)用程序,并充分利用新的PaaS和IaaS服務(wù)。
云原生應(yīng)用的關(guān)鍵特性
云原生應(yīng)用的定義特征如下:
- 基于容器的基礎(chǔ)設(shè)施
- 微服務(wù)的架構(gòu)體系
- 使用持續(xù)集成和持續(xù)交付(CI/CD)
- DevOps敏捷開發(fā)
總之,這些都可以轉(zhuǎn)化為應(yīng)用開發(fā)過程的許多好處:
1. 模塊化管理
單體式應(yīng)用的最大挑戰(zhàn)之一是可擴展性問題。在開始時,它會隨著開發(fā)團隊的規(guī)模和專業(yè)知識而成比例地擴展。然而,隨著每一個功能和特性增加,單體架構(gòu)變得更加復(fù)雜。
這樣,在產(chǎn)品生命周期中就會出現(xiàn)這樣的情況:產(chǎn)品所有者無法理解整個應(yīng)用程序,開發(fā)團隊不知道他們的模塊如何與其他模塊集成,QA團隊無法測試修改一個特征對整個應(yīng)用程序的影響。
應(yīng)用程序中缺乏可見性會帶來更多的問題,因為開發(fā)人員無法處理額外的功能。應(yīng)用程序的體系結(jié)構(gòu)變得混亂,一個小的變化可能會引發(fā)大故障。
這些結(jié)構(gòu)性問題可以通過使用微服務(wù)來解決,微服務(wù)是單獨構(gòu)建的模塊,每個模塊只負責一個特定特征。因此,可以測試和更新應(yīng)用程序的部分內(nèi)容,而不需要更改整個應(yīng)用程序的代碼或運行。
2. 自主資源分配
使用云原生應(yīng)用,開發(fā)人員不需要直接與云基礎(chǔ)設(shè)施提供商的應(yīng)用程序編程接口(API)交互。相反,DevOps團隊可以為每個容器(在其中開發(fā)應(yīng)用程序)分配計算、內(nèi)存和存儲資源設(shè)置一個集中的策略。
資源自動分配直接影響到項目的投資回報率(ROI)。因此,分配的資金多一個或少一個小數(shù)點就會改變申請成功的可能。通過將應(yīng)用程序的需求與可用資源精確匹配,資源自主分配可降低這些風(fēng)險。
3. 異步開發(fā)
云原生應(yīng)用程序本質(zhì)上是聚合和容器化的微服務(wù)。對于用戶來說,這意味著當一個微服務(wù)功能失常時,它不會影響其他微服務(wù)的性能。每個微服務(wù)都是封裝的,并且有自己的依賴,所以一個微服務(wù)不會讓整個應(yīng)用程序受到威脅。
同樣的邏輯也適用于開發(fā)過程。除非容器化的微服務(wù)具有共同的依賴項(在這種情況下,這些依賴項可以被復(fù)制或分離),否則它們可以被異步開發(fā)、測試并添加到生產(chǎn)應(yīng)用程序中。因此,你可以并行開發(fā)多個特征或應(yīng)用程序模塊,而不用擔心集成問題。
4. 快速擴展
雖然云服務(wù)和微服務(wù)都在為未來鋪平道路,但企業(yè)仍有遺留的基礎(chǔ)設(shè)施投資尚未充分利用。由于云原生應(yīng)用是打包成容器的自主服務(wù)的集合,它們可以動態(tài)地向外和向內(nèi)擴展(或多或少地使用計算或存儲資源),這與傳統(tǒng)基礎(chǔ)設(shè)施中的虛擬機不同。
云原生應(yīng)用程序允許基于API與遺留系統(tǒng)和數(shù)據(jù)進行集成。這使得即使是小型企業(yè)也能在從傳統(tǒng)基礎(chǔ)設(shè)施向云計算過渡的過程中加速數(shù)字化轉(zhuǎn)型過程。
5. 綜合性應(yīng)用職能
微服務(wù)非常適合獨立的審查、分析和評估。因此,開發(fā)人員可以在獨立的基礎(chǔ)上以及在整個項目的上下文中評估每個微服務(wù)的性能。由于采用了模塊化和彈性架構(gòu),全堆棧的可觀察性和特定的監(jiān)控機制使得對應(yīng)用程序進行調(diào)整變得更加容易。
結(jié)語
云原生應(yīng)用是為軟件開發(fā)和云技術(shù)的下一個時代而設(shè)計的。憑借其多功能性和敏捷性,云原生技術(shù)可以讓企業(yè)將其技術(shù)投入與業(yè)務(wù)目標相匹配。無論你是中小企業(yè)還是大型企業(yè),現(xiàn)在都可以智慧地使用云原生來幫助解決業(yè)務(wù)問題并提高運營效率。
譯者介紹
盧鑫旺,51CTO社區(qū)編輯,半路出家的九零后程序員。做過前端頁面,寫過業(yè)務(wù)接口,搞過爬蟲,研究過JS,有幸接觸Golang,參與微服務(wù)架構(gòu)轉(zhuǎn)型。目前主寫Java,負責公司可定制化低代碼平臺的數(shù)據(jù)引擎層設(shè)計開發(fā)工作。
原文標題:How To Get Started With Cloud Native Application Development,作者:Dipti Parmar