微服务实施参考模型(简称参考模型)是笔者基于过去实施微服务的经历,制定的微服务落地过程中的实践指南。 微服务参考模型梳理了产品在微服务实施过程中的适用性评估、成熟度参考、度量体系以及能力提升计划,旨在帮助团队尽早识别微服务实施过程中的风险,并有效地推进微服务相关实践的落地。
4.1 为什么需要参考模型
为什么提出参考模型
对于业务背景、系统复杂度、技术体系、团队规模不尽相同的团队,有效地实施微服务并平滑演进,并不是 一件容易的事。微服务的概念看似简单易懂,但实际上却是过去多年 “若 干最佳实践 ” 的结合,其包括了持续集成、敏捷实践、分布式系统、运维管理、测试管理以及团队 文化等方面。
在过去的 几年里, 笔者参与了多个微服务产品构建。在这个过程中,总会遇到如上所述的各种挑战。因此,笔者基于这些“踩过的坑 ” ,总结出微服务实施参考模型(简称参考模型),希望能为更多实施微服务的团队提供 一套可落地的、易实施的微服务实践指导,从而有效 地落地微服务。参考模型不是 一个强制的规章制度,它是将软件工程方法、分布式系统设计、运维以及团队实践相结合起来的一套范式。
从参考模型中获得的收益
在微服务实施过程中,不同的团队 面临的挑战不尽相同 ,通过使 用 参考模型,实施微服务的团队可以从中获得如下收益:
微服务的演进过程涉及业务、技术、团队、架构及流程等多个 方面。参考模型从业务属 性、竞争 力、技术实践和团队组织四个方面对现状进行评估,帮助团队尽早识别产品微服务落地过程中的 风险。
参考模型定义了微服务实施过程中的阶段性产出。基于参考模型,能够帮助团队了解当前的状态、待改进点,并有助于团队根据业务形态、技术经验的不同,制定合理的阶段性 目标,并持续获得价值。
微服务的实施包含敏捷、全功能团队、持续交付、 DevOps 等多 方面的实践。参考模型从团队文化、技术实践、 DevOps 以及流程 工具等多个方面描述了实施微服务架构的最佳实践组合。通过学习和了解参考模型,有助于培养自组织团队,并积累优秀实践,并为更大范围实施微服务提供可复制的经验。
在微服务的实施过程中,涉及多样化的技术和 工具。参考模型帮助团队打造专属能力地图,制定适合的技术与工具栈,并动态衡量团队在技术与工具的能力。
4.2 参考模型的核心内容
微服务参考模型主要由三个部分组成,即适 用性评估、成熟度参考以及度量指标 ,如图 4-1 所示。
图 4.-1 微服务参考模型
适用性评估
微服务架构的落地涉及分布式、 DevOps 、持续交付、敏捷实践等多维度的内容,对现有系统进 行服务化改造需要考虑诸多因素。另外,对于一些复杂的遗留系统, 在改造的过程中也会带来额外的成本与风险,如新旧系统的集成、细粒度单元的交付等。所以,如何评估现有产品,判断其是否适合微服务化改造,以及从哪些维度进 行改造,是万里 长征的第 一步。第一部分适用性评估将帮助我们解决这些问题。
成熟度参考
经过基本的风险和问题识别后,接下来需要制定短期和中长期 目标,并考虑如何有效落 地。第 二部分成熟度参考旨在帮助团队制定有效的演进目标,循序渐进 地落地。在成熟 度参考中,定义了五个成熟度阶段,并从三 大方向、八个维度对这五个阶段展开了详细介 绍。
度量指标
如何有效体现微服务实施过程中的效果,是每个转型团队都关注的问题。第三部分度量指标旨在帮助团队建 立合 理的度量体系,及时跟踪微服务实施过程中的数据变化,并获取反馈、持续改进。
4.2.1 适用性评估
为了帮助团队在迈出第 一步前,有效识别实施过程中的 风险,笔者从业务属性和竞争 力两方面整理 了微服务落地需要考虑的因素。
业务属性
微服务的本质是分布式系统,业务对数据的一致性要求,决定了系统是否可以采用分布式架构进行构建。实施微服务改造前需要重点评估在分布式系统下, CAP 定理所带来的数据一致性的影响是否能满足业务场景的需求。
考虑因素:业务数据是否需要满 足强一致性,还是最终一致性即可?
分布式系统相比单体应用而言,会带来额外的网络开销。对于业务上要求低时延的系统,需要重点评估在分布式架构下,网络带来的延迟能否满足业务需求。
考虑因素:通信过程带来的开销是否能满 足业务需求?业务 处理允许时延为秒级、毫秒级还是微秒级?
通过集群的 方式可以提升服务的可用性,但前提是需要考虑服务是否容易水平 扩展。通常无状态的服务容易扩展到多个实例,而有状态的服务则成本较高。
考虑因素:系统原有服务是主备模式还是单实例模式?服务的实例有 无状态?在业务流量增加的情况 下,能否通过 水平扩展满足可用性的要求?
竞争力
对于产品团队 而言,快速的交付有利于缩短获取用户反馈的周期,有利于团队实现敏捷开发及降低发布的风险。
考虑因素:响应业务需求的快速变化以及交付周期的缩短是提高核心竞争力的 重要因素吗? 业务领域的需求变化频率是什么单位级别,是季度、 月、周或者 天?所处的行业,对产品交付周期有什么样的限制和诉求?
微服务的架构具有良好的可伸缩性,可以按照业务需要进 行水平伸缩。
考虑因素:对于系统 而言,按需的弹性伸缩能力,是提高其核心竞争力的重要因素吗?水平伸缩的场景是可以预测的吗?是否需要自动化的弹性伸缩机制?
4.2.2 成熟度参考
任何优秀架构的演进都是增量式过程,不可能 一蹴而就,笔者定义了微服务的实施成 熟度参考,旨在帮助团队循序渐进地实施微服务,并且不断衡量进展,制定有效的演进 目 标。
微服务的实施是 一个涉及组织、架构、工程等多方面的演进过程,综合笔者过去在多个团队的实践经验,这里将微服务实施的过程划分为五个阶段,并基于 团队与 文化、架构与技术、工程与实践 三个 方向,细分出八个维度。通过在每个维度上对不同阶段进行详细解读,将维度与阶段的横纵向 连接,读者可以清晰地定位团队在各个维度所处的位置,并制定具体的改进 方向,帮 助读者解开“不知身在何处,不知向何处去 ” 的困惑。
参考维度定义
笔者基于团队与 文化、架构与技术、工程与实践 三 大方 向,将微服务实践的过程细分为全功能团队、敏捷实践、服务设计与实现、服务 支撑组件、运维管理、测试管理、交付流水线、部署管理八个维度。
各个维度所描述的具体含义如下表所示。
方向 |
维 度 |
含 义 |
团队与 文化 |
全功能团队 |
描述了团队在 自组织、持续优化、高效协作等方面的成熟度 |
敏捷实践 |
描述了团队对于敏捷价值观的理解深度和采 用敏捷相关实践的成熟度 |
|
架构与技术 |
服务设计与实现 |
描述了服务的分析、设计以及实现的技术与相关实践的成熟度 |
服务 支撑组件 |
描述了服务治理、 日志分析、注册发现、熔断等服务支撑组件的成熟度 |
|
运维管理 |
描述了使 用服务监控、告警、故障恢复、弹性伸缩等运维技术与实践的成熟度 |
|
工程与实践 |
测试管理 |
描述了对服务的测试策略、 自动化、测试方法以及质量验证实践的成熟度 |
交付流水线 |
描述了在交付流水线 方面的实践成熟度,包括自动化流水线、分支管理、结果可视化等 |
|
部署管理 |
描述了在部署策略与技术 方面的实践成熟度,包括服务的自动化部署、发布策略、部署故障演练以及回滚策略等 |
参考阶段定义
基于如上定义的维度,笔者将每个维度分为五个演进阶段。如图 4-2 所示。
图 4-2 参考阶段定义
其中,每个阶段表示了微服务落地过程中的关键特征。通过定义不同特征,帮助读者有效识别实施过程中离下 一阶段的差距,制定演进的计划和时间点。
微服务交付的过程多借助 手动执行,流程通常是混乱和无序的,缺乏稳定的环境,产品的交 付经常超出成本或赶不上进度。
微服务实施过程得到管理,服务交付的过程有计划、执 行、跟踪和管控,部分过程自动化, 服务状态可视化。
定义和建 立了团队级的标准过程,用标准、规范 、 工具和方法等描述了服务的交付过程,并在整个组织范围内得到认可,在微服务生命周期上实现了过程自动化。
定义了过程度量指标,能够评价微服务交付过程执 行的效率和质量,而且交付过程是可以度量、控制和预测的,构建了可视化的度量收集方法并能持续跟踪。
形成了成熟的 自治团队,能够自行分析和解决 在微服务实施过程执 行中的相关问题,可以 有效识别和控制交付过程中的风险,建 立了适合自身的持续优化和创 新过程,并能够在组织内有效复制。
参考模型详情
基于如上所示的三个 方向、五个阶段以及八个维度,梳理出如下表 所示的参考模型详情,涵盖微服务实施过程中需要考虑的架构、 工程、组织各维度等因素。 表格中所列出的特征是笔者认为在该维度下重要的特征,但实际场景并不仅限于此,读者可以基于这些特征进 行扩展 。
双模 IT 源 自 Gartner2014 年提出的双模 IT 概念,表示遗留系统和新系统同时存在并提供服务的状态。
▼
往期精彩回顾
▼
【大咖连载】微服务与Serverless
【大咖连载】微服务架构的本质
Netty 版本升级血泪史之线程篇(下)
《微服务架构与实践(第2版)》是在第1版的基础之上,基于作者近年来对服务化改造的实战经验和思考,并结合业界的技术趋势进行的一次体系化的精进。全书共分为基础篇、策略篇和实践篇,剖析了微服务架构理论、微服务实施的参考模型、最佳实践以及基于真实案例的实战。
本书不仅适合架构师、开发人员以及技术管理者阅读,也适合正在尝试向微服务架构迁移的团队或者个人。
京东购买链接:
https://item.jd.com/12511883.html
长按扫码
加入组织
微服务云应用平台(ServiceStage) :提供微服务的开发、构建、发布、监控及运维等一站式解决方案。
https://www.huaweicloud.com/product/servicestage.html
Apache ServiceComb :业界首个Apache 微服务解决方案,致力于帮助企业、用户和开发者将应用轻松微服务化上云,实现对微服务应用的高效运维管理。
http://servicecomb.apache.org/cn/docs/join_the_community/
本文为作者原创文章,未经作者允许不得转载。
在看点这里