雲端原生應用程式

menu icon

雲端原生應用程式

探索雲端原生應用程式,以及它們如何在企業內部推動創新和速度。

何謂雲端原生?

雲端原生與應用程式所在位置比較無關,與應用程式的建置和部署方式比較有關。

  • 雲端原生應用程式由離散的可重複使用元件,稱為微服務所構成,專門設計用來整合至任何雲端環境中。
  • 這些微服務用來當作建置區塊,而且經常封裝在容器中。
  • 所有微服務整體合作以構成一個應用程式,不過每個微服務都可以獨立擴充、持續改良,以及透過自動化和編排流程來快速反覆運算。
  • 每個微服務的靈活彈性都可以促進雲端原生應用程式的敏捷性和持續改善。

在「何謂雲端原生?"」影片 (4:36) 中,Andrea Crawford 概述了一些主要概念:

您也可以收聽 IBM Cloud Podcast,其中有一個名為 "Everything Cloud Native" 的七集迷你系列。

微服務和容器

微服務(亦稱為微服務架構)是一種架構方法,其中單一應用程式由許多鬆散連結且可獨立部署的小型元件或服務所構成。 這些服務(也稱為微服務)通常擁有自己的技術堆疊,內含資料庫和資料模型,並透過 REST API、事件串流及訊息分配管理系統的組合彼此相互通訊。

微服務可以獨立部署與重新部署,不會影響彼此或干擾一般使用者體驗,因此它們是自動化反覆交付方法,例如持續整合/持續部署 (CI/CD) 或 DevOps 的完美搭檔。

除了用來建立全新的雲端原生應用程式之外,微服務也可以用來將傳統的單體式應用程式現代化

IBM 最近針對 IT 高階主管、開發高階主管及開發人員所做的 IBM 意見調查中,87% 的微服務使用者同意,微服務的採用是值得付出花費和努力的。 您可以使用下面的互動式工具,進一步探索他們對於微服務優缺點的看法:

(資料來源:'Microservices in the enterprise 2021: Real benefits, worth the challenges'。)

開發人員經常將微服務部署在容器- 結合應用程式原始碼的輕量型可執行應用程式元件,在這種情況下,微服務程式碼具有在任何環境中執行程式碼所需的一切作業系統 (OS) 程式庫和相依關係。 相較於虛擬機器 (VM),容器比較小型、更省資源且更容易攜帶,事實上 容器是現代雲端原生應用程式的運算單元。

容器會放大微服務的優點,因為它可以在混合多雲環境,例如 公用雲、私有雲及內部部署基礎架構中提供一致部署和管理體驗。 但隨著雲端原生應用程式的增加,容器及其管理複雜性也隨之擴增。 使用容器化微服務的組織大部分也使用容器編排平台,例如 Kubernetes,以大規模自動執行容器部署與管理。

如需容器和容器化的詳細資訊,請參閱 "Containers: A Complete Guide" 和 "Containerization: A Complete Guide"。

進一步瞭解為何應該使用微服務和容器來做為架構建構。

優缺點

IBM 客戶發現自己在改良現有應用程式、建置新應用程式與加強使用者體驗等方面的工作越來越多。 雲端原生應用程式藉由提升應用程式的效能、彈性及可延伸性來滿足這些需求。

優點

  • 相較於傳統的單體式應用程式,雲端原生應用程式更容易管理,因為其中使用敏捷開發和 DevOps 流程來反覆改良。
  • 由個別微服務所構成的雲端原生應用程式,其可漸進式改良,並自動持續新增與加強應用程式的功能。
  • 改良可透過非侵入性方式進行,不會造成關閉時間或干擾一般使用者體驗。
  • 事實證明,以雲端原生應用程式為根基的彈性基礎架構,更容易擴大或縮減規模。
  • 雲端原生開發流程更加貼近現今商業環境所需的速度和創新。

缺點

  • 雖然微服務支援反覆的應用程式改良,但同時也造就了管理更多元素的必然性。 不是管理一個大型應用程式,它變成必須管理眾多小型的離散服務。
  • 雲端原生應用程式需要額外的工具集,以便管理 DevOps 管線、取代傳統監視結構並控制微服務架構。
  • 雲端原生應用程式可支援快速開發與部署,但同時也需要能夠因應創新速度的企業文化。

應用程式範例

雲端原生應用程式往往具有相當特定的功能。 思考如何在旅遊網站上運用雲端原生應用程式。 網站上所涵蓋的每個主題,包含航班、酒店、汽車、優惠,都是它自己的微服務。 每個微服務都可以推出獨立於其他微服務的新功能。 優惠和折扣也可以獨立橫向擴充。 雖然旅遊網站是以一個整體向客戶呈現,但每個微服務仍保有獨立性,可在不影響其他服務的情況下視需要進行調整或更新。 以下是其他雲端原生應用程式的一些範例。

IBM Cloud Garage 為 IBM 客戶提供專業諮詢,以利快速建置可擴充且創新的雲端原生應用程式。 它提供一個創新中心,其中各種規模的企業都可以設計與建置應用程式以因應實際商業需求。

美國航空 (2:50) 與 IBM 合作建置可在天氣模式惡劣期間啟動的「動態重新預約」應用程式。 此應用程式提供使用者更多資訊,並改良重新預約流程,藉此來提升客戶體驗。

XComP Analytics (1:56),用於教育與訓練的分析平台,需要解決分析問題,該公司在與 IBM Cloud Garage 進行合作後,從更正某個問題的過程中發展出 6 種新產品。 此解決方案納入使用微服務架構,並插入 IBM Watson,從而解決特定的分析問題。

UBank (2:45) 有改善其住宅貸款供應項目與協助客戶完成住宅貸款流程的業務需要。 該公司的智慧型輔助應用程式 RoboChat 可回應該需要,此應用程式使用 IBM DevOps 工具鏈進行建置。 使用 RoboChat 的客戶其住宅貸款完成率提高了 15%。

醫學研究的其中一個重點是針對病患照護最佳作法向醫生提供建議。 然而,揭露最佳作法的醫學研究花了 17 年才走向真正的醫學實踐。 ThinkResearch (2:06) 使用 IBM Cloud,在照護點提供最佳醫療資訊。 採用 IBM Cloud 基礎架構和受管理 Kubernetes 服務之後, ThinkResearch DevOps 團隊即可專注於創新和病患照護,而不是基礎架構。

開發原則

無論是建立新的雲端原生應用程式,還是將現有應用程式現代化,開發人員都要遵循一致的原則集合:

  • 遵循微服務架構方法:將應用程式拆解成單一功能服務,稱為微服務。 微服務彼此之間鬆散連結但保持獨立,可在不會出現關閉時間 的情況下,以漸進式自動化的方式持續改良應用程式。
  • 依賴容器以提供最大的彈性和可調整性:容器套裝軟體將所有程式碼和相依關係放在一處,以便軟體可以隨處執行。 如此可在多雲環境中提供最大的彈性和可攜性。 容器還可以透過使用者定義的 Kubernetes 編排原則快速擴充或縮減。
  • 採用敏捷方法:敏捷方法可加速建立與改良流程。 開發人員可以根據使用者意見回饋快速反覆進行更新,讓運作中的應用程式版本能夠儘可能更加符合一般使用者的期望。

儲存

雲端原生應用程式經常依賴容器。 容器的吸引力在於它們具有靈活、輕量與可攜帶等特性。 早期的容器使用者傾向於專注在無狀態應用程式,其中從某個使用者作業階段到下一個使用者作業階段之間不需要儲存使用者資料。

不過,隨著越來越多的核心商業功能移到雲端,有必要在雲端原生環境中解決持續儲存問題。 這需要開發人員思考以新方式接近雲端儲存

就像雲端原生應用程式開發採用微服務和模組化方法,雲端原生儲存也必須如此。 雲端原生資料可以放在無限多的位置,例如事件或系統日誌、關聯式資料庫,以及文件或物件儲存庫。

當開發人員在規劃雲端原生儲存時,資料位置、保留需求、可攜性、平台相容性及安全性只是其中一些他們必須考量的面向。

探索 IBM Cloud Object Storage 如何為雲端原生應用程式建立持續資料儲存庫。

雲端原生與傳統應用程式

雲端原生 vs. 支援雲端

支援雲端的應用程式是為了部署在傳統資料中心而開發的應用程式,但後來變成也可以在雲端環境中執行。 而雲端原生應用程式則是為了只在雲端中運作而建置。 開發人員將雲端原生應用程式設計成可擴充、平台中立且由微服務所構成。

雲端原生 vs. 雲端就緒

在雲端運算的短暫歷史中,「雲端就緒」的意義已改變好幾次。 最初,此術語是指為了在網際網路上運作而設計的服務或軟體。 現在,此術語更常用來描述在雲端環境中運作的應用程式,或已針對雲端環境重新配置的傳統應用程式。 「雲端原生」一詞的歷史更短,它是指從一開始就為了只在雲端中運作並善用雲端架構特性而開發的應用程式,或者透過雲端原生原則重構與重新配置的現有應用程式。

雲端原生 vs. 以雲端為基礎

以雲端為基礎的服務或應用程式透過網際網路交付。 它是可以泛指各種雲端供應項目的一般詞彙。 雲端原生則是比較專門的詞彙。 雲端原生是指專門設計用來在雲端環境中運作的應用程式。 此術語指的是依賴微服務、持續整合及持續交付 (CI/CD),並且可透過任何雲端平台使用的應用程式。

雲端原生 vs. 雲端優先

雲端優先指的是一種商業策略,其中組織承諾在推出新的 IT 服務、重新整理現有服務或取代舊技術時,會優先使用雲端資源。 成本節約和作業效率是此策略的背後推手。 雲端原生應用程式與雲端優先策略之間良好搭配,因為它們都只使用雲端資源,並且專門設計用來善用雲端架構的有益特性。

雲端原生與 IBM

滿足越來越高的使用者期望意味採用正確的架構、作法及技術。 當您在雲端旅程中憑藉建置新應用程式與更新現有應用程式來加強使用者體驗時,雲端原生可以協助提升應用程式的效能、彈性及可延伸性。

進行下一步:

立即開始使用 IBM Cloud 帳戶