微服务之六脉神剑 | (贰)为什么谈论微服务时,总是会谈起DevOps?
Posted IT发烧友
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了微服务之六脉神剑 | (贰)为什么谈论微服务时,总是会谈起DevOps?相关的知识,希望对你有一定的参考价值。
0. 导入
上一章我们讲到,单体架构与微服务的特征比较。从架构本身的特征进行比较,微服务架构与单体架构的区别,本质是“集中式和分布式”的区别,是系统各部件间耦合的强度大小不同。
单体架构和微服务架构的特征比较
通过对比,我们可以发现微服务有很多好处,这些优势是因为其“细粒度独立服务”的特征,而也正是因为这个特征,导致了若干潜在风险、额外的管理成本和代价(Premium)。
所以本期我们将从微服务的风险角度来为大家解答下述问题:
微服务改造的潜在风险和困难有哪些?
什么样的项目适合微服务?
网管支撑系统是否有开展微服务改造的驱动力?
微服务的改造需要什么准备和前提条件?
1.微服务架构的潜在风险
和单体架构的“一个、大的、紧耦合、集中的war包 ”相比,微服务架构是“大量的、小的、独立、分布式的war/jar”,这些特性使得微服务架构在应对复杂系统时具有优势,但也正因为这些特征,同时带来潜在的困难、风险和成本。
我们先来看看微服务有哪些风险:
服务边界可能需要动态调整
•如何把握服务拆分粒度、实现高内聚松耦合;
•微服务拆分需要不断分裂,需要动态调整服务边界;
服务部署工作量大
•大量的服务、不同的版本需要部署和配置,工作量大、容易出错,需要高度的自动化;
服务之间的调用复杂
•服务/进程间的通讯机制出现网络中断、速度过慢、不可用等局部失效问题,相对处理更复杂;
服务的管理、监控和运维
•大量的服务,需要自动化的服务注册、服务发现机制;
•一个应用场景可能会涉及多个服务形成调用链,故障溯源定位困难;
•服务的状态、性能监控,故障自愈和弹性伸缩;
分布式一致性增加开发难度
•分布式服务的状态一致性;
•分布式数据的一致性,需要更新不同服务所使用的不同数据库。
2.架构模式选择主要看复杂度
通过上述分析,可以看到单体架构和微服务架构各有优势、不足或风险,大家可能疑惑了:
单体架构和微服务架构之间,到底应该如何选择?是否需要将单体应用拆分并演进到微服务架构?
我们先来看看Martin Fowler 的解读
(该图引自Martin Fowler文章https://martinfowler.com/bliki/MicroservicePremium.html)
1、如果系统是较轻量级简单应用,或此时单体应用问题不突出,建议一开始可以采取单体架构。改造成微服务的相对收益小,投入成本相对较高;
2、如果系统是复杂应用,或此时单体应用问题突出,建议采取微服务架构。此时获得的相对收益较大,值得投入必要成本。
接下来,我们以OSS网管支撑系统为例说明如何开展微服务架构改造。
3.网管支撑系统微服务改造的驱动力
对于OSS网管支撑系统,基于传统架构的修修补补已经遭遇天花板,需要在支撑业务的同时,同步开展新技术新架构的迭代演进,主要体现在五个方面。
1.加速开发效率,支撑DevOps转型落地
以微服务为单元建立并发的DevOps生产线,快速迭代开发,避免局部对整体的影响,微服务是CI/CD、自动化测试等前提。
2.能力开放共享,支持业务自研创新
地市网管侧IT系统平行采购/二级集采、地市网管侧IT系统整合优化,省市运维工具自研创新,都要求将省平台能力以微服务形式开放共享,避免重复建设,降低自研门槛。
3.对外部门开放的要求
数字家庭产品长流程优化方案,要求网络侧实现配置、激活、管线查询等原子能力微服务化,建设“网管支撑能力网关”,支持PBOSS端到端开通流程。
4.支撑应用的移动化
随着一体两翼业务的深入,业务流程末梢往往需要现场处理,OSS应用的移动化趋势明显,应用都在向掌上运维平台迁移(mobile APP)。迫切需要后端系统开放服务,支持前端移动应用的快速开发。
5.提升资源利用率,增强系统可运维能力
整个单体应用的双平面部署,并不能针对局部模块针对性优化,资源消耗大。微服务架构更有利于实现全面的高可用、日志监控、弹性伸缩等,提升系统质量。
4.微服务改造的前提条件
根据微服务架构的潜在风险分析,如要实施微服务改造,关键是要针对性的做好几个方面的准备和配套前提,特别是DevOps生产线的支持,一方面是因为大量服务的集成、部署,工作量非常大、容易出错,需要全程端到端的自动化流水线支撑;另一方面,通过自动化流水线,可以并行独立的针对每个服务进行CI/CD,只有这样才能将微服务松耦合的价值发挥出来。
1.微服务拆分和演进的方法体系
从哪里切入开始?
如何分阶段、分步骤实施?
微服务的边界和颗粒度?
领域驱动设计原则;
……
2.DevOps生产线体系
开发、测试、部署的端到端自动化;
支持持续集成、持续部署、持续交付;
……
3.微服务治理的框架
微服务的注册发现;
服务调用链追踪;
监控、运维调整;
微服务部署的容器化平台;
安全、鉴权、负载均衡;
……
4.分布式服务一致性解决方案
服务的无状态化改造;
分布式数据的一致性;
……
好啦,今天的介绍就到这里啦。在后续系列中,我们将继续围绕这些前提条件进行深入展开,欢迎各位同学在留言区留言,大家共同探讨。
嘉宾介绍
本期嘉宾 | 段新 中国移动广东公司OSS架构组组长,集团公司OSS架构规划的主要参与者,江湖人称段老师、老段、段公子。具备丰富的运营商OSS大型系统建设、架构规划、技术架构转型改造经验。其在OSS架构管控方面的成果被国际标准组织认可,受邀TM Forum交流分享。
你可能还喜欢
以上是关于微服务之六脉神剑 | (贰)为什么谈论微服务时,总是会谈起DevOps?的主要内容,如果未能解决你的问题,请参考以下文章