如今, 市场环境纷繁复杂, 瞬息万变, 现代企业为了更好地生存, 需要有极强的适应能力快速而轻松地迎接改变, 成为了一个优质企业的特征之一, 同时企业还要求技术团队构建更科学的架构, 搭建成本更低的平台, 这就使得这些团队越来越倾向于使用微服务架构来应对以上要求
微服务的做法有利于软件组件和数据的分散化, 将一个整体分解成更小更容易改变的部分, 分散仅帮助团队加快工程进度, 而不会牺牲系统的安全性要想让这种架构工作得很好, 需要改变工作方式
微服务架构的设计, 其实是为了使团队能够在执行工作的人之间分配决策权力, 向更多成员直接推行决策权, 允许他们以更自由的方式生产微服务架构使用正确的话, 将产生更好和更快的变化但是如果你的架构错误, 那么一系列坏的决定可能会降低转化率, 甚至会损害你的业务
我们讲决策权分配, 即是说微服务架构的拆分实际上就是在寻求正确的权力下放战略这是一个进化过程, 需要不断地进行分析和调整而如何正确的拆分微服务架构, 我认为可以重点从以下三个方面考虑:
1 我们应该做哪些决定?
设计微服务系统不仅仅是改变组件大小, 架构中涉及创建和更改服务的所有领域都有一定的作用在这里总结了以下九个方面, 作为拆分微服务架构时所做决定的参考:
生命周期: 什么时候创建或停止服务? 我们什么时候需要将它们分开?
服务实现: 我们应该在每个服务中使用哪些工具语言和架构?
系统架构: 服务如何引导他人? 开发人员如何了解?
数据架构: 服务之间如何共享数据?
变更过程: 什么时候可以改变服务? 部署和 QA 的工具和过程?
团队管理: 谁在哪个团队服务? 每个团队负责什么? 团队成员做了什么?
人事管理: 人员如何被雇用和解雇? 员工如何激励和奖励?
安全管理: 我们如何降低安全事故的风险? 需要做些什么来改善整个系统的安全性?
采购过程: 可以购买什么软件? 使用开源软件需要哪些保护?
2 涉及到哪些人?
不得不承认, 一个员工做出的一些决定对他们的公司来说可能是非常有影响力的一个很典型的现象是, 公司试图对内部的决策者增加控制, 以便将风险降至最低, 从而导致决策权集中化例如, 在过去的几年中, 苹果以拥有一个高度集中的设计团队而闻名, 少数的人做出产品设计的大部分决策
集中发生是因为正确的人需要做出最重要的决定通常, 正确的人是具有天赋, 专业知识和经验的组合, 使我们能够相信他们做出最好的决定, 我们可以称这些人为我们的明星决策者但实际上, 公司的明星决策者数量有限, 大多数团队只有几颗明星
微服务改变了这种少数人行使决策权的现象, 同时更容易应对错误的决策如果一个团队在微服务工作时作出错误的决定, 其错误的波及范围会很小, 容错率变高当系统的更改变得便宜和容易时, 团队可以快速改进先前的决策, 使他们能够更快地获得最佳决策
3 谁拥有哪一部分?
决策基于选择, 而选择又基于领域知识决策不应该立即执行, 它需要一个过程, 需要高度专业的技能或知识来实现
管理专家亨利明茨伯格 (Henry Mintzberg) 为我们提供了一个很好的模式, 其中概述了决策过程的步骤:
研究与信息采集
生成选择
做出选择
授权的选择
执行和实施
所有这一切的关键, 是在采用决策分权化时, 不需要绝对每个步骤都可以独立集中或分散化, 在平衡效率和安全性时, 可以获得更大的灵活性如今, 集中选择与非集中选择相结合, 也是现在很多大公司常见的模式
当人们谈论微服务架构时, 权力下放过程的选择授权和执行部分相互协作快速规模化地移动, 这些都降低了变化来临时对整体系统产生的负面影响它是提高变革速度的有效途径, 但不要忘记, 你的成员特点团队协调, 以及所有的系统工具和工作环境同样重要
你必须了解如何做出决策, 如何改进流程, 这才是迎接变化的好方法
来源: https://juejin.im/post/5aa28e1ef265da237b21b08f