什麼是雲端原生?
雲端原生是一種應用程式開發方法,使用微服務、容器、容器協調器和不可變的基礎架構等技術,在雲端運算環境中建立、部署、運行和管理反應迅速、可擴充且容錯的軟體應用程式。
雲端原生說明
雲端原生描述為在雲端運作而建立的軟體應用程式的設計與運作。雲端原生能加速數位轉型,因為它能將雲端服務的彈性、可擴充性和彈性發揮到極致,有效地交付易於管理和維護的應用程式。
單片與雲端原生應用程式:範例
想像一下,銀行需要建立一個新的應用程式。在雲端運算之前,銀行會僱用開發人員建立應用程式,購買內部部署運行應用程式所需的實體基礎設施,並在應用程式的整個生命週期中維護這些基礎設施。要存取應用程式,使用者必須連線至銀行的伺服器,而由於這些伺服器承載了應用程式所提供的每項服務 (例如查詢帳號、轉帳等),因此更新和維護任何一項服務都需要關閉整個系統。
當開發人員開始將應用程式託管在雲端時,他們會將應用程式從內部部署環境「提升並移動」,同時保留應用程式的整體架構以及其限制。他們不再購買和管理伺服器來託管應用程式,而是向雲端服務供應商 (CSP) 租用運算資源。但新的服務,例如平台即服務、容器即服務和 無伺服器基礎架構,為以極快的速度建立、部署和管理應用程式提供了新的機會 - 相對來說。
雲端原生的歷史
隨著虛擬化的出現以及 基礎設施即服務 (IaaS ) 供應商(如 Amazon Web Services (AWS))的出現,開發人員可以在雲端佈建和管理虛擬機器,在內部部署應用程式的做法在 2000 年代初開始轉變。這為 平台即服務 (PaaS) 產品的發展鋪平了道路,例如 Google App Engine 和 Heroku,它們為建立和部署雲端應用程式提供了更高層次的抽象層。
但早期的平台缺乏彈性,開發人員被鎖定在其中,必須使用專屬的 API 和工具。為此,一種專注於建立專為雲端設計並使用開放原始碼技術的應用程式的新方法出現了。
這種方法的早期範例是 Twelve-Factor App 方法論,該方法論包含一套建置雲端原生應用程式的原則,這些應用程式經過工程設計,具有可攜性、可擴充性和彈性。這些原則包括使用宣告式格式進行組態、依賴無狀態進程,以及將支援服務視為附加資源。
大約在同一時間,Docker 容器化技術崛起,成為雲端原生應用程式的重要建構基石。Docker 讓開發人員可以將應用程式和相依性套件打包成輕量級的容器,輕鬆部署到不同的雲端環境,解決了應用程式可攜性的問題。
2014 年,Google 發佈了 Kubernetes,這是一個開放原始碼的容器協調平台。Kubernetes - 提供一套強大的工具,可自動部署、大規模擴充和管理容器化應用程式 - 成為雲端管理容器化應用程式的標準。
自此之後的幾年間,從新創公司到大型企業,各行各業的組織都開始採用雲端原生的方式來建立應用程式,並帶動了開放原始碼技術、工具和平台生態系統的發展。
什麼是雲端原生應用程式?
從基本層面來看,雲端原生應用程式是一種軟體程式,其功能被分解成微服務 - 獨立運作的小型鬆散耦合服務。由於這種模組化結構,雲端原生應用程式比傳統的單一應用程式更容易建立與變更。開發人員可以在不中斷系統的情況下部署應用程式的新功能和更新。
相較之下,單片應用程式是以單一程式碼基礎建立,所有元件緊密耦合,並在單一伺服器或機器上執行。這表示應用程式的變更或更新需要整個應用程式重新編譯和重新部署。
雲端原生應用程式特有的其他技術和方法包括
- 以容器為基礎的基礎架構,典型的 Linux 容器搭配 Kubernetes 為基礎的協調系統
- 以鬆散耦合的微服務為核心的架構
- 敏捷 DevOps 式開發
- 使用不斷地整合與不斷地遞送 (CI/CD)
- 使用開放原始碼與函式庫
- 無伺服器功能與 PaaS
什麼是雲端原生架構?
雲端原生架構是一種設計方法,可支援快速、靈活的應用程式開發技術,將雲端原生應用程式建立為一組更小、可組合的片段,方便維護、變更、大規模擴充及遷移。雲端原生架構的元件如下。

不可變更的基礎架構
不可變更的基礎架構是一種範例,當某些東西需要更新、修復或修改時,伺服器和虛擬機器 (VM) 會被取代而非變更。如果需要進行變更,則會從共用映像建立包含這些變更的新元件,並將舊元件從生產中移除。此方法可為雲端原生部署建立可預測的流程。
微服務架構
雲端原生的興起是由微服務架構所帶動,微服務架構是一種軟體設計模式,強調使用可獨立部署的服務,每個服務都有特定的業務功能,並在雲端原生應用程式中共同運作。微服務允許開發人員透過組合更小、更易於管理的元件來建立複雜的應用程式,這些元件可以獨立進行大規模擴充和更新。
API
API 是雲端原生應用程式中使用的通訊工具。它們有助於在獨立的微服務之間進行標準、有效的資訊傳輸,使它們能夠共享資訊,從而作為一個有凝聚力的整體運作。
服務網格
服務網狀結構是雲端原生架構中管理微服務之間通訊的一層。服務網狀結構還能夠在服務中加入流量管理、安全性和其他功能,而無需加入新程式碼。
集裝箱
容器可讓微服務與其相依性 (程式碼、資源檔案、系統工具和系統函式庫) 一併打包在自足的環境中,因此它們在任何情況下都能一致地執行。這可讓開發人員輕鬆複製或分析並隔離服務。由於 容器容納 了應用程式執行所需的一切,因此雲端原生應用程式可以部署在內部或雲端的任何地方。
每個微服務都部署在一個容器中,各個容器群組會作為一個系統(或稱為「堆疊」)共同運作,形成完整的本機應用程式。動態協調系統可自動監控每個容器,根據使用者需求啟動和關閉容器,從而提高可擴展性和效率。
什麼是雲端原生應用程式開發?
雲端原生應用程式開發是建立穩定、可擴充的應用程式,以便在私人雲端、公共雲端或混合雲端運作的過程。常見的雲端原生開發實作包括:
不斷地整合
持續整合 (CI) 是一種做法,包括自動建立、測試並整合程式碼變更至中央儲存庫。這有助於確保代碼變更經過徹底測試,並與應用程式代碼庫的其他部分整合。在雲端原生開發中,CI 常常與容器化結合使用,讓開發人員可以將程式碼、相依性和組態打包到一個獨立的單元中。
不斷地遞送
持續交付 (CD) 是 將在 CI 流程中建立的應用程式交付 到類似生產環境的流程,在此環境中,應用程式會經過額外的自動化測試,以消除意外的效能問題。CD 允許對生產中的應用程式進行更多增量更新,有助於降低交付變更的成本、時間和風險,使開發人員能夠以更快的速度和更高的頻率建立、測試和發佈高品質的軟體。在雲端原生開發中,CD 常常與自動化和 DevOps 實務結合使用,有助於簡化軟體開發和部署流程。
DevOps
DevOps 是一種結合軟體開發與 IT 作業的方法,可提高軟體開發與交付的效率、速度、品質與安全性。
在雲端原生開發中, DevOps 通常用來自動化軟體開發和部署流程的許多方面。專注於快速迭代的方法與雲端原生模式相符,有助於組織快速交付應用程式和服務。這使企業能夠為客戶提供更好的服務,並在行業中更有效地競爭。
無伺服器
無伺服器運算與微服務結合使用,是一種雲端原生的開發模式,讓開發人員無需管理底層雲端基礎架構,即可編寫和部署程式碼到雲端。由於資源是根據需求動態分配,因此無伺服器運算可以降低成本並提高擴充性。
雲端原生應用程式開發的優勢
雲端原生實務提供推動數位轉型和業務成長的最佳機會。原生應用程式開發具有成本效益,可透過持續整合/持續交付 (CI/CD) 輕鬆更新和維護應用程式。它還能幫助組織打破開發、作業和安全方面的孤島,在應用程式開發生命週期中提供一致的體驗。
雲端原生應用程式開發的其他優點包括
提升速度
雲端原生應用程式採用敏捷的開發程序,個別服務獨立開發與部署,可更快速地迭代與部署新功能或更新。
改善品質與可靠性
透過雲端原生應用程式開發,開發人員可以專注於提供應用程式的價值,因為雲端供應商會管理底層基礎架構。這也提高了作業環境的一致性和可靠性。
具成本效益的營運
雲端原生應用程式的設計可水平擴充,可根據需求動態增加或移除資源。相反地,單一應用程式通常是垂直大規模擴充,也就是在伺服器或機器上增加額外的資源,以處理增加的需求。這種方法可能既昂貴又低效,因為它通常需要過度佈建資源來處理高峰需求。
更好的適應性和可擴展性
雲端原生應用程式開發可以輕鬆跟上客戶和企業不斷變化的需求,因為它提供的應用程式由鬆散耦合的微服務組成,可以輕鬆實時更新、變更和大規模擴展。
增加彈性
雲端原生應用程式開發可以提高彈性,因為它使用的是可以隔離的微服務。如果單一應用程式的一個元件發生故障,就可能導致整個系統癱瘓。但容錯、雲端原生應用程式的設計,即使個別服務發生故障,也能不斷地運作。
將廠商鎖定的風險降至最低
由於雲端原生應用程式開發使用容器在不同廠商的基礎架構之間轉移微服務,因此組織不會被特定廠商所束縛。他們可以使用多家雲端供應商的服務,並選擇最適合其業務的選項。
簡化疑難排解
雲端原生應用程式開發簡化了疑難排解,因為其微服務架構可輕鬆追蹤問題到源服務,並在伺服器不停工的情況下解決問題。
降低攻擊面
雲端原生應用程式專為安全性而設計,個別服務通常會彼此隔離。這可減少傳統單一應用程式的攻擊面,因為傳統單一應用程式是由緊密耦合的元件所構成,讓攻擊者更容易存取敏感資料。
什麼是雲端原生堆疊?
雲端原生堆疊是指開發人員用於建立、管理和執行雲端原生應用程式的各層工具和技術。雲端原生堆疊的層級包括
基礎結構層
基礎架構層構成雲端原生堆疊的基礎。它是由雲端原生應用程式開發的支援元件所組成,包括作業系統、儲存、網路和其他運算資源。基礎架構層由第三方雲端供應商管理。
佈建層
雲端原生堆疊中的佈建層是由用於建立與安全性基礎架構的工具所組成。這包括掃描和儲存容器映像以及啟用政策設定和執行的工具。
執行時層
運行時層包含容器在雲端原生環境中運行所需的一切。這包括用於啟動容器的程式碼,以及讓容器可以使用持久性儲存的工具。
協調與管理層
協調與管理層類似於作業系統,負責將 雲端元件整合在一起,使其能作為單一、具凝聚力的單元共同運作。Kubernetes、Docker 和 OpenShift 等協調工具可讓開發人員部署、管理和大規模擴充容器化應用程式。
應用程式定義和開發層
應用程式定義和開發層由開發人員用於建立應用程式的所有技術組成,包括資料庫、訊息系統、容器映像和 CI/CD 管道。
可觀測性與分析工具
可觀測性與分析工具可觀察雲端原生堆疊中的所有層級,以監控並評估雲端應用程式的健康狀況,確保應用程式的服務品質不受干擾。它們被細分為記錄、監控和追蹤等類別,用於監控 CPU 使用量、延遲和記憶體等指標。
雲端原生安全挑戰
由於雲端和雲端原生環境有不同的架構,依賴不同的技術,因此 雲端安全 和雲端原生安全也有所不同。由於雲端安全涵蓋一系列資產和應用程式,因此需要廣泛、全面的安全需求。另一方面, 雲端原生安全性則需要專門的方法,以顧及雲端原生應用程式和基礎架構獨特的安全性問題。
常見的雲端原生安全挑戰包括:
缺乏可見性:雲端環境的複雜性使其很難獲得完整的可視性,造成安全風險孳生的盲點。
多樣化的威脅:雲端威脅行為者在創造安全解決方案的同時,也能快速找到有創意的攻擊路徑和變通方法。
無法執行一致的政策:組織的雲端原生基礎架構通常包含多個雲端服務供應商和不同的安全工具,因此難以集中管理安全政策並一致應用。
設定錯誤:在應用程式開發流程中整合安全性的歷史缺失,留下了設定錯誤和開放原始碼漏洞的空間,可能導致資料外洩和未經授權的 工作負載 存取。
緩慢的安全程序:維持高速 CI/CD 管道所需的合規性和安全性,會減慢雲端運算固有的彈性、敏捷性和速度。
不安全的預設:CSP 提供的許多 雲端原生工具提供彈性設定,包括可能導致違反安全性的不安全預設設定。
軟體供應鏈漏洞:開放原始碼軟體中未修補的漏洞增加了軟體供應鏈的脆弱性。
只要有正確的工具,安全性團隊就能應付雲端原生的安全性挑戰。 雲端原生應用程式防護平台 (CNAPP) 將在單一儀表板中提供不斷地可視性,以及在整個雲端環境中一致地執行安全政策。