时至今日,微服务架构在企业项目开发中,已成为主流,似乎从大公司到几人的团队,都在使用微服务开发。但现实中,中小公司或小团队,虽然在使用微服务架构,甚至开发了一两年的软件项目,依旧有团队成员,对微服务一知半解,更离谱的是,连开发团队的主要成员或leader,也不知道微服务的真实模样,完全靠自己的想法,搞一套牛头不对马嘴的架构,开发公司的主要或核心项目。而在开发过程中,遇到的各种问题得不到及时解决,最后搞成了一个表面分模块实质为单体应用的服务。
基于我的经历和见到的真实情况,大概汇总下中小公司或小团队,在使用微服务架构中存在比较严重的问题:
项目分了一二十个子服务,却只有一个数据库,包括注册配置等全部在同一库中;
跨服务调用,不做任何的数据冗余,不做缓存,实时读库;
不考虑实际服务体量,过度的微服务细分,一个文件上传都能分一个独立的微服务;
细分的众多微服务模块,每个服务在注册中心的配置重复并繁多混杂,项目部署上线极度困难耗时;
微服务项目中的pom依赖,不做全局管理,不进行按模块按需使用,混乱依赖导致每个服务部署包小则一两百MB,大则五六百MB,一个最简单的文件上传服务包也不例外;
复杂混乱的微服务调用和循环调用(A调B,B调A),导致服务部署,
项目交付困难;
网关Gateway里写接口业务代码,认证Auth服务除处理登录使用外,其余时间在空挂;
无系统架构标准及编码规范,开发人员各显身手;
数据库核心业务表主键设计为自增,不考虑全局唯一;
服务部署,不考虑自动化脚本,使用传统“人工智能”,服务不做监控预警及自愈,服务不可用等问题得靠客户帮忙发现。
以上只是一个简单的汇总,现实中还有更多,大家看看,你们的项目有没中招那一条呢?
为什么会出现这些问题,以我之见,在这里分析下原因:
1,高层或老板不切实际的愿景及过度干涉
好多中小公司的高层或老板,都有大跃进和"超英赶美"的思想,总喜欢为公司和产品的未来画一个大大的饼,不考虑企业自身情况和团队势力,搞既要也要,既满足还要未来,甚至一些公司高层直接参与产品和技术决策,出现外行领导内行的情况,导致下面的人只能奋力应对,毫无思考,完全不考虑团队及自身情况,找个开源的微服务框架,就开始硬编码堆功能,应付来自上层的需求,最终项目各种问题,烂尾或无法交付,上层或老板各种发泄撒气,但最终还是企业承受了一切。
2,经验不足或无脑的技术负责人
IT项目中,使用的架构及技术选型,原则上最终决定权在技术负责人手里。但现实中,很多技术负责人由于经验不足、或不考虑后果的“绝对”服从,做出很多不切实际的决定。如果高层指定技术,技术负责人不进行分析评估,直接上手使用(当然也有分析评估完,向上层汇报,上层执意要求使用的情况)。这导致在架构和新技术使用过程中,出现的技术问题,自己和团队无力应对,最终任由开发人员各显其能去应付差事。
3,研发团队对新技术的盲目跟风
很多研发团队,看到市面上在流行微服务开发、流行什么什么新技术,听别人说有多好多好,就想去跟风。但现实中自己却一无所知,团队就开始引进,在公司主要或核心项目中使用,以传统单体应用开发的思维,干着抗“十万、百万”并发的微服务。结果到最后,发现根本不是别人嘴里那么好,却留下一堆解决不了的问题,为应对交付工期压力,就用各种非正常手段应付上线交付。当然,这也是技术负责人的问题。
总之,技术的使用,一定要优先进行评估分析,基于公司及团队的实际情况等做出决定,然后进行合理选择。其次,老板应该基于市场及公司实际情况,做合理的战略规划。各个负责人应基于战略做好相应符合实际的战术应对,基层员工执行战术落地。尽力避免“一言堂、外行指导内行、搞绝对服从”的情况,应遵循凡是可商量,争议需讨论,实现企业共同治理。
那么,企业到底该不该使用微服务开发项目呢?这里我阐述下我的想法及观点。
1,系统服务没什么体量,慎重选择
如果公司的服务体量比较小,中短期内没大的业务量增长,那建议还是谨慎使用微服务开发。毕竟微服务比传统项目开发,增加了不少的成本。从人力、开发周期及服务器硬件资源、运营维护等。具体使用什么架构,使用什么技术,应基于企业实际情况,进行合理分析、及成本效益评估后,再做选择。
2,没有旗手,别去硬抗大旗
话说“将军无能,累死三军”。没有能抗“大旗”的人,就被轻易使用微服务。要想用,那至少有一个经验较丰富的技术leader,或者招聘至少一名专业架构师去把控。一定不要认为,只要干过开发,有工作经验就能搞定,期待一个无经验的团队抗大旗。那建议老板最好多去庙里烧香,祈求保佑。
3,合理决策,正确选择
技术选择是取决于产品方案,产品方案是受制于战略规划。所以,从战略到产品,要做出合理的决策,更有利于技术的选型。战略应符合企业实际,产品应遵守用户需求和成本效益,技术需保障服务稳定可靠和客户使用。不可盲目跟风,不可盲目决策。
总之,在当前快节奏的社会大环境下,敏捷开发、最小可行产品模式已成为主流,追逐效益是企业永远绕不开的话题。那么,任何企业,都应该有快速适应变化的能力,微服务架构在当前环境下确实给企业带来了方便,但也让很多企业付出了一定的成本和代价。所以,要想不踩坑,快速稳定发展,就需要做出合理的规划、适合的技术应用。不要盲目跟风,不要心存侥幸。只有合理规划、才能保持企业长远发展。
扫码关注公众号,发送关键词获取相关资料:
发“Springboot”领取电商项目实战资料;
发“SpringCloud”领取学习实战资料;