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