微服务架构谈系列(1):切忌匆忙服务化(上)

简介: 微服务架构谈系列(1):切忌匆忙服务化(上)

知其然,知其所以然。

微服务大行其道之时,不少有识之士大声疾呼“致传统企业朋友:不够痛就别微服务,有坑”,“能不能拆分服务就不拆分”,但仍然无法阻挡对于微服务实施的热情和向往。


一则,开源全家桶用了之后,找工作方便一点。

二则,“上面领导”让用的,我们coding发现写代码测试麻烦了,我们无能为力。


本文仅仅探讨一下你选择什么,获得什么,承受什么。如果没有做好评估,则“得无所得”,可能陷入一地鸡毛的泥潭。


为什么要做服务化?


笔者习惯把单体架构和服务化架构作为对照,“微服务” 在微上面容易陷入争议和费解。


一位朋友说他觉得公司很折腾。

“几个开发,微服务数量有30个之多,数据访问DAO层和应用逻辑层也是独立的进程,写代码麻烦”!


克里斯·理查森《微服务架构设计模式》一书中,对于单体架构和微服务做了一个对比,笔者用表格表达如下:


image.png


从表格可以看到,微服务架构并不是代表领先,而是取决于应用的复杂度,越复杂,单体架构铁板一块(同频研发、同频发布)遭遇的挑战越大,而微服务架构越有优势。


image.png



结论:

1、服务化架构(微服务)更适合复杂领域的应用系统。

2、服务化架构(微服务)并不代表业务交付效率更高。

对于这2个结论的细节,后面酌情补充。


业务高速发展的早期形态1:臃肿单体架构


潘志伟老师曾经总结在传统的软件开发中遇到下面的“痛”,标志着应该从单体架构走向服务化架构:

1、代码冲突加剧

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

2、模块耦合严重

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

3、项目质量下降

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

4、团队效率下降

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

业务高速发展的早期形态2:烟囱型架构


image.png


以头哥分享的传统金融的架构演进为例,烟囱型架构并不代表不能支持业务。甚至应对业务的效率不低。比如发展一块新业务,就有一个团队去支持,没有人甩锅,大家all-in。


随着业务规模发展到,人员的增长不能按照线性增长去满足业务的时候,问题就凸显出来。


一般存在几个问题。


1、功能的复用问题,大家都在修改用户服务,能不能一个全功能团队维护,更快一点。当然,我们先假设这样是美好的。

2、人员能力问题,涉及到中间件,大家想用什么用什么,各团队的TL和架构师存在感都很强,但存在搞不定的情况, 如果出故障多了,老板就火大了。

还有其它问题,老王总结为下面几个方面:


image.png

相关文章
|
4月前
|
Cloud Native Serverless API
微服务架构实战指南:从单体应用到云原生的蜕变之路
🌟蒋星熠Jaxonic,代码为舟的星际旅人。深耕微服务架构,擅以DDD拆分服务、构建高可用通信与治理体系。分享从单体到云原生的实战经验,探索技术演进的无限可能。
微服务架构实战指南:从单体应用到云原生的蜕变之路
|
4月前
|
存储 监控 安全
132_API部署:FastAPI与现代安全架构深度解析与LLM服务化最佳实践
在大语言模型(LLM)部署的最后一公里,API接口的设计与安全性直接决定了模型服务的可用性、稳定性与用户信任度。随着2025年LLM应用的爆炸式增长,如何构建高性能、高安全性的REST API成为开发者面临的核心挑战。FastAPI作为Python生态中最受青睐的Web框架之一,凭借其卓越的性能、强大的类型安全支持和完善的文档生成能力,已成为LLM服务化部署的首选方案。
|
弹性计算 API 持续交付
后端服务架构的微服务化转型
本文旨在探讨后端服务从单体架构向微服务架构转型的过程,分析微服务架构的优势和面临的挑战。文章首先介绍单体架构的局限性,然后详细阐述微服务架构的核心概念及其在现代软件开发中的应用。通过对比两种架构,指出微服务化转型的必要性和实施策略。最后,讨论了微服务架构实施过程中可能遇到的问题及解决方案。
|
7月前
|
缓存 Cloud Native Java
Java 面试微服务架构与云原生技术实操内容及核心考点梳理 Java 面试
本内容涵盖Java面试核心技术实操,包括微服务架构(Spring Cloud Alibaba)、响应式编程(WebFlux)、容器化(Docker+K8s)、函数式编程、多级缓存、分库分表、链路追踪(Skywalking)等大厂高频考点,助你系统提升面试能力。
603 0
|
Java 开发者 微服务
从单体到微服务:如何借助 Spring Cloud 实现架构转型
**Spring Cloud** 是一套基于 Spring 框架的**微服务架构解决方案**,它提供了一系列的工具和组件,帮助开发者快速构建分布式系统,尤其是微服务架构。
1510 69
从单体到微服务:如何借助 Spring Cloud 实现架构转型
|
10月前
|
Cloud Native Serverless 流计算
云原生时代的应用架构演进:从微服务到 Serverless 的阿里云实践
云原生技术正重塑企业数字化转型路径。阿里云作为亚太领先云服务商,提供完整云原生产品矩阵:容器服务ACK优化启动速度与镜像分发效率;MSE微服务引擎保障高可用性;ASM服务网格降低资源消耗;函数计算FC突破冷启动瓶颈;SAE重新定义PaaS边界;PolarDB数据库实现存储计算分离;DataWorks简化数据湖构建;Flink实时计算助力风控系统。这些技术已在多行业落地,推动效率提升与商业模式创新,助力企业在数字化浪潮中占据先机。
543 12
|
运维 监控 持续交付
微服务架构解析:跨越传统架构的技术革命
微服务架构(Microservices Architecture)是一种软件架构风格,它将一个大型的单体应用拆分为多个小而独立的服务,每个服务都可以独立开发、部署和扩展。
3497 36
微服务架构解析:跨越传统架构的技术革命
|
传感器 监控 安全
智慧工地云平台的技术架构解析:微服务+Spring Cloud如何支撑海量数据?
慧工地解决方案依托AI、物联网和BIM技术,实现对施工现场的全方位、立体化管理。通过规范施工、减少安全隐患、节省人力、降低运营成本,提升工地管理的安全性、效率和精益度。该方案适用于大型建筑、基础设施、房地产开发等场景,具备微服务架构、大数据与AI分析、物联网设备联网、多端协同等创新点,推动建筑行业向数字化、智能化转型。未来将融合5G、区块链等技术,助力智慧城市建设。
621 1
|
人工智能 安全 Java
微服务引擎 MSE:打造通用的企业级微服务架构
微服务引擎MSE致力于打造通用的企业级微服务架构,涵盖四大核心内容:微服务技术趋势与挑战、MSE应对方案、拥抱开源及最佳实践。MSE通过流量入口、内部流量管理、服务治理等模块,提供高可用、跨语言支持和性能优化。此外,MSE坚持开放,推动云原生与AI融合,助力企业实现无缝迁移和高效运维。
614 1