微服务之六脉神剑 | (贰)为什么谈论微服务时,总是会谈起DevOps?

Posted IT发烧友

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了微服务之六脉神剑 | (贰)为什么谈论微服务时,总是会谈起DevOps?相关的知识,希望对你有一定的参考价值。

  0. 导入  

上一章我们讲到,单体架构与微服务的特征比较。从架构本身的特征进行比较,微服务架构与单体架构的区别,本质是“集中式和分布式”的区别,是系统各部件间耦合的强度大小不同。

微服务之六脉神剑 | (贰)为什么谈论微服务时,总是会谈起DevOps?

单体架构和微服务架构的特征比较

通过对比,我们可以发现微服务有很多好处,这些优势是因为其“细粒度独立服务”的特征,而也正是因为这个特征,导致了若干潜在风险、额外的管理成本和代价(Premium)。

 

所以本期我们将从微服务的风险角度来为大家解答下述问题:

微服务改造的潜在风险和困难有哪些?

什么样的项目适合微服务?

网管支撑系统是否有开展微服务改造的驱动力?

微服务的改造需要什么准备和前提条件?

  1.微服务架构的潜在风险  

和单体架构的“一个、大的、紧耦合、集中的war包 ”相比,微服务架构是“大量的、小的、独立、分布式的war/jar”,这些特性使得微服务架构在应对复杂系统时具有优势,但也正因为这些特征,同时带来潜在的困难、风险和成本。


我们先来看看微服务有哪些风险:

  1. 服务边界可能需要动态调整

    •如何把握服务拆分粒度、实现高内聚松耦合;

    微服务拆分需要不断分裂,需要动态调整服务边界;

  2. 服务部署工作量大

    •大量的服务、不同的版本需要部署和配置,工作量大、容易出错,需要高度的自动化;

  3. 服务之间的调用复杂

    •服务/进程间的通讯机制出现网络中断、速度过慢、不可用等局部失效问题,相对处理更复杂;

  4.  服务的管理、监控和运维

    •大量的服务,需要自动化的服务注册、服务发现机制;

    •一个应用场景可能会涉及多个服务形成调用链,故障溯源定位困难;

    •服务的状态、性能监控,故障自愈和弹性伸缩;

  5. 分布式一致性增加开发难度

    •分布式服务的状态一致性;

    •分布式数据的一致性,需要更新不同服务所使用的不同数据库。

  2.架构模式选择主要看复杂度  


通过上述分析,可以看到单体架构和微服务架构各有优势、不足或风险,大家可能疑惑了: 

单体架构和微服务架构之间,到底应该如何选择?是否需要将单体应用拆分并演进到微服务架构?


我们先来看看Martin Fowler 的解读

微服务之六脉神剑 | (贰)为什么谈论微服务时,总是会谈起DevOps?

(该图引自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.分布式服务一致性解决方案

服务的无状态化改造;

分布式数据的一致性;

……


好啦,今天的介绍就到这里啦。在后续系列中,我们将继续围绕这些前提条件进行深入展开,欢迎各位同学在留言区留言,大家共同探讨。


微服务之六脉神剑 | (贰)为什么谈论微服务时,总是会谈起DevOps?

嘉宾介绍

微服务之六脉神剑 | (贰)为什么谈论微服务时,总是会谈起DevOps?
微服务之六脉神剑 | (贰)为什么谈论微服务时,总是会谈起DevOps?
微服务之六脉神剑 | (贰)为什么谈论微服务时,总是会谈起DevOps?

本期嘉宾  |  段新   中国移动广东公司OSS架构组组长,集团公司OSS架构规划的主要参与者,江湖人称段老师、老段、段公子。具备丰富的运营商OSS大型系统建设、架构规划、技术架构转型改造经验。其在OSS架构管控方面的成果被国际标准组织认可,受邀TM Forum交流分享。

你可能还喜欢

以上是关于微服务之六脉神剑 | (贰)为什么谈论微服务时,总是会谈起DevOps?的主要内容,如果未能解决你的问题,请参考以下文章

建设数据仓库之六脉神剑

五脉神剑-打通微服务API网关组件

六脉神剑第二式-读写分离之双箭齐发

​观察六脉神剑第二式-读写分离之双箭齐发

CTO 之“六脉神剑”

Dubbo学习系列之六(微服务架构实战)