什么企业真的需要微服务?什么企业具备微服务改造条件?
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”
*本公众号所发布内容仅代表作者观点,不代表社区立场