聊聊什么是云原生?
本文轉載自微信公眾號「全棧碼農畫像」,作者小碼甲。轉載本文請聯系全棧碼農畫像公眾號。
> 一千個讀者眼里有一千個哈姆雷特,本號近半年零零散散寫了一些云原生、Devops的文章, 最近系統閱讀微軟Docs, 今天開始結合自己的實踐專題意譯[云原生]。
近幾年,云原生成為了軟件行業的驅動力。
這是一種構建大型復雜系統的新方式,也是一種充分利用現代軟件開發實踐、技術和云基礎架構的方法,這個方法改變了設計、實施、部署、系統運作的方式。
云原生系統被設計為擁抱快速變化、大規模和彈性。
云原生基金會提供的官方定義:
云原生技術能夠讓團隊在現代、動態環境(如公共、私有和混合云)中構建和運行可伸縮的應用程序,容器、服務網格、微服務、不可變基礎設施和聲明性api實現了這個方法。
這些技術使松散耦合的系統具備彈性伸縮能力、可管理性和可觀測性。結合健壯的自動化技術,使得工程師可以最小的工作量進行頻繁且可預測的迭代部署。
用戶的需求越來越多,應用程序也變得越來越復雜。用戶期望需求可以得到快速響應、增加創新性功能和零停機時間。
云原生是關于速度和敏捷性的,可以讓業務系統從“啟用業務功能”演變為“能夠加速業務速度和增長”的戰略轉型武器。
這是一些實施了這些技術的公司。考慮一下他們已經實現的速度、敏捷性和可伸縮性。
公司 | 生產實踐 |
---|---|
Netflix | 在生產中提供600多種服務。每天部署一百次。 |
Uber | 在生產中有1,000多種服務。每周部署數千次。 |
微信 | 擁有3,000多種生產服務。每天部署1,000次 |
如您所見,Netflix,Uber和微信公開了由數百個獨立微服務組成的系統。這種架構風格使他們能夠快速響應市場狀況。他們可以做到實時更新復雜應用程序中的部分區域,并根據需要分別縮放這些區域。
云原生的速度和敏捷性來自多種因素。
首先是云基礎設施,下圖顯示的另外五個基礎支柱也為云原生系統提供了支撐。
云基礎設施
云原生系統充分利用了云服務模型。
云原生系統旨在在動態、虛擬化云環境中蓬勃發展,廣泛使用平臺即服務(PaaS)計算設施和托管服務。
他們將基礎設施視為一次性的:只需幾分鐘即可配置,并通過自動化按需調整大小、縮放、移動或銷毀。
Devops中被廣泛認可的概念“寵物與牲畜”:
寵物服務模型
在寵物服務模型中,服務實例被當作寵物,每個寵物都有一個獨特的名字,例如宙斯、波塞冬和雅典娜。他們“獨特,并得到刻意的關注,當他們生病時,你會讓他們恢復健康”。你可以通過增大它們的體型來擴大規模,當有寵物生病時,每個人都會關注到。
寵物服務器的示例包括大型機,單獨的服務器,負載平衡器和防火墻,數據庫系統等。
牲畜服務模型
牲畜服務模型將每個服務實例配置為虛擬機或容器,它們是相同的,并分配了系統編號,例如Service-01,Service-02等。你可以通過創建更多"擴展實例"來擴展,當某一個不可用時,不會有人關注到。
牲畜模型的例子包括Web服務器陣列,nosql集群,消息隊列集群,搜索集群,緩存反向代理集群,大數據集群等。
牲畜模型信奉“不可變基礎設施”:服務器在部署后永遠不會被修改,如果需要更新,修復或修改某些內容,則會根據包含相應更改的鏡像構建新服務器以替換舊服務器。經過驗證后,它們就會投入使用,而舊的則會退役。
云原生系統采用牲畜服務模型。隨著基礎設施伸縮而持續運行,與它們所運行的計算機無關。
Ref
https://joachim8675309.medium.com/devops-concepts-pets-vs-cattle-2380b5aab313
https://docs.microsoft.com/en-us/dotnet/architecture/cloud-native/definition
這是一個專題,后面會意譯出云原生其他五大支柱: 現代設計理念、微服務、容器化、 支撐性服務、自動化,請持續關注。