红帽资深解决方案架构师魏新宇:云原生应用构建之路
魏新宇
讀完需要
7
分鐘速讀僅需 3 分鐘
魏新宇,紅帽資深解決方案架構師。在 IaaS、PaaS 方面有豐富的經驗,致力于開源解決方案在企業中的推廣和應用。從售前角度主導了紅帽在金融、汽車行業的 PaaS 方面的多個項目。曾就職于華為、IBM、VMware,工作涉及領域包括硬件、AIX/Linux、虛擬化、PaaS、DevOps、微服務等。暢銷書《OpenShift 在企業中的實踐 PaaS DevOps 微服務》《云原生應用構建:基于 OpenShift》聯合作者。獲得紅帽 RHCA Level 5 認證、RHCE 認證,以及 ITIL V3、Cobit5、TOGAF、C-STAR/TOGAF(鑒定級)相關認證。通過“大魏分享”(david-share)微信公眾號,分享了很多項目實踐經驗。
1
? ?
云原生應用
1.1
? ?
什么是云原生應用
傳統的軟件開發流程是瀑布式的,開發周期比較長,并且如果有任何變更,都要重新走一遍開發流程。在商場如戰場的今天,軟件一個版本推遲發布可能到發布時這個版本在市場上就已經過時了;而競爭對手很可能由于在新軟件發布上快了一步就搶占了客戶和市場。
相比于傳統應用,云原生應用非常注重上市速度。云原生應用是獨立的、小規模松散耦合服務的集合,旨在充分利用云計算模型提高應用發布速度、應用靈活性和應用代碼質量,并降低應用部署風險。雖然名字中包含“云原生”三個字,但云原生的重點并不是應用部署在何處,而是如何構建、部署和管理應用。通過表 1-1,我們可以比較清晰地看出云原生應用與傳統應用之間的差別。
1.2
? ?
云原生應用開發和部署的四大原則
云原生應用所構建和運行的應用,旨在充分利用基于四大原則的云計算模型。
1. 基于服務的架構:基于服務的架構(如微服務)提倡構建松散耦合的模塊化服務。采用基于服務的松散耦合設計,可幫助企業提高應用創建速度,降低復雜性。
2. 基于 API 的通信:即通過輕量級 API 來進行服務之間的相互調用。通過 API 驅動的方式,企業可以通過所提供的 API 在內部和外部創建新的業務功能,極大提升了業務的靈活性。此外,采用基于 API 的設計,在調用服務時可避免因直接鏈接、共享內存模型或直接讀取數據存儲而帶來的風險。
3. 基于容器的基礎架構:云原生應用依靠容器來構建跨技術環境的通用運行模型,并在不同的環境和基礎架構(包括公有云、私有云和混合云)間實現真正的應用可移植性。此外,容器平臺有助于實現云原生應用的彈性擴展。
4. 基于 DevOps 流程:采用云原生方案時,企業會使用敏捷的方法,依據持續交付和 DevOps 原則來開發應用。這些方法和原則要求開發、質量保證、安全、IT 運維團隊以及交付過程中所涉及的其他團隊以協作方式構建和交付應用。
在了解了云原生應用開發和部署的四大原則后,我們接下來介紹云原生應用的構建之路。
2
? ?
云原生應用構建之路的步驟
云原生應用的構建之路一共分為 6 個步驟。
步驟 1:發展 DevOps 文化和實踐。
要完成云原生應用的構建之路,開發和 IT 運維團隊必須進行多方面的變革,以便更加快速高效地構建和部署應用。各行各業的客戶都需要周全地考慮各種活動、技術、團隊和流程,因為這些要素綜合起來才能實現 DevOps 文化。因此,要想充分利用新技術,采用更加快速的方案,實現更為密切的合作,企業必須切實遵循 DevOps 的原則和文化價值,并圍繞這些價值來進行組織和規劃。借助于 Red Hat 的 OpenShift,企業可以實現 DevOps 以及進一步的 DevSecOps 技術的落地。
步驟 2:借助輕量級應用服務器,為現有單體應用提速。
在開啟云原生應用之旅時,企業不能只關注開發新的應用。很多傳統應用都是確保企業順利運營和不斷創收的關鍵所在,不能簡單地取而代之。企業需將這類應用與新的云原生應用整合到一起。但是,如何加快現有單體式應用的運行速度呢?
正確的方法是:將現有的單體式架構遷移到模塊化程度更高且基于服務的架構中,并采用基于 API 的通信方式,從而實施快速單體式方案。在開始實施將單體式應用重構為微服務的艱巨任務前,企業應該先為他們的單體式架構奠定堅實的基礎。雖然單體式應用的敏捷性欠佳,但其受到詬病的主要原因是自身的構建方式。運行快速的單體式應用可以實現微服務所能帶來的諸多敏捷性優勢,而且不會增加相關的復雜性和成本。
通過對快速單體式方案進行評估,可以確保應用在構建時遵循嚴苛的設計原則,以及正確定義域邊界。這樣,企業就能在需要時以更加循序漸進、風險更低的方式過渡至微服務架構。如能以這種方式實現快速單體式應用的轉型,即可為優良的微服務架構打下扎實的基礎。借助于 Red Hat OpenShift 和輕量級的應用服務器 Red Hat JBoss EAP,我們可以將傳統單體應用遷移到容器中,為現有單體應用提速。隨著 OpenShift 承載的單體應用越來越多,就會涉及傳統 ESB 分布式的問題,即分布式集成。
步驟 3:借助 PaaS 平臺和 DevOps 加快應用開發速度。
可復用性一直都是加速軟件開發的關鍵所在,云原生應用也不例外。但是,云原生應用的可復用組件必須經過優化,并整合到容器 PaaS 平臺和 DevOps 中。例如, CI/CD 開發流水線、PaaS 提供的滾動升級和藍/綠部署、自動可擴展性、容錯等,可以大幅提升云原生應用的開發速度。
步驟 4:選擇合適的應用開發框架。
隨著物聯網(IoT)、機器學習、人工智能(AI)、數據挖掘、圖像識別、自動駕駛等新興技術的興起,應運而生的應用開發框架也越來越多,如圖 1-1 所示。我們需要根據特定的業務應用需求來選擇語言或框架,因此不同的云原生應用會采用不同的應用開發框架。這就要求容器 PaaS 平臺能夠支持多種應用開發框架。Red Hat OpenShift 可以支撐多種應用開發框架。
步驟 5:借助可重復的流程、規則和框架,實現 IT 自動化,加速應用交付。
通過 IT 自動化流程、避免手動執行 IT 任務,是加速交付云原生應用的重點。IT 自動化管理工具會創建可重復的流程、規則和框架,以替代或減少會延遲上市的勞動密集型人工。這些工具可以進一步延伸到具體的技術(如容器)、方法(如 DevOps),再到更廣泛的領域(如云計算、安全性、測試、監控和警報)。因此,自動化是 IT 優化和數字化轉型的關鍵,可以縮短實現價值所需的總時長。
步驟 6:推動變革,采用模塊化程度更高的架構。
在微服務開發架構中,應用被拆分成最小的組件,并彼此獨立。此種軟件開發方案強調高精度、輕量化,力求在多個應用中共享相似的流程。雖然微服務架構不要求使用特定的底層基礎架構,但基于容器的平臺更易于微服務的落地。
通過微服務架構,企業可以在一天內多次執行生產部署。從架構的角度來看,微服務需將每一個服務拆分成各自的部署單元。隨后,用戶可單獨管理和部署每個微服務,并且可能由不同的團隊來負責各個微服務的生命周期。但是,實施微服務架構需要一定的投資和技能,企業在引入微服務時,可以采用 Monolith First 方案,即先構建一個單體式應用。這樣做的目的是:先充分理解你的應用所屬的域,然后更好地識別其所包含的有限上下文,這些上下文將作為轉換成微服務的候選內容。這有助于避免技術債務,比如因不了解應用的所屬域和有限上下文就構建一組微服務而產生的修復成本。能夠支持不同的框架、語言和云原生應用開發方案的企業級 PaaS 平臺(如 OpenShift),是云原生應用成功的關鍵。除此之外,在使用微服務后,我們還應考慮云原生應用的安全,如認證授權、單點登錄、流量控制等。隨著微服務的普及、業務系統復雜性的增加,我們還需要考慮 API 治理和業務系統分布式集成。
更多關于基于 OpenShift 構建云原生應用的內容推薦閱讀《云原生應用構建:基于 OpenShift》。
3
? ?
好書推薦
這是一部從開發和運維兩種視角講解如何基于OpenShift構建云原生應用的著作。三位作者分別來自紅帽和微軟公司,都是OpenShift和云原生領域的布道者和領軍人物,經驗非常豐富。
(1)作者魏新宇和王洪濤均來自紅帽官方,分別是紅帽的資深解決方案架構師和副首席架構師,都是云計算和OpenShift領域的布道者和領軍人物。
(2)作者陳耿曾是紅帽官方中國OpenShift核心團隊成員,現任微軟全球黑帶團隊云原生技術專家, Azure Red Hat OpenShift亞太區產品技術負責人。
(3)本書從開發和運維的雙重視角講解了如何基于OpenShift和其他開源分布式中間件構建云原生應用,提供詳盡的技術、步驟和方法。
(4)秉承全棧思維,講解了構建云原生應用需要的云原生、OpenShift和開源分布式中間件技術。
本書源碼地址:https://github.com/davidsajare/Building-Cloud-Native-Applications-with-OpenShift
更多分享請移步“大魏分享”公號
福利:可以在留言中交流自己對于云原生應用構建以及對于OpenShift、PaaS平臺的看法,會在留言中選出點贊前3名粉絲,包郵送出機械工業出版社華章公司贊助的《云原生應用構建:基于OpenShift》新書一本。
END
推薦閱讀
蘇寧智能 BU大數據中心數據治理團隊負責人韋真:數據治理“三字經”,超實用! 2020-09-09
螞蟻資深算法專家周俊:從原理到落地,支付寶如何打造保護隱私的共享智能? 2020-09-08
阿里高級技術專家簫逸:如何畫好一張架構圖? 2020-09-07
阿里巴巴閑魚架構負責人王樹彬:萬億交易規模技術架構實踐 2020-09-05
58轉轉技術總監駱俊武:監控系統選型?必讀本篇! 2020-09-04
螞蟻集團高級架構師郭援非:分布式數據庫是金融機構數字化轉型的最佳路徑 2020-09-03
工行高級經理林承軍:工行基于 MySQL 構建分布式架構的轉型之路 2020-09-02
平安銀行吳建峰:RocketMQ 在銀行的應用和實踐 2020-09-01
阿里高級技術專家張建飛:應用架構分離業務邏輯和技術細節之道 2020-08-31
知道創宇總監姚昌林:敏捷開發-如何打破研發交付過程中的“墻” 2020-08-28
微博技術專家陳波:百億級訪問量的應用如何做緩存架構設計 2020-08-27
天弘基金首席架構師李鑫:微服務接口限流的算法及架構實現 2020-08-25
阿里P9專家右軍:大話軟件質量穩定性 2020-08-03
? ?END ? ?? #接力技術,鏈接價值# 點分享點點贊點在看
總結
以上是生活随笔為你收集整理的红帽资深解决方案架构师魏新宇:云原生应用构建之路的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 软件开发中部分代码的注解
- 下一篇: Java泛型擦除