根据软件系统在运行期的表现风格和部署结构,我们可以粗略地将其划分为两大类。
(1)整个系统的所有功能单元,整体部署到同一个进程(所有代码可以打包成 1 个或多个文件),我们可以称之为 “单体架构”(Monolithic Architecture);
(2)整个系统的功能单元分散到不同的进程,然后由多个进程共同提供不同的业务能力,我们称之为 “分布式架构”(Distributed Architecture)。
再结合软件系统在整个生命周期的特点,我们可以进一步区分不同的架构风格。
对于单体架构,我们根据设计期和开发实现期的不同模式和划分结构,可以分为:
简单单体模式:代码层面没有拆分,所有的业务逻辑都在一个项目(Project)里打包成一个二进制的编译后文件,通过这个文件进行部署,并提供业务能力;
MVC 模式:系统内每个模块的功能组件按照不同的职责划分为模型(Model)、视图(View)、控制器(Controller)等角色,并以此来组织研发实现工作;
前后端分离模式:将前后端代码耦合的设计改为前端逻辑和后端逻辑独立编写实现的处理模式;
组件模式:系统的每一个模块拆分为一个子项目(SubProject),每个模块独立编译打包成一个组件,然后所有需要的组件一起再部署到同一个容器里;
类库模式:A 系统需要复用 B 系统的某些功能,这时可以直接把 B 系统的某些组件作为依赖库,打包到 A 系统来使用。
对于分布式架构,我们根据设计期的架构思想和运行期的不同结构,可以分为:
面向服务架构(Service Oriented Architecture):以业务服务的角度和服务总线的方式(一般是 WebService 与 ESB)考虑系统架构和企业 IT 治理;
分布式服务架构(Distributed Service Architecture):基于去中心化的分布式服务框架与技术,考虑系统架构和服务治理;
微服务架构(MicroServices Architecture):微服务架构可以看做是面向服务架构和分布式服务架构的拓展,使用更细粒度的服务(所以叫微服务)和一组设计准则来考虑大规模的复杂系统架构设计。
也有人把如上的各个架构风格总结为四个大的架构发展阶段:
(1)单体架构阶段
(2)垂直架构阶段
(3)SOA 架构阶段
(4)微服务架构阶段