前后端分离项目架构java单体架构,SOA架构,云原生架构
前后端分离项目架构java单体架构,SOA架构,云原生架构
软件架构演进概述
软件的架构按照不同的分类标准,可以有很多不同的说法,我在这里只取网上大多数的观点来讲解软件架构演进。软件架构的发展经历了从单体结构、垂直架构、SOA架构到微服务架构的过程。
单体架构
单体应用架构示意图
单体架构示例图
单体架构优缺点
优点
项目架构简单,前期开发成本低,周期短,小型项目的首选。
缺点
1、代码复杂度高
整个项目包含的模块非常多,模块的边界模糊,依赖关系不清晰,代码质量参差不齐,整个项目非常复杂。每次修改代码都心惊胆战,甚至添加一个简单的功能,或者修改一个BUG都会造成隐含的缺陷。
2、代码重复率高
一些业务层的公共功能被多个模块重复开发,导致研发成本上升,代码质量不断下降,架构腐化,为后续系统的运维和新功能的开发带来巨大的挑战。
3、技术债务和学习成本高
随着时间推移、需求变更和人员更迭,会逐渐形成应用程序的技术债务,并且越积越多。已使用的系统设计或代码难以修改,因为应用程序的其他模块可能会以意料之外的方式使用到了它。
4、需求变更困难
由于长流程无法有效拆分,代码重复率较高,代码之间的耦合度较高,导致每一次需求的变更就会影响一大片,需要做大量的回归测试来保证质量,需求的较复周期被拉长。
5、项目部署速度变慢
随着代码的增加,构建和部署的时间也会增加。而在单体应用中,每次功能的变更或缺陷的修复都会导致我们需要重新部署整个应用。全量部署的方式耗时长、影响范围大、风险高,这使得单体应用项目上线部署的频率较低,从而又导致两次发布之间会有大量功能变更和缺陷修复,出错概率较高。
6、应用扩展能力受限,无法按需伸缩
单体应用只能作为一个整体进行扩展,无法结合业务模块的特点进行伸缩。
7、阻碍技术创新
单体应用往往使用统一的技术平台或方案解决所有问题,团队的每个成员都必须使用相同的开发语言和架构,想要引入新的框架或技术平台非常困难。
未完待续……