Kubernetes和微服務的需求層次
由心理學家阿爾伯特·馬斯洛(Albert Maslow)設計的,需求層次是一種心理學理論,用于解釋人類動機,包括人類需求的多層模型,通常被描述為金字塔內的層級。 馬斯洛使用諸如生理,安全,歸屬和愛,尊重,自我實現和自我超越等術語來描述人類動機通常經歷的階段。 作為人類,首先我們需要滿足的基本需求,然后是心理的需求,然后才能想到自尊,實現我們的全部潛力:
馬斯洛的需求層次理論
這種描述需求的方法是如此基礎,以至于它已經應用于許多其他領域,如員工敬業度,云計算,軟件開發,DevOps等。因此,將它應用于微服務也是有意義的,因為有一個清晰的需求列表是必須滿足的,才能在微服務旅程中取得成功。 所以這里是:
下面把每個層次和人類的需求層次對照著翻譯一下。
人類的基礎需求:生理需求和安全感。在這個層級的需求是IaaS,具體如下(自下而上):
- 硬件、存儲、網絡
- 操作系統&虛擬化
- CI/CD(構建服務器,制品庫)
人類的心理需求:歸屬和愛,尊重。在這個層級的需求是K8s,具體內容如下:
- 環境和容器管理
- 資源、存儲和容量管理
- 應用運行時和打包
- 健康檢查和恢復
- 應用部署(滾動升級和回滾)
- 聲明調度和放置
- 日志集中管理和配置管理
- 分布式的指標和跟蹤
- 服務發現和負載均衡
- 恢復性和故障容忍
- API網關和服務安全
- (調度的)作業管理
- 服務狀態
- 自動擴展(應用和基礎架構)
人類的自我實現需求:自我實現;在這個層級的需求是組織的需求,具體如下:
- DevOps
- 反脆弱
一旦我列出了微服務主要要考慮的問題(順序可能會有所不同),我自己不禁發現Kubernetes容器編排引擎確實很好地覆蓋了很大一部分這些需求。 所以我也添加Kubernetes到圖中。
首先,對于基礎層,我們需要計算資源,并且理想情況下是由基礎設施服務云提供商供給的的可擴展的標準操作環境(SOE)。 其他先決條件是一個自動化的CI / CD流程和制品庫,Kubernetes可以可以一定程度幫助我們運行和管理它們。 盡管如此,我們還需要一些專門的軟件,例如Jenkins用來做構建,以及制品庫,如本地Sonatype的Nexus for Docker和Maven工件,或者Docker Hub。
然后Kubernetes可以幫助我們管理多個隔離環境(命名空間),管理資源(配額和限制),存儲分配(持久卷),執行部署和回滾(部署),自動調度(調度程序),服務發現和負載平衡 ,彈性和容錯(pod健康檢查)。
對于某些需求,我們還需要額外的工具,例如用于容器實現的Docker或rkt,應用程序內彈性庫(如Netflix的Hystrix),來和Kubernetes的彈性功能結合使用。然后Kubernetes可以管理應用程序配置,還可以幫助我們運行最佳的集中日志記錄,指標收集和跟蹤,隨著越來越多的服務出現,這些功能也變得重要。
根據微服務的性質,我們可能有一些特殊的需求。 對于API驅動的微服務,我們將需要專門的API管理解決方案,也可以用來處理服務安全性(不是由Kubernetes提供)。 但Kubernetes可以幫助我們輕松地運行狀態服務(StatefulSet),批處理作業(作業)和計劃作業(cron作業)。
通過一個平臺提供所有這些特征,可以讓用戶通過自動放置,自動重新啟動,自動復制,自動縮放來執行一些更智能的活動,諸如應用和基礎設施自動縮放和自我修復。
由于Kubernetes滿足了所有這些需求,團隊所剩下的是簡化開發流程,擁抱DevOps文化從而實現快速交付,并在組織級實現反脆弱。
原文鏈接:https://thenewstack.io/introducing-microservices-hierarchy-needs/
作者:Bilgin Ibryam
【本文為51CTO專欄作者“劉征”的原創稿件,轉載請通過作者微信公眾號“DevOps教練”(MyDevOps)獲取授權】































