架构演进路径

架构没有最好的,只有最合适的。每一代架构的出现,都不是为了取代上一代,而是为了解决上一代在特定场景下的痛点。

理解架构演进的逻辑,比记住每个架构的特性更重要。

为什么需要理解架构演进

很多人学架构,学的是「是什么」——微服务是什么、Kubernetes 是什么、服务网格是什么。但更重要的是理解「为什么」——为什么需要微服务?为什么 Kubernetes 能解决微服务的运维问题?为什么服务网格出现了?

不知道「为什么」,就不知道什么时候该用、什么时候不该用。盲目追新,往往比用老技术更危险。

演进不是替换,是叠加

架构演进不是一代彻底替代上一代。每一代架构都会在它最适合的场景里继续存在。

单体架构:简单应用、小团队、创业初期
SOA:企业级应用、跨系统集成
微服务:大规模互联网应用、持续交付
服务网格:超大规模微服务、需要精细流量治理
Serverless:事件驱动、弹性伸缩、极致成本优化

理解这一点,就不会在 CTO 说「我们要上微服务」的时候,冲动地把团队仅有 5 个人、代码量 2 万行的小系统拆成 20 个微服务。

五个演进阶段

本节按时间线展开五个架构阶段:

核心判断标准

判断一个系统是否需要架构演进,有三个核心问题:

第一个问题:当前的瓶颈是什么?

架构演进的动力不是「我想用新技术」,而是「老技术解决不了当前的瓶颈」。瓶颈可能是开发效率(代码冲突多、发布周期长)、扩展性(单点数据库扛不住)、或者运维复杂度(故障定位困难)。

第二个问题:团队准备好了吗?

微服务需要 DevOps 能力、服务治理能力、分布式追踪能力。团队如果没有这些能力,贸然上微服务只会把问题从代码层转移到运维层。

第三个问题:收益是否大于成本?

架构演进是有成本的——基础设施改造成本、团队学习成本、业务风险成本。如果演进成本超过收益,就不应该演进。

架构演进的节奏

架构演进应该渐进式推进,而不是大跃进。每一次演进都应该有明确的业务价值和可衡量的收益。没有目标、没有衡量的架构演进,是技术债务的另一来源。