乐于分享
好东西不私藏

企业数字化转型-软件架构的演进历程

企业数字化转型-软件架构的演进历程

点击上方蓝字关注寒渊Hyen
软件架构的演进史,本质上是一部“如何通过不断拆分与解耦,来应对日益增长的业务复杂性”的奋斗史。
此文着重从物理形态逻辑形态两个方面介绍软件架构的演进史。
一、 物理形态的演进:C/S 到 B/S
1. C/S 架构 (Client/Server,客户端/服务器)

核心模式: 需要在用户设备上安装专门的客户端软件。典型的例子如 QQ、大型网游、专业 IDE 或企业内部的 ERP 软件。

  • 逻辑分布: 客户端承担了大量的业务逻辑处理(胖客户端)。

  • 优点: * 交互性极佳: 能够充分利用本地硬件资源(显卡、内存、硬盘)。

    • 响应速度快: 部分逻辑在本地完成,减少了网络交互。

    • 安全性高: 通信协议可以高度自定义。

  • 缺点: * 更新成本高: 每次升级都需要用户下载安装包。

    • 跨平台性差: Windows、Mac、Linux 需要分别开发适配。


2. B/S 架构 (Browser/Server,浏览器/服务器)

核心模式: 客户端就是浏览器(Chrome, Edge等),用户通过 URL 访问。本质上是 C/S 的一种特殊形式(浏览器是通用的客户端)。

  • 逻辑分布: 绝大部分业务逻辑都在服务器端运行(瘦客户端)。

  • 优点:

    • 零安装: 只要有浏览器就能用,即开即用。

    • 维护简单: 开发者只需在服务器更新代码,用户刷新页面即可完成升级。

    • 跨平台: 理论上只要能跑浏览器,就能运行 B/S 应用。

  • 缺点:

    • 交互受限: 受限于浏览器的安全沙箱,对本地硬件(如打印机、传感器)的调用不如 C/S 灵活。

    • 网络依赖: 几乎所有操作都需要服务器响应,断网即瘫痪。


3. C/S vs B/S:多维度对比

特性 C/S (Client/Server) B/S (Browser/Server)
安装部署 需安装专门的客户端 仅需浏览器,免安装
硬件利用 充分利用本地 CPU/GPU 依赖服务器,本地消耗小
兼容性 需开发不同版本 (Win/iOS/Android) 一套代码,多端运行
典型应用 游戏、视频剪辑工具、专业办公软件 电商网站、OA系统、社交网页版
运维成本 高(需处理多版本共存问题) 低(服务器端统一升级)
、 逻辑结构的演进:从单体到微服务
这是架构在内部解耦协作效率上的深度演进。

1. 单体架构 (Monolithic Architecture)

时代背景: 互联网早期,业务逻辑简单。

所有功能模块(如用户、订单、支付)都打包在同一个代码库中,部署在同一个进程里。

  • 优点: 开发简单、部署方便、性能高(内部调用,无网络开销)。

  • 痛点: 随着项目变大,代码修改“牵一发而动全身”,编译慢,扩展性差(无法针对特定模块扩容)。


2. 垂直架构 (Vertical Architecture)

时代背景: 流量增加,单体应用不堪重负。

为了解决单体应用的扩展问题,人们开始将大应用拆分为几个互不相干的小应用。例如,将“电商网站”拆分为“官网”和“后台管理系统”。

  • 核心逻辑: 物理上的切分,各跑各的。

  • 痛点: 重复造轮子。不同系统之间可能都有类似的用户管理逻辑,代码无法复用。


3. SOA 架构 (Service-Oriented Architecture)

时代背景: 企业级应用增多,需要整合多个异构系统。

引入了ESB(企业服务总线)的概念。它像一个翻译官,让不同语言、不同平台的系统能够通过总线进行通信。

  • 核心特征: 强调服务的重用和标准化接口。

  • 痛点: ESB 太重了,往往成为系统的性能瓶颈,且配置极其复杂。


4. 微服务架构 (Microservices Architecture)

时代背景: 云计算兴起,追求极致的敏捷开发和快速交付。

微服务是 SOA 的“瘦身版”和“去中心化版”。它主张将应用拆分为一系列细小的服务,每个服务运行在自己的进程中,通过轻量级协议(如 HTTP/REST)通信。

  • 核心特征:

    • 独立性: 每个服务有独立的数据库,可以独立部署。

    • 去中心化: 不再依赖笨重的总线,而是使用注册中心(如 Eureka, Consul)。

  • 痛点: 系统复杂度爆炸。分布式事务、链路追踪、服务容错(熔断/降级)成了架构师的新头发杀手。


5. 服务网格与 Serverless (Service Mesh & Serverless)

时代背景: 云原生(Cloud Native)时代。

  • 服务网格 (Service Mesh): 代表技术是 Istio。它将网络通信(发现、负载均衡、加密)从业务代码中剥离出来,交给“边车”(Sidecar)处理,实现业务逻辑与基础设施的解耦。

  • Serverless (无服务器): 代表技术是 AWS Lambda。开发者只需编写函数逻辑,完全不用关心服务器和运维,按调用次数付钱。


总结对比

维度 单体架构 微服务架构 Serverless
耦合度 极高 低(解耦) 极低(函数级)
部署难度 简单 复杂(需自动化工具) 极简(只管代码)
可维护性 后期极难 较好 极好
代表技术 Spring, Django Spring Cloud, K8s AWS Lambda, Knativ
一、
 物理形态的演进:C/S 到 B/S
一、 物理形态的演进:C/S 到 B/