查看原文
其他

什么企业真的需要微服务?什么企业具备微服务改造条件?

twt社区 twt企业IT社区 2022-07-03
微服务的出现是一把"利剑",它将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,形成分布式调用。架构合理、服务拆分合理的微服务系统能帮助技术团队更高效工作,同时系统的稳定性和可扩展性都能极大提高。但企业如何判断自己是否适合微服务呢?如果进行微服务改造,又有哪些需要注意的难点?以下内容整理自社区相关问答,供同行参考。


1、如何判断企业是否已经具备微服务改造条件

【问题描述】微服务改造是一个复杂问题,特别是中小企业,涉及到人力、分工、技术等多方面,如何判断企业是否已经具备微服务改造条件。

@尘世随缘  上海某互联网金融公司技术总监:

从几个层面来看企业是否具备微服务的条件

1、目前技术团队是否存在瓶颈,比如性能、工作效率等?

2、公司的高层是否有计划或者打算来推动微服务改造?

3、目前的技术团队是否有人能带领团队做微服务的改造?

4、团队成员的技术水平、运维水平如何?

上面的几个问题理清楚之后,再来看是否真的有必须要微服务?如果需要微服务,那么再评估下整体改造的周期和成本有多少?

@gavin_zhang 某股份制银行 系统架构师:

最重要的前提是领导和业务部门的支持,其他的能力可以在微服务改造是一起进行,技术能力包括:

1 自动化基础设施的能力,包括当不限于虚拟化/容器的调度编排,自动化发布系统

2 DevOps流水线或CICD能力

3 项目的敏捷流程

@zhisong  研究学者:

有个基础设施“底座”——私有云或者混合云;

有个面向业务改造的数据中台,最好已经进行了有效的数据治理;

有一支DevOps队伍;

有支撑改造的IT机制;

个人浅见,仅供参考


2、企业如何判断微服务是否当前最佳的选择?

@尘世随缘  上海某互联网金融公司技术总监:

一、首先看下,目前是开发过程中否存在这些痛

1、代码冲突加剧

多个人或者一个团队一起维护一个模块,共同开发。当提交代码的时候发现大量冲突,每次提测或者发版的时候需要花大量的时间来解决冲突。随着团队规模的增大以及项目复杂程度增加,代码冲突的现象越严重;

2、模块耦合严重

模块之间通过接口或者DB相互依赖,耦合越来越严重。而且不同的人,写代码的风格不一样,代码质量也不一样,上线前需要协调多个团队,任何小模块的异常都会导致整个项目发布失败;

3、项目质量下降

由于所有的代码都是在一个服务里面,做一次改动,可能会牵一发而动全身,代码冲突以及耦合严重,导致测试覆盖范围不充分,经常会出现没有更改的模块在线上突然出现问题,查询后发现是由于工程师不小心做了某种改动,但是测试用例并没有覆盖;

4、团队效率下降

由于大量时间在处理代码冲突,消耗了研发人员大量的时间;而测试人员为了提高项目质量,不得不在每次发版之前做全方位的回归测试,本身一次小的迭代结果项目时间却很长;

如果没有痛,那么就没有必要使用微服务。


3、如何根据应用选择合适的微服务化方案?

@尘世随缘 上海某互联网金融公司技术总监:

1、首先确认是否真的需要使用微服务方案

2、微服务框架Spring Cloud 或者 Dubbo 任选一套都可以

3、根据业务范围来拆分服务

建议可以小范围的先了解起来。


4、老旧系统的微服务化的改造路线是怎样的?可能遭遇的挑战有那些?

@liufengyi  某互联网银行 软件架构设计师:

1. 可以采用演进的方法改造老旧应用,先拆分相对独立的部分,变化很频繁的部分。

2. 可以采用绞杀的方式来改造老旧应用,采用新技术开发接口,与老旧应用共存,逐步替换

挑战的话:数据一致性的问题,服务运维的问题,与原有基础设施融合改造的问题,共存期变更的问题,分布式日志,配置管理等


5、面对企业众多应用,如何统一微服务化方案,尽可能避免异构并存的微服务化方案带来的困扰?

@lyc19820  软件开发工程师:

首先来说我们在做微服务化之前就要做好相应的调研和咨询,选择最适合自己的微服务架构方案。目前主流的的微服务架构有 SpringCloud/Dubbo/gRPC/Istio,都有针对的使用场景和适用于的开发语言。建议前期做好规划;

第二、如果用户已经存在了多个异构的微服务框架,就可以选在能够兼容基于SpringCloud/Dubbo/gRPC/Istio的微服务框架的产品,借助第三方产品的能力来快速部署或迁移微服务应用。


6、微服务的架构,是否一定要使用私有云或者容器来部署?

@尘世随缘 上海某互联网金融公司技术总监:

容器和微服务是紧密集合在一起的,因为微服务会将单体应用拆分成很多小的应用,因而运维和持续集成会工作量变大,而容器技术能很好的解决这个问题 ,使得服务可以切割得更小,成为支撑微服务很好的平台。所以建议使用容器方式来部署,但是是否私有化这个没有必然要求,如果监管有明确要求,那就私有化。否则建议上云。


7、对于多个IDC站点,如何部署微服务合理,如何保持业务数据同步一致性?

@尘世随缘 上海某互联网金融公司技术总监:

1、首先微服务之间的通讯基本上都是基于内网的,所以基于这个前提条件,如果是多地部署,则需要每个IDC完全部署一套一样的服务。可以达到某个IDC故障后随时可切换。

2、多IDC部署,也需要遵循主备原则,因为数据需要从主同步到备。

3、当主出现异常后,在启动备的同时,数据流向也改变了。

总之,多IDC方案目前来说还是比较麻烦的,需要消耗大量的人力和物力。


8、容器云+微服务架构如何解决安全、网络和监控的问题?

【问题描述】使用容器云+微服务架构时,传统基于IP的安全、网络和监控机制已无法有效运行,容器云上如何解决这些问题?

@尘世随缘 上海某互联网金融公司技术总监:

微服务的安全认证和传统的基于IP的认证有很大的区别。传统的基于IP的认证很简单,设置一些IP规则来判断该IP是否有权限访问系统。但是服务的认证可以从2个层面来看,第一层对外(入口拦截,基于IP黑白名单),第二层对内,如果个别服务是敏感服务,那么需要定制开发,增加授权服务,接口访问的时候需要去验该接口是否允许被访问,同时详细记录访问日志。

如有任何问题,可点击文末阅读原文,到社区提问
觉得本文有用,请转发或点击“在看”,让更多同行看到


 资料/文章推荐:


欢迎关注社区 “微服务”技术主题 ,将会不断更新优质资料、文章。地址:http://www.talkwithtrend.com/Topic/95163


下载 twt 社区客户端 APP

与更多同行在一起

高手随时解答你的疑难问题

轻松订阅各领域技术主题

浏览下载最新文章资料


长按识别二维码即可下载

或到应用商店搜索“twt”


长按二维码关注公众号

*本公众号所发布内容仅代表作者观点,不代表社区立场

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存