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