TAP 系列文章 | Tanzu Application Platform 的技術概覽

語言: CN / TW / HK

Tanzu Application Platform 致力於為開發團隊、應用安全團隊、應用運維團隊打造一條簡化的端到端開發運維體驗的路徑,以提升軟體開發效率、加固應用安全、簡化應用運維複雜度,從而加快應用上市時間。助力企業在 Kubernetes 多雲環境中提供卓越的開發者體驗。

隨著各企業正加快其數字化轉型,利用 Kubernetes 等雲原生技術來部署和運行應用程式以成為大勢所趨。誠然,Kubernetes 簡化了運維團隊的工作,加速了應用的部署上線。儘管如此,隨著許多企業對 Kubernetes 的擁抱,大家正面臨著駕馭龐大而複雜的雲原生生態系統以及隨之而來的陡峭學習曲線的挑戰。儘管 Kubernetes 使基礎設施和運維團隊能夠自動化應用程式部署和大規模管理容器,但它給開發人員帶來了不同的挑戰。


應對開發人員面臨的挑戰

開發人員必須在 Kubernetes 上構建他們的CICD流水線,將來自基礎設施提供商 的底層基礎資源與從雲原生生態系統中獲取的零散技術和工具相結合。將不同的開源工具用“搭積木” 的方式拼湊起來極具挑戰和風險,首先,大量的開源工具很難設定和維護,通過分層建設的方式將它們連線到其他應用程式和基礎設施非常複雜,勢必迫使開發人員花費太多時間來應對底層基礎設施,而不是專注於業務程式碼的編寫。

在整個開發週期中,開發人員需要快速迭代他們的程式碼。開發人員通常會一遍又一遍地進行編碼、運行、測試和除錯的迴圈,我們將這個迭代過程的迴圈稱之為“內迴圈”。可想而知,開發人員的大部分時間都是花在內迴圈上,因此內迴圈的時間越快,也就意味著迭代的效率越高。如今,大量微服務化、容器化的應用在開發過程中,我們會依賴於Kubernetes環境進行開發除錯,勢必這個內迴圈的過程變得更長,因為每次原始碼的更改不僅需要重新構建、重新發布容器映象,還需要重新部署 Kubernetes 資源,然後才能進行測試,這當然會大大降低開發人員的工作效率。

可以肯定的是,Kubernetes 是構建應用的絕佳平臺,但它不應該是由開發人員去進行部署,也不應該由應用運維人員為應用程式來配置和實施 IT 和安全等基礎要求。理想的狀態,部署應用程式的Kubernetes 基礎架構對於開發人員和應用運維人員應該是透明的,大家不必在此耗費時間與精力。


Tanzu Application Platform助力企業在 Kubernetes多雲環境中提供卓越的開發者體驗

為了幫助企業解決前文中提到的雲原生應用開發過程中的種種挑戰,VMware 在2022年1月正式釋出了新一代PaaS平臺Tanzu Application Platform。TAP是一個模組化的應用感知平臺,它提供了一組豐富的開發人員工具和一條預先配置好可裝配的生產流水線,在任何認證公共雲或本地的 Kubernetes 叢集上更快速、更安全地構建和部署軟體,為開發人員提供卓越的開發體驗。同時,Tanzu Application Platform還是一個可組合、可插拔的平臺,因此企業團隊可以根據其組織的偏好和不斷變化的業務需求對其進行自定義。

TAP 通過定義一個 workload 抽象與開發人員進行互動,開發人員只需要關注到 workload 這個層面,workload 之下交給 TAP 自動化完成,從而為在 Kubernetes 上構建和部署雲原生應用程式的企業提供卓越的開發人員體驗,是面向開發人員的應用平臺,它使應用程式開發團隊能夠通過自動化流水線更快地投入生產,並且它清楚地定義了開發人員和、安全人員、運維人員的角色,以便他們可以協作工作。


Tanzu Application Platform技術架構

Tanzu Application Platform可以部署在Tanzu Kubernetes Grid以及Amazon Web Services、Microsoft Azure 和 Google Cloud Platform的託管 Kubernetes 產品 之上,在這些與社群版本保持一致的Kubernetes層之上構建現代應用程式。通過TAP企業就可以採用一致的開發環境和工作流程。

下圖為核心元件與服務架構圖,接下來將分層介紹下TAP各個模組的功能。

從下往上進行介紹

  • Tanzu Application Platform底層為一個Kubernetes執行環境,可以是任何經過認證的公有云或者私有云Kubernetes;
  • 執行環境層之上綠色部分是雲原生執行時層,基於Cloud Native Runtimes實現的無伺服器執行時,通過對底層基礎架構執行環境的進行抽象,構成Tanzu Application Platform的先進的無伺服器執行時架構;
  • 雲原生執行時層之上紫色部分,是軟體供應鏈層,實現應用Source to URL的全自動化流程;
  • 軟體供應鏈層之上藍色部分與灰色部分,開發者互動層,實現開發者與平臺的互動,提供的開發元件,幫助提升開發者體驗及軟體迭代效率。灰色部分是API Portal, API消費者可以檢視詳細的 API 文件並對API進行除錯,也可通過從源 URL 提取 OpenAPI 文件來組裝其儀表板和詳細的 API 文件檢視。
  • 架構圖左邊橙色部分是應用服務目錄及服務繫結,可在Tanzu Application Platform上輕鬆實現服務的上線、規劃、消費和管理。

以上模組 Tanzu Application Platform基於成熟的 VMware 主力貢獻開源產品以及開源生態構成,接下來的章節筆者準備採取一種新的思路重點結合Tanzu Application Platform的能力元件能為企業的開發人員,應用運維人員,應用安全管理人員帶來的三大核心價值展開闡述。當然對於Tanzu Application Platform的各類能力場景及技術實現也至關重要,將在本公眾號的後續多篇文章中進行深入解析,請各位讀者持續關注。


價值1:多維度釋放開發人員的生產力

  • Application Accelerators:受開源專案Spring Initializr的啟發,編寫程式碼不需要從零開始,開發人員通過Tanzu Application Platform可以快速開始使用Application Accelerators(又名應用程式啟動模板)開發新應用程式。這 些模板由應用程式架構師構建並可供開發人員使用,由框架程式碼、配置和雲原生模式以及組織的最佳實踐和 安全策略組成,從而為開發人員節省大量啟動新應用程式開發的時間。

  • Cloud Native Runtime:Tanzu Application Platform內建的Serverless抽象,即Cloud Native Runtime,可簡化實現微服務和基於事件驅動架構等高階應用程式的運行復雜度,例如自動應用程式擴充套件和使用 API 連線到未在 Kubernetes 中運行的系統。
  • TAP GUI:Tanzu Application Platform提供一致的圖形使用者介面 (GUI) 來展示及管理應用服務和其 API,使其易於發現和整合,從而提高開發人員的工作效率。

  • 為 Kubernetes 工作負載提供抽象

workload.yaml:應用程式架構師構建Application Accelerators時,其中包含描述工作負載特徵的宣告性工作負載資源規範,即workload.yaml,這是開發人員唯一需要與之互動的 YAML檔案。開發人員在workload.yaml中配置引數,例如工作負載的型別(web app, batch job, streaming function)、原始碼的位置、它應該連線到哪些後端服務(例如,具有 10GB 儲存空間的 PostgreSQL、RabbitMQ 叢集保證 1,000MPS),以及它的資源利用率。即在Tanzu Application Platform中一鍵釋出應用的過程中,workload.yaml發揮了巨大的作用,通過它將開發人員和運維人員之間建立了將原始碼釋出到相關環境並行程可被訪問的URL(Source to URL)的契約。基於 workload.yaml定義的資源規範,Tanzu Application Platform在給定原始碼位置的情況下執行與 Kubernetes 的底層互動以部署和管理 我們的工作負載。


價值2:Supply Chain Choreography快速建立可持續的供應鏈流水線

Supply Chain Choreography:Tanzu Application Platform包括整個端到端流水線供應鏈Supply Chain Choreography,經過預先設定的元件,可以開箱即用地無縫協同工作,TAP提供一系列強大的開箱即用供應鏈,可以釋放團隊在從 Kubernetes 生態系統中的數千種技術組合選擇出可用的流水線方案的巨大工作量。

首先,我們來回憶在 Kubernetes 上部署工作負載通常涉及以下一系列典型步驟,顯而易見這個流程極其複雜,每一步流程都是易錯環節,並且要求應用運維人員具備相當深厚的技術功底。

但藉助 Tanzu Application Platform,部署工作負載對比之上的流程,應用運維人員的工作將會變得尤為簡便輕鬆,從 Application Accelerators提 供 的 框 架 代 碼 開 始 ,運 行 單 個 CLI 命 令 “tanzu apps workload create ‑‑ file workload.yaml”就能在幾分鐘內將工作負載部署在 Kubernetes 叢集上運行。 Tanzu Application Platform通過自動化的安全軟體供應鏈工作流程Supply Chain Choreography自動化整個應用程式部署過程,將大家從容易出錯的編輯“YAML ”的過程中解脫出來。

  • 在Supply Chain Choreography供應鏈中引入企業受信的元件

儘管Tanzu Application Platform提供開箱即用的供應鏈流水線,但如果 VMware 選擇某元件並不能滿足企業當前的設計或選型,那麼企業的平臺工程師和應用運維團隊可以根據其組織的要求和偏好靈活地更換元件。Tanzu Application Platform在設計時就考慮到了模組化,可組合可插拔的,以滿足運維團隊可以根據內部組織的意見設定相應的供應鏈元件。換句話說,企業可以在Tanzu Application Platform通過介面卡輕鬆替換單個元件,從 CI 到容器映象的構建,開發人員可以使用由企業內部定義和選型的元件。

  • Supply Chain Choreography供應鏈視覺化能力,保證團隊實時瞭解工作負載狀態

Supply Chain Choreographer (SCC) 工作負載視覺化功能使使用者能夠檢視開箱即用供應鏈的執行狀態,使使用者可以輕鬆查明問題並快速採取補救措施。以下是Tanzu Application Platform GUI 在 SCC 外掛中視覺化開箱即用的測試和掃描供應鏈的圖示。

此檢視中有兩個部分可簡化使用者體驗:

  • 圖表檢視(頂部)顯示了此供應鏈使用的所有已配置自定義資源定義以及作為供應鏈執行輸出的資訊
  • 階段詳細資訊檢視(底部)顯示您在圖表檢視中選擇的供應鏈的每個部分的源資料。

價值3:在協調開發和運維工作的同時提高工作效率

我們將作為軟體生產者的應用開發團隊的工作組織成內迴圈和外迴圈。內迴圈由共享或本地開發環境 組成,開發人員可以在其中自助訪問相應的資源和雲原生應用程式模式。外部迴圈指的是由 DevOps、平臺運維和安全團隊相互合作並與開發團隊一起將應用程式部署到生產環境並對應用進行運維。Tanzu Application Platform通過圍繞內迴圈和外迴圈進行協調 促進開發部門、運維部門、安全部門之間的協作 。

  • 建立無縫的內迴圈體驗

在快速啟動新專案後,開發人員進入迭代編寫程式碼、構建、部署和測試程式碼更改以及除錯的內迴圈週期 ,內迴圈的工作需要在開發人員的整合開發環境 (IDE) 中完成,以保證開發人員繼續遵循他們熟悉的開發工作流程。

VMware Tanzu Developer Tools:Tanzu Application Platform提供VMware Tanzu Developer Tools, 包括 IDE 外掛和擴充套件,因此開發人員可以在其內迴圈環境中輕鬆地與平臺或其開源元件進行互動,供開發人員除錯正在運行的容器,避免重新構建、重新發布和部署容器的步驟來縮短程式碼更改的實時更新路徑,而不是直接將更新的程式碼注入到正在運行的容器中,意味著開發人員可以在迭代程式碼時立即測試程式碼更改。VMware Tanzu Developer Tools 提供VS Code Plugins,帶有用於 IntelliJ 的外掛,Eclipse 即將推出。

App Live View:在對其程式碼進行迭代時,開發人員通常需要檢查正在運行的應用程式以分析行為以進行故障排除、除錯或微調應用程式的運行時配置。Tanzu Application Platform提供App Live View,一種診斷工具,供開發人員深入瞭解應用程式的運行時特性(例如,資源消耗或流量資訊)。它還允許他們更改日誌級別和環境屬性等引數,以便對正在運行的應用程式進行故障排除。

  • 標準化的方式使用服務繫結

Service Binding:在Tanzu Application Platform上進行中介軟體的服務繫結,能夠簡化發現和使用以標準化方式連線到應用的服務的體驗。結合服務工具包,它可以在該叢集上或跨叢集提供簡單的企業管理和具有一致服務繫結體驗。

  • 建立關注點分離

Tanzu Application Platform在應用開發人員和DevOps 工程師之間建立關注點分離。組織中的DevOps 工程師負責配置軟體供應鏈工作流,以確保開發和生產環境之間的一致性。開發人員在開發環境中配置的軟體供應鏈針對內迴圈工作進行優化,並使用相同的供應鏈工具將原始碼部署到開發環境中。應用運維團隊在兩種環境之間建立的這種一致性能夠使開發人員高度相信在他們的個人環境中開發的程式碼在生產環境中也能正常運行。Tanzu Application Platform 這樣的設計機制讓開發人員可以構建可移植的應用程式,並避免在生產環境中進行昂貴的除錯。

  • 體驗開發人員和運維人員之間的平滑切換

開發人員完成一次版本迭代後將程式碼提交到程式碼倉庫,此時開發生命週期會從內迴圈(個人開發環境)過渡到共享的外迴圈環境,然後將其部署到生產環境。由於運維團隊已將安全性和合規性要求配置到供應鏈中,因此將程式碼部署至生產的路徑對於開發人員來說是無縫的。

開發人員和運維人員之間的這種平滑切換是將程式碼快速部署到生產環境中的關鍵因素。 Tanzu Application Platform使這種切換變得順暢,因為TAP只需要開發人員提交他們的程式碼(例如, git push ),之後軟體供應鏈會自動觸發,從而提供連續的生產上線路徑。

  • 遵循運行時最佳實踐以實現高效的應用程式部署

Convention Service:在 Kubernetes 中部署應用程式時應該遵循一些最佳實踐,如果沒有這些最佳實踐,部署的工作負載可能會出現不可預測的運行時異常,從而破壞業務連續性。但是,應用開發人員 他們不是 Kubernetes 專家,通常不會意識到這樣的運行時最佳實踐。 Tanzu Application Platform中的Convention Service(又名,工作負載的運行時配置約定),為運維人員提供了配置這些最佳實踐策略並自動將適用的配置約定應用於工作負載。


如上所述,藉助 Tanzu Application Platform,企業可以構建和部署雲多雲環境中 Kubernetes 上的原生應用程式, Tanzu Application Platform提高了開發人員的生產力,使開發團隊能夠在不中斷他們熟悉的工作流程的情況下快速開發應用程式並允許 DevOps 專業人員和應用運維人員通過內建的安全性和合規性更快地將開發人員的程式碼部署到生產中。相信大家現在已經對Tanzu Application Platform的總體能力以及它能夠為您帶來的價值有了清晰的瞭解,那麼接下來我們還為各位準備多篇對於各類能力場景及技術實現詳細原理的介紹,請大家持續關注吧!

作者介紹:

肖林,VMware 現代化應用平臺高階解決方案架構師,主要負責VMware Tanzu雲原生技術解決方案的架構與設計;在此之前,在IBM任職負責大中華區雲原生技術解決方案架構,主導了多個雲原生解決方案的設計。個人從業16年, Cloud Native擁護者&Agile實踐者, 在容器,大規模分散式服務及治理,應用現代化、Spring等領域都有技術積累,同時具備CNCF CKA、CNCF CKS、Spring Professional等認證。

來源|公眾號:VMwareTanzu雲原生

「其他文章」