微服务:微服务组织的去中心化架构设计思考

微服务组织的去中心化

导引

适应力——快速方便改变的能力——正在变成现代商业组织的主要目的,由此要求技术平台面对变化更加简便高效低成本。这种需求促使技术团队更多采用微服务类型的软件架构,吸引力来自于微服务架构承诺软件快速迭代对业务影响甚微。

微服务:微服务组织的去中心化架构设计思考

微服务一般都是通过将软件模块和数据去中心化,或者说将原来“单体式”模式进化为更小、更易于改变的模式,将这些小模块部署到网络上。如何更好让这种架构发挥作用需要工作方式以及控制工作流的改变。采用微服务的组织一般都摆脱了传统开发模式,提供了发生巨大变化的可能性。

在设计型组织中授权决策可以实现去中心化。对比于以前少数人决策情形,去中心化使得参与设计工作的所有人都可以进行分布式决策。

将决策权下放到底层可以使得大家工作中更自由和自治,如果引导适当,将会产生快速而正确的改变。然而,如果组织引导不适当,一系列错误决定会反过来损害业务。关键点是:只在能够帮助加快业务发展而不损害系统安全的领域去中心化。

如何找到正确的去中心化战略点是一个需要仔细判断、分析和适应的革命性过程。有三个关键点可以帮助实现这一过程。

应该面向哪些决定?

我们的目的是扩大平台的适应性。因此应该从现有流程的瓶颈开始寻找。从一个政策落地开始,去发现那些必须等待其他人做出决定才能继续执行的瓶颈点。

去中心化有时候也不一定是解开瓶颈的关键。在一个依靠中心化决策的组织内部,去中心化可能会起到作用。然而,另一方面,如果不能发现因为中心化决策而被卡住的流程,去中心化可能起不到作用。

微服务系统并不只是改变构成元素规模这么简单,所有和创建改变服务相关的部门都需要介入其中。以下是采用去中心化微服务架构需要考虑的因素列表:

  • 服务生命周期:服务什么时候创建,什么时候退出?分别叫什么?什么时候需要分开他们?
  • 服务实施:每个服务都应该用什么工具,什么语言和架构完成?
  • 系统架构:服务之间如何通信?开发者如何获得消息?
  • 数据就够:服务之间数据如何共享?
  • 更改流程:服务什么时候可以被改变?部署和QA的工具和流程是什么?
  • 团队管理:人员服务于哪个团队?每个团队负责什么?团队成员做什么?
  • 人员管理:人员如何进出团队?雇员如何激励和奖励?有什么福利制度?
  • 安全管理:如何减小安全意外风险?需要做什么才能提高系统级安全?
  • 采购:什么软件可以采购?开源软件满足那种保护级别?

值得分析这些领域决定都是如何做出的。如何改变系统变化的方式?哪个决定流程拖后腿?最终,哪种自由和自治对整个业务最佳?

Netfix是一个在创新领域去中心化的示范企业,他们的“赋能员工决策自己工作时间”策略将以往需要封闭控制的决策去中心化了。让员工决定自己假期方式听起来很奇怪,但是迫使一个企业改变就应该从剔除冗余流程开始,同时引入新的风险,这是屡试不爽的方法。采用微服务开发软件的团队应该同时考虑在组织内部也推行这种优化。

这并不意味着分布式假期决定策略应该是微服务架构的首要问题。Netfix可以采用这种策略是跟他自己的文化和工作环境相关的,他们的员工之间有整体最佳的信任,公司也在雇佣什么样员工上广为称道。

并不是每个组织看起来都像Netfix是定位在在线视频内容发布领域。每个公司都有自己特定的领域和目标。自己需要发现擅长领域的特点,进行分析,内审和经验都可以帮助优化流程,使得企业朝适应化目标迈进。

应该引入哪些人?

有些决策者可以对公司产生巨大影响。一个改变客户账号交易的决定对传统银行来说是个巨大风险。一个改变用户使用习惯的决定对于拥有大量习惯于旧接口用户的软件公司来说也是一个巨大风险。

为了减小这种风险,更好控制住这种类型的决定导致了中心化决策流程。例如,过去几年中,苹果公司有一个著名的高度集中化设计团队,由少部分人对产品设计做决定。

正确的人做出重要的决断选择了中心化。正确的人一般都是兼备潜能、专业和经验,使我们高度相信他们能做出正确决定的人。可以称呼他们为“明星”决策者。

如果一个组织只有明星构成,那么决策就变成去中心化的。如果我们相信大多数人可以做最好决定,我们就可以将决策权分发给更多人。而实际上,一般公司只有为数不多的明星决策者。相对的,大多数团队有几个明星,更多的是缺乏所需经验和潜力做决定的人。

好消息是采用去中心化策略并不需要所有人都是明星员工,只需要考虑如何部署团队以及如何放置员工到最佳位置。采用微服务模式后,个体变化加快限制决策影响范围使得一切显得更容易。如果一个采用微服务的团队做了一个错误决定,其影响范围会被限制在很小的范围。当改变越来越容易,团队就可以快速修订之前做出的决定,使得尽快进化为正确的决定。

这种环境下,并不受限于明星员工的能力,只需要提供一个员工自由和自治的环境即可。

谁负责哪块?

没有决定是实时做出的,决定都是基于选择,也就是基于专业知识。决定不能被立刻实现,有时需要一些运气,有时则需要高度专业的知识。

管理学专家Henry Mintzberg给出了一些决定流程重要步骤如下:

  1. 信息搜集Research and information gathering
  2. 生成选项Generating choices
  3. 选择Selection (making a choice)
  4. 选项授权Authorization of the choice
  5. 执行并实现Execution and implementation

以上步骤并不需要去中心化决策架构,每个步骤都可以独立中心化或者去中心化,这样就可以在效率和安全性之间做出平衡。

考虑一个大公司典型招聘流程:一般都是HR部门负责广播开放职位邀请应聘者应聘岗位。然后搜集应聘者简历,列出最佳可选人员,列表被送到招聘经理那, 他会仔细从中再次筛选合适人选。随后球会被踢回HR部门,由他们来完成纸面工作完成整个流程。

中心化生成选项而选择去中心化在大公司中很常见。实际上,大部分采用微服务模式的组织或多或少都有用过这种方式。例如,一个中心化团队可以分辨出三类微服务团队乐于使用的数据库,选择权交由各个团队自己选择,但是只能从三种选项中做出决择。如果他们不从中选择,就需要给出理由,交由中心化团队进行重新评估可选项。

去中心化选择、授权和执行可以使得很多小团队快速成长。中心化研究和生成选项的步骤,总体上看会伤害创新,但是减少不良选择影响整个系统的风险。这是一个普遍问题因为很多组织都必须在两者之间做出折衷选择。

当在微服务化组织内部讨论去中心化对于提高变革很有用,但是别忘记这只是一方面,另一方面,团队成员构成,如何协调,以及采用什么工具和上下文也都很重要。

对于形成适应性组织和重要的是理解如何做出决定,而且更重要的是,流程如何改变才能提高面对变化的适应性。

原文链接:Decentralizing Your Microservices Organization

https://thenewstack.io/decentralizing-microservices-organization/

相关推荐