【摘要】 对于任何企业,MSA的实施都不能一蹴而就。企业在实施MSA的过程中应该避免教条主义、理想化、低估必需的投资、边学习新流程边变更架构、担忧失败等风险与陷阱。企业可以在MSA实施指导框架的指引下,进一步建立MSA的战略目标、原则、实践、工具平台视图,以更好地指导MSA落地。

随着领域驱动设计(DDD,Domain Driven Design)、持续交付、云计算、小型自治团队、大型集群系统等实践的发展与流行,微服务架构(MSA,Microservices Architecture)也应运而生。在数字化转型时代,许多组织为了提升业务敏捷性(Business Agility),发现MSA或许是帮助自己更快地交付软件的强大武器,因为MSA有望在灵活的变更交付、技术灵活性、更精准的弹性等方面带来益处。

然而企业却很快发现,单纯将MSA视为灵活的架构模式,往往难以保障MSA的成功实施。因而,若要成功实施MSA,除了改变软件交付物的结构化方式,企业必须在以下方面进行改变:

应用开发、交付与运维的组织方式

维持流动性同时确保质量与弹性的流程

微服务相关模式与实践所必需的新工具与平台

那么,企业到底应该如何实施MSA才能提升成功率呢?有没有一种指导性框架为MSA实施保驾护航呢?在探讨此问题之前,也许明确一下MSA的适用场景更为紧要。在《人月神话》中,Fred Brooks曾指出“软件没有银弹”。此论断对于MSA仍然适用。企业不应该将MSA视为软件交付的银弹。从严格意义上来讲,MSA的优势在于帮助企业解决软件领域的复杂问题(Complex Problem)。一般来讲,复杂问题具有以下几个特征:(1)没有足够的数据进行决策;(2)必须进行探索;(3)需要浮现式设计与实践;(4)面向行动的方法。关于复杂问题的详细阐述,可以参考Cynephin框架(https://www.mindtools.com/pages/article/cynefin-framework.htm)。当然,在企业面对复杂问题或者系统时,如果同时需要频繁部署来快速响应市场需求、需要高可用以及快速弹性神作,MSA将成为优先选项。

基于MSA的适用场景,并结合诸多企业实施MSA的实践,形成了如下图所示的实施指导框架,称之为“3PSD”。

图 MSA实施指导框架3PSD

从上图中,可以自然而然地看出流程(Process)、人员(People)、平台(Platform)、服务(Service)、数据(Data)之间相互影响:

从流程来讲:流程需要平台自动化、流程驱动自治团队、流程优化驱动服务的范畴界定;

从人员来讲:人员文化支持流程优化,人员技能影响平台选择;

从平台来讲:平台能力支持流程执行、人员角色、约束服务,平台持久化与移动数据;

从服务来讲:服务的定义驱动平台需求、人员组织、数据组织;

从数据来讲:数据的组织驱动服务的范畴界定,数据需求驱动平台需求。

因此,对于实施MSA的软件系统来讲,流程、人员、平台、服务、数据很难一步到位,采用迭代方式成为一种必然选择。当然,MSA的实施难以有明显的最终状态,因为随着迭代深入,实施框架中的5个方面发生变化的概率非常大。

在实施MSA之前,企业组织确定了适应的场景后,应该开展准备工作,评估组织的就绪程度。简单来讲,企业可以从以下几方面进行评估:

1. 真正敏捷;敏捷开发流程与实践;

2. 自动化程度:构建、测试、部署等;

3. 工程师文化:规划交付,并准备好试验与演进;

4. 践行DevOps;持续交付等;

5. 产品思维;

经过评估认为实施MSA已就绪后,企业应该确认商业干系人需要快速、可靠、灵活的功能交付与变更带来的价值。这样,企业就可以按照指导框架在流程、人员、平台、服务、数据等方面开展相关工作。
1 优化流程

开发与运维流程通常是MSA交付中最为关键并且最容易被忽略的部分。MSA需要非常高水平的开发与运维流程的成熟度与自动化。目前来看,DevOps的原则、文化与实践对于MSA的成功至关重要。企业组织应该从以下方面优化流程:

持续集成/持续交付:利用流水线实现微服务并行独立部署

流程自动化:构建、测试、部署、环境等环境自动化能力

DevOps反馈环:在交付流程中增强反馈,随时掌握服务状态、健康度,行为等

发布方式与计划:每个独立的微服务可以独立、按需发布,来满足快速的需要;

优化测试与QA流程:采用TDD/BDD、集成测试等测试左移(Shift-left testing)与金丝雀测试、A/B测试、在线巡检等测试右移(Shift-right testing)相结合

解决自治与分布服务引发的治理诉求:服务的SLA定义,服务下线等等;

2 提升人员与技能

通过MSA实现敏捷性非常依赖小型的自治团队。此团队应该与业务服务领域对齐,而不是技术领域。此组织结构与敏捷开发中的特性团队或者组件团队类似。关于组织结构,可以参考“DevOps组织如何选取拓扑结构以提升协作效能”。对于人员与技能,建议在以下在以下方面进行提升:

平衡自治与责任

敏捷与DevOps文化相关的原则

面向服务的工程师文化

现代开发范式与概念:例如DDD、事件驱动架构、浮现式架构等;

更广泛的技术技能:例如T-shaped;

拥有质量意识:例如单元测试、测试自动化等;

3 构建技术平台

对于实施MAS的企业来讲,不单单需要敏捷与DevOps流程、良好组织与技能丰富的人员,更需要技术平台来管理日益增加的复杂性。

图 MSA技术平台全景

如上图所示,MSA平台不应被过度简化为容器化,MSA平台包含了外部网关、Service Mesh、遥测与监控、CI/CD自动化等部件。关于MSA平台的选择可以分为2类:一类为云服务提供商平台,一类为部署在自行管理基础设施上的云原生应用平台。对于第一类平台,企业可以选择华为云相关服务,例如DevCloud()提供了端到端DevOps平台能力,可以有效支持CI/CD自动化;ServiceStage提供面向企业的云原生应用管理服务。
4 定义服务

在MSA中,模块化的主要单元是服务本身,主要包括:(1)功能集合与访问功能的接口;(2)实现的边界与部署单元。企业可以应用DDD与限定上下文来划定微服务,并在灵活性、复杂性与性能之间进行权限,使微服务满足以下特征:

松耦合

高内聚

采用公开标准暴露接口

实现单一职能

拥有管理的数据

独立部署

独立伸缩

将发布的API与微服务实现解耦

5 解耦数据

为了提高敏捷度以及服务间的独立性,企业必须对服务的数据进行解耦。数据解耦可以参考以下原则进行:

数据必须被一个也只能被一个微服务管理(创建、更新与删除)

数据只能通过管理此数据的微服务提供的接口访问

严格禁止不同服务拥有的数据之间的数据库强制型关系(例如引用完整性)

需要平衡数据解耦带来复杂性与敏捷性

可以通过API契约进行数据关系建模

对于任何企业,MSA的实施都不能一蹴而就。企业在实施MSA的过程中应该避免教条主义、理想化、低估必需的投资、边学习新流程边变更架构、担忧失败等风险与陷阱。企业可以在MSA实施指导框架的指引下,进一步建立MSA的战略目标、原则、实践、工具平台视图,以更好地指导MSA落地。

图 MSA战略目标-原则-实践-平台工具视图

华为云DevCloud作为一站式云端DevOps平台,集成华为近30年研发实践和前沿理念,面向开发者提供研发工具服务,让软件开发简单高效。现支持5人以下额度范围内,可以免费使用,并且可以预约免费的产品演示和技术交流,详情查看华为云官网

转载于:https://juejin.im/post/5d15cdc85188255d6c21e789

大咖专栏 | DevOps组织如何有效地实施MSA相关推荐

  1. DevOps组织如何有效地实施MSA

    [摘要] 对于任何企业,MSA的实施都不能一蹴而就.企业在实施MSA的过程中应该避免教条主义.理想化.低估必需的投资.边学习新流程边变更架构.担忧失败等风险与陷阱.企业可以在MSA实施指导框架的指引下 ...

  2. 【大咖专栏】Ceph高性能存储:Bcache介绍与使用

    新钛云服已为您服务1048天 大咖专栏 什么是Bcache? HDD一般具有较大的容量,并且可以实现良好的顺序读和写操作,但是在随机写和读时非常慢,因此它们的IOPS级别较低:SSD具有非常好的整体性 ...

  3. 【大咖专栏】在Kubernetes中手动恢复Rook存储集群

    新钛云服已为您服务1205天 大咖专栏 | 祝祥 Rook介绍 Rook将文件.数据块和对象存储系统引入到Kubernetes集群,与其他正在使用存储的应用程序和服务一起无缝运行. 通过这种方式,云原 ...

  4. 大咖专栏|拨云见月,专注于深度学习本身

    https://www.toutiao.com/a6709741168336306696/ 文/李三平 作为人工智能大爆炸的核心驱动,深度学习给机器学习领域带来了前所未有的巨大影响.面对火山喷发般的数 ...

  5. 【大咖专栏】如何配置CEPH RGW对象存储与公有云同步

    新钛云服已为您服务1280天 容灾 (Disaster Recovery),即容灾备份或灾备,是业务连续性系统的一个子集,用于保障 IT 系统在遭受自然灾害.人为操作失误或蓄意破坏后的数据还原和业务恢 ...

  6. 大咖专栏 | 我在DevCloud做需求

    笔者在华为云DevCloud工作,秉承吃狗粮的文化,DevCloud团队在践行精益敏捷DevOps的同时,也在使用DevCloud工具进行实践落地. 而我希望讲述老百姓自己的故事,说说DevCloud ...

  7. 2018第四届中国互联网安全领袖峰会8月零距离对话全球大咖!

    从"安全新生态"理念的首次提出,到"BAT同台话安全"的格局形成; 从13家国内安全上市公司掌门人圆桌达成"网络安全产业中坚共识",到500 ...

  8. 大咖说·图书分享|精益产品开发:原则、方法与实施

    本期大咖说,前阿里巴巴资深技术专家何勉携作品<精益产品开发:原则.方法与实施>展开分享. ​嘉宾介绍 何勉:前阿里巴巴资深技术专家,国内早期精益产品开发实践者之一,畅销书<精益产品开 ...

  9. 一直在路上 | 多位顶尖技术大咖入驻腾讯云最具价值专家

    腾讯云最具价值专家,简称 TVP(Tencent Cloud Valuable Professional),是腾讯云颁发给第三方技术专家们的一项荣誉认证,以此感谢他们为推动云计算技术的发展所作出的贡献 ...

最新文章

  1. iframe几种常用代码片段
  2. 2020 年度最佳的23个机器学习项目!(附源代码)
  3. php txtsql 说明,PHP学习笔记(2)txtSQL文档错误
  4. 30岁软件测试转产品_SENSORO 产品总监回特入选 2019 年福布斯中国 30 岁以下精英榜...
  5. ubuntun 16.04 protobuf安装过程
  6. java swing界面工具_Java GUI swing 工具包使用总结
  7. ffmpeg和opencv 播放视频文件和显示器
  8. Linux之Keepalived实现服务器集群高可用
  9. python 递归拷贝整个文件夹
  10. python select實現非阻塞socket
  11. js模拟点击事件实现代码
  12. 【经典算法实现 16】阿克曼函数(非递归实现 代码优化)
  13. JavaScript 原生Ajax
  14. codeblock配置opengl
  15. libtorrent java_关于libtorrent库的安装
  16. 长期在计算机房工作辐射大吗,在机房里工作辐射大吗
  17. JavaWeb-16 (E家园项目案例1)
  18. dw1000 PA和LNA控制
  19. Shopee末端物流智能提效之路
  20. 2022-09-15 mysql列存储引擎-语法树转换

热门文章

  1. 初学者应该怎么学习前端?web前端的学习路线大剖析
  2. 零基础小白前端学习之初始CSS
  3. 大学生转行IT,零基础非计算机专业可以学会吗?
  4. 超过32位java_在java中存储和使用超过32位的数字!
  5. c linux time微秒_Linux基础知识(Linux系统、Linux中的链表)
  6. python运行游戏是否需要pygame_用Python和Pygame写游戏-从入门到放弃(1)
  7. php控制器增删改查设计,控制器的增删改查操作
  8. 云主机挂载硬盘 - 开机自动挂载
  9. SpringBoot前端Ajax以JSON格式获取后台数据
  10. resnet,inception,densenet,senet