微服務體系和雲原生架構的區別
1 雲原生架構簡介
CloudNative 直譯過來是雲原生,是面向雲環境而設計的軟體架構。雲原生並不是新的技術,它是基於微服務架構思想、以容器技術為載體,一種產品研發運營的全新模式。詳細資訊可見 https://github.com/cncf/landscape 。
2015 年 Pivotal 公司的 Matt Stine 寫了一本叫做遷移到雲原生應用架構的文章,第一次提出了雲原生( Cloud Native )的概念。 Pivotal 不但是雲原生應用的提出者,而且還推出了 Pivotal Cloud Foundry 雲原生應用平臺和 Spring 開源 Java 開發框架,成為雲原生應用架構中先驅者和探路者。
Pivotal 最初的定義,其中探討了雲原生應用架構的幾個主要特徵:( 1 )符合 12 因素應用;( 2 )面向微服務架構;( 3 )自服務敏捷架構;( 4 )基於 API 的協作;( 5 )抗脆弱性等。
CNCF ( Cloud Native ComputingFoundation ,一個組織)對雲原生做了重新定義,雲原生技術幫助公司和機構在公有云、私有云和混合雲等新型動態環境中,構建和執行可彈性擴充套件的應用。雲原生的代表技術包括容器、服務網格、微服務、不可變基礎設施和宣告式 API 。這些技術能夠構建容錯性好、易於管理和便於觀察的鬆耦合系統。結合可靠的自動化手段,雲原生技術可以使開發者輕鬆地對系統進行頻繁並可預測的重大變更。雲原生總體內容如圖 1 所示。
圖1 雲原生總體圖
目前業界公認的雲原生主要包括以下四個層面的內容,如圖 2 所示。
圖 2 雲原生的內容
CNCF 給出了雲原生應用的三大特徵:
-
容器化封裝:以容器為基礎,提高整體開發水平,形成程式碼和元件重用,簡化雲原生應用程式的維護。在容器中執行應用程式和程序,並作為應用程式部署的獨立單元,實現高水平資源隔離。
-
動態管理:通過集中式的編排排程系統來實現動態的管理和排程。
-
面向微服務:明確服務間的依賴,互相解耦。
雲原生包含了一組應用的模式,用於幫助企業快速,持續,可靠,規模化地交付業務軟體。雲原生由微服務架構, DevOps 和以容器為代表的敏捷基礎架構組成。持續交付、 DevOps 以及微服務分別面向雲原生機制的三項根本性重點,即為什麼、如何以及什麼。
持續交付能力正是軟體邁向雲原生方向的主要動力:軟體釋出速度的加快能夠有效降低反饋週期的持續時間。 DevOps 代表著全面實現雲原生戰略過程中需要遵循的文化與技術轉變。微服務則是一套軟體架構模式,其已經被成功且廣泛地應用於開發及交付運營工作的規模擴充套件當中,且能夠有效規避緩慢、高風險及單一性部署策略。
2 微服務體系和雲原生架構的區別
如果是架構師、開發工程師講技術架構,一般都講微服務架構體系,以微服務微基礎,然後把 CI/CD 、 DevOps 、容器等基礎設施環境都包含在內。如果是運維工程師講架構,一般都講雲原生架構,以容器等基礎設施環境為基礎,把微服務、 CI/CD 、 DevOps 等包含在內。這就是這兩個概念的區別。
微服務體系和雲原生架構的組成部分有各自的部分,也有重疊的部分。這樣就可以劃分為三個部分,如圖 3 所示。
圖3 微服務體系與雲原生架構的對應
這三個組成部分的描述:
第 1 部分為微服務體系所具有部分:微服務業務體系,該部分從業務需求出發,如何來搭建微服務的業務模型。這部分內容在雲原生架構中沒有說明。
第 2 部分為雲原生架構所具有部分:基礎設施部分,通訊基礎部分。在微服務技術體系中,只是涉及到關於微服務技術架構及其相關的框架、平臺和工具。但對於基礎設施和基礎網路及通訊,對於微服務體系本身而言僅僅是外部依賴,故微服務技術體系中並不包含該部分內容。
第 3 部分為微服務體系與雲原生架構共有部分:這裡面的內容比較複雜。也包括兩個部分的內容。
第一部分是微服務技術體系部分共用功能。主要是微服務技術架構和相關整合工具部分。雲原生架構在此更多強調的是雲平臺和容器化能力。
第二部分是微服務管理體系部分共用功能。微服務體系更多是從業務角度來獲取相關的管理支援,如研發過程中的敏捷、研發規範和度量,運維過程的 CI\CD 等。而云原生架構更多是從基礎設施的角度來講述如何支撐 DevOps 和 CI\CD 。