Alan Zeichick | 資深撰稿人 | 2025 年 10 月 8 日
雲端原生運算是一種設計、建立、部署及執行應用程式的方式,可充分發揮雲端平台的功能。雖然傳統軟體 (有時稱為單體式軟體) 可在資料中心或公有雲中執行,但此類軟體無法利用雲端環境的可擴充性和成本效益。
這就是雲端原生運算發揮作用之處。雲端原生軟體是從數十、數百甚至數千個小型軟體編譯而成,而不是建立為安裝在伺服器上的單一應用程式。這些稱為微服務的小型軟體會放置在安裝於雲端伺服器的容器中。微服務接著會透過高速安全網路進行通訊,共同解決業務問題。
此模組化方法有哪些優點?有許多優點,我們將在本文件中加以探索。以下是其中四項最重要的優點。
讓我們更深入瞭解概念,並介紹用於描述詳細雲端原生運算機制的術語。
「雲端原生」一詞是指利用您在雲端找到的分散式運算功能,來設計、建置、部署、執行及管理應用程式的概念。雲端原生應用程式的架構目的,是要利用雲端所提供的規模、彈性、韌性和靈活性。
Cloud Native Computing Foundation (CNCF) 是獨立組織,負責管理推動雲端原生運作的許多開放標準,並藉此定義雲端原生的概念。
雲端原生技術使組織能夠在現代化的動態環境中 (例如公有雲、私有雲和混合雲) 建置和執行可擴展的應用程式。這種方法的範例包括容器、服務網格、微服務、不可變的基礎架構和宣告式 API。
這些技巧可讓您擁有具韌性、可管理且可觀察的組合系統。只要結合強大的自動化功能,工程師就能以最少的心力,頻繁且可預測地進行高影響力變更。
因此值得花時間導入該定義。
可擴展的應用程式可以處理增加的工作負載,而不需要重新編寫或重新設計軟體。定義中的動態環境是指雲端運算平台,例如 Oracle Cloud Infrastructure (OCI),以及來自所有主要服務供應商的其他公有雲、私有雲及混合雲。
該定義中的技術是存放個別微服務的容器,以及透過支援安全性、可觀察性、原則強制實行以及服務探索的高速網路,將這些容器連結在一起的服務網格基礎架構。不可變的基礎架構代表容器一經部署就永遠不會被修改,而是以經過精細控制的方式取代。如此可讓分散式應用程式既可預測又可複寫,也就是說容器或微服務的所有複本都完全相同。
最後一項非常重要的概念是「鬆散耦合」。也就是說,當微服務與其他微服務搭配運作時,會知道如何透過定義完善的協定 (稱為宣告式 API) 進行通訊,該協定描繪微服務的功能、微服務所需的資料,以及微服務在完成工作後所傳回的資料。這些微服務的內部運作是隱藏的,而且隨時都可能變更,但不會影響應用程式的任何其他部分,這使整個應用程式更具韌性、可擴展性,而且更新更容易。
雲端原生應用程式可以在任何雲端架構中執行,包括公有雲、私有雲、混合雲或多雲端。公有雲是指透過網際網路,在雲端應用程式與終端使用者或公司資料中心之間傳輸資料的雲端。私有雲是指完全在安全網路內傳輸資料的雲端服務,例如在資料中心內設定的雲端服務。混合雲結合使用公有雲、私有雲和公司資料中心。此外,多雲端部署包含多個商業雲端供應商,例如應用程式的一部分可能是 OCI,另一個部分則可能在 Microsoft Azure 中執行。
重點精華
雲端原生應用程式的設計為獨立的微服務,包裝在輕量型的獨立容器中。這些容器具有高度可攜性,可根據需求快速縱向擴展或縮減。雲端原生透過將微服務封裝於容器內的方式,可順利部署於各種作業環境中 (包括資料中心和商業雲端服務),並在不同類型的伺服器 (例如 Linux 或 Windows) 上執行。
在最常見的雲端原生設計中,應用程式的架構是將其功能分割成數十、數百個甚至數千個微服務,每個微服務都是設計來執行特定工作。每項微服務在寫入之後都會安裝到容器映像檔中,也就是可載入服務然後執行的交付工具。容器最常見的標準是 Docker,這是來自 CNCF 的開放原始碼格式,幾乎每家雲端供應商都支援此格式。
完整的企業應用程式可能有數千個 Docker 容器。如何將這些容器全都部署到雲端服務上,並透過適當的安全性和高速網路連結容器,確保從一項微服務傳送訊息給正確的收件者,並處理可擴充性和偶爾發生的服務失敗?Kubernetes 平台在這裡可以派上用場。就像 Docker 一樣,Kubernetes 也由 CNCF 提供支援,並已成為業界標準。您不必瞭解所有細節,只要知道 Kubernetes 可針對大型雲端原生應用程式的執行、管理和擴展作業,處理和自動化執行所需的一切複雜管道。
有了 Docker 容器內的微服務,以及由 Kubernetes 部署到雲端服務的 Docker 容器,您就能擁有完整、可擴展且有韌性的雲端原生應用程式。
相對於雲端原生應用程式的,可能是傳統或單體式應用程式,其設計為單一程式碼庫,通常是由單一開發團隊所設計。軟體由該團隊撰寫並測試,然後交給營運團隊部署到伺服器上。如果軟體有缺陷,開發團隊會找出問題、修訂軟體,並將新版本提供給營運團隊。接著,營運團隊會停止原始軟體、安裝替代軟體,然後重新啟動。新增功能時會遵循相同的流程,必須取代並重新安裝整個應用程式。
相反地,雲端原生應用程式是撰寫成許多微服務的集合,每項微服務都是個別的小型軟體。這些小型軟體經過獨立設計、編碼、測試和部署,不會影響其他應用程式,因此能讓修訂流程更快、更新更順暢。開發人員可以為所建置的特定微服務選擇最佳的工具,包括程式設計語言。
使用類比:想像一下,如果家中浴室的水龍頭開始漏水。若要解決這個問題,您需要搬出您的 House 4.1,將其換成沒有漏水龍頭的 House 4.2,然後再搬回去。想用雙槽洗衣機取代單槽洗衣機嗎?那就搬出去並安裝 House 4.3。這是單體式或傳統的軟體模型。您會這樣做嗎?當然不會。只要請水電工換掉水龍頭,或請承包商改造客房浴室就好,這樣不會影響屋內其他任何東西。這就是雲端原生模型的概念。
導入雲端原生運算時也導入了許多新的概念和術語,是瞭解模型優點的關鍵。以下列出這些概念和術語:
Kubernetes 專為高可用性 (HA) 而設計。修復失靈容器的自動功能是雲端原生的骨幹。這些輕量而獨立的套裝程式通常是以 Docker 建立,包含所有必要的相依性,可在不同的運算環境中執行一致的應用程式。容器化可實現應用程式可攜性,並有助於快速部署。
容器提供標準化的隔離環境,讓應用程式能夠獨立執行,並降低相依性之間衝突的風險。此隔離功能可將潛在漏洞侷限於個別容器,以增強安全性。容器的輕量本質也有助於有效率地運用資源。
微服務涉及將複雜的應用程式細分為較小的獨立服務。每項服務都專注於提供特定功能,透過平行處理不同服務來加速開發。
微服務架構可提升敏捷性和靈活性。您可以獨立開發、部署及調整每項微服務,以快速更新和加入新功能。這種模組化特性也可提升錯誤隔離效果,因此單一服務中的問題不會影響整個應用程式。
不可變基礎架構是永遠不直接修改已部署資源的原則。使用更新的組態建立新的執行處理以導入變更,能提供一致性並簡化倒回流程。基礎架構即程式碼 (IaC) 工具可自動化執行基礎架構佈建作業、提升效率和重複性。
IaC 可將基礎架構定義為程式碼,以改善版本控制、自動化測試,以及跨環境的一致部署。此方法將基礎架構視為重要的應用程式元件,受限於與程式碼庫相同的嚴格管理和控制。
自動化是雲端原生的重要層面,旨在推動難以手動進行的大規模部署。容器調度工具 (例如 Kubernetes) 可自動化執行容器化應用程式的管理與部署作業。這些工具提供高可用性、高效率的資源配置和簡化的擴展流程,使複雜的分散式系統更容易管理。
如果想獲得定義雲端原生系統的可擴充性、容錯性和自我修復功能,就必須推動自動化和調度流程。Kubernetes 雲端服務可實現動態資源配置,讓應用程式根據需求擴展,並協助自動從故障復原。
雲端原生應用程式的設計具有可觀察性,這表示開發人員可以更加瞭解其系統的內部運作。這涉及收集和分析指標、日誌和追蹤,以深入瞭解效能、資源使用狀況和潛在問題。
進階監控工具可即時檢視應用程式狀況和效能。這些工具能夠主動解決問題,協助開發人員在影響使用者之前識別並解決問題。可觀察性與管理服務是打造最佳化應用程式效能與資源配置的關鍵。
韌性是雲端原生系統的關鍵特性,可協助系統從失敗中復原並維持穩定性。複製、負載平衡和自動化復原機制等策略都能達到此目的。自我修復功能會在呼叫時偵測並修正問題,無須手動介入即可維持高可用性。
雲端原生應用程式的設計可順利處理失敗,以盡可能縮短停機時間。自我修復機制會自動偵測並解決問題,讓應用程式順暢執行。這種韌性是關鍵業務營運的關鍵,並提供可靠的使用者體驗。
相較於執行傳統的單體式應用程式,雲端原生方法可望讓組織享有顯著的優勢。這些優點包括:
以下是雲端原生運算的一些主要功能和優點。
| 功能 | 好處 |
|---|---|
| 微服務架構 | 當企業應用程式以小部分程式碼撰寫時,每個應用程式都負責執行不同的業務功能 (稱為微服務),應用程式會變得更快建置、更容易管理、更具擴展性和韌性,以及更容易升級和增強。 |
| 容器與容器化 | 微服務通常包裝在容器中,而且這些容器可以輕鬆部署到雲端伺服器上。容器經過精心建構和定義,因此可以在雲端服務上的任何相容伺服器上執行。您甚至可以視需要部署許多容器複本來處理繁重的工作負載,而只要使用升級的版本替換舊容器,就不會影響其他應用程式。 |
| 持續整合及持續交付 (CI/CD) | CI/CD 是一種流程,讓開發團隊使用管線方法來設計、建置、測試及部署微服務至容器,然後將這些容器部署到雲端伺服器上。CI/CD 可加快發行週期、提高開發人員的生產力,並做為自動化工作流程,以加快軟體部署速度。 |
| 不可變基礎架構 | 不可變元件 (例如容器) 在建置後一律不會被修改。有修訂版本時,會用來取代舊容器。優點包括軟體的一致性、簡化的上線流程,以及能夠輕鬆將應用程式複製到新的雲端資料中心,甚至新的服務供應商。 |
| DevOps 實務 | DevOps 是指將傳統開發人員和營運團隊合併為一個單位。DevOps 團隊撰寫軟體、測試軟體,然後部署軟體並進行部署後管理。結合 CI/CD 和自動化後,就能快速部署新軟體,而且由於不會發生互相指責的情形,因此可以快速解決問題。 |
| 可觀察性與監控 | 可觀察性可協助 DevOps 團隊瞭解應用程式在執行時所發生的情況。「監控」是指查看記錄檔和研究效能指標的實務。這些做法可協助團隊更快偵測和修正問題、調整效能,並滿足服務層級需求,以提供承諾的應用程式可用性和回應速度。 |
| 雲端平台 | 雲端平台 (例如 OCI) 通常提供執行雲端原生應用程式所需的一切,包括能代管 Docker 容器的伺服器、安全高速網路、預先安裝的 Kubernetes 引擎,以及有助於觀察和監控的工具。雲端原生應用程式的可擴充性有助於提升效率,並降低雲端原生軟體的營運成本。 |
雲端原生運算聽起來也許很複雜。這是因為組織 (尤其是剛採用雲端的組織) 已花費數年或數十年的時間建置傳統的單體式軟體環境。以下是組織第一次使用雲端原生運算時,可能面臨的一些挑戰。
不同的組織不會遵循相同的雲端原生運算路徑。不過您會發現,多數組織會採取這七項最佳實務。
Oracle 提供建置和部署雲端原生應用程式所需的一切功能,包括工具、服務和自動化,讓開發團隊能夠快速建置,同時減少營運任務的數量。
雲端原生服務在 OCI 上執行,相較於其他雲端提供者,提供具備更高效能和更低成本的標準型平台。OCI 利用基於開放原始碼和開放標準的服務,讓開發人員能夠在任何雲端或內部部署環境執行應用程式,而不需重製。這種靈活性讓您可以專注於建置和創新,例如透過強大的生成式 AI,甚至是預先建置的 AI/機器學習服務,將新功能和智慧融入現有應用程式中。
雲端原生應用程式開發提供的應用程式,是否真的比傳統開發應用程式更好?有。雲端原生應用程式顯然更具優勢,因為功能分成微服務並允許個別管理,所以方便擴充。此外,雲端原生應用程式能夠以高度分散的方式執行以維持獨立性,並根據應用程式需求分配資源。
雲端原生應用程式有助於提升業務策略和價值,因為這類應用程式可提供跨私有雲、公有雲和混合雲的一致體驗。這種應用程式可讓您的組織透過執行響應式且可靠的可擴展應用程式,來充分發揮雲端運算的威力。
想要深入瞭解雲端原生架構嗎?下載免費電子書,瞭解為何任何組織現在都可以採用雲端原生開發策略。
雲端原生架構與傳統應用程式架構有何不同?
雲端原生架構可將複雜的大型業務應用程式分成許多微服務,每項微服務分別執行一種業務功能。當這些微服務透過高速網路彼此通訊以進行任務協同合作時,應用程式就能運作。每項微服務都是分別定義、設計、建置、測試、部署、管理及升級,因此可加快部署速度並提升可擴充性。例如,當微服務發現有高工作負載時,雲端原生應用程式可以在不同的伺服器上自動複製該微服務,藉此將工作負載切割開來。相較之下,傳統應用程式架構則由設計、建置、測試及部署為一個單位的單一軟體程式碼庫 (單體) 構成。如果因修正錯誤或升級導致單體變更,就必須重新部署。因此,軟體推出通常很慢。可擴充性是一項挑戰,通常需要重新架構 (和重寫) 軟體,或者在更快、更昂貴的伺服器上安裝軟體。
企業如何有效地將現有應用程式轉變為雲端原生應用程式?
現有的單體式應用程式可以重新封存至雲端原生應用程式。此流程是識別程式碼中可分割成微服務的部分,通常從最容易區隔或造成效能瓶頸的程式碼區段開始。單體式應用程式透過一次處理一個區段的方式,可提供雲端原生方法的許多優點。
什麼是 CNCF?
Cloud Native Computing Foundation (CNCF) 是由 Linux Foundation 代管的供應商中立開放原始碼組織。CNCF 的目標是推廣雲端原生技術,為許多專案和產業標準提供必要的支援,例如 Docker 容器格式和 Kubernetes 容器自動化和調度平台。許多雲端服務供應商 (包括 Oracle) 都為 CNCF 的工作做出貢獻,並採用其標準來促進雲端生態系統之間的互通性。
雲端與雲端原生有何不同?
雲端是指由商業服務提供者 (例如 Oracle) 代管的運算服務。這些運算服務包括許多類型的伺服器、高速網路、儲存系統、進階運算功能程式庫 (例如 AI 和安全性),甚至是業務應用程式。您透過 Web 瀏覽器存取的所有網站或應用程式幾乎全部或部分位於雲端,其餘則放在公司資料中心。許多行動電話應用程式也仰賴雲端提供基本功能。
雲端原生是一種建置業務應用程式的方法,可將應用程式分成數十或數百項微服務。每項微服務都封裝一種關鍵業務功能。當這些微服務透過安全的高速網路協同合作時,應用程式會一起解決業務問題,而每項微服務都會執行自己的工作負載。雲端原生應用程式運用雲端服務提供者的資源,讓應用程式可擴展、高效且具有韌性。