由心理学家阿尔伯特·马斯洛(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)获取授权】