什么是单体架构?
所谓单体,简单理解就是一个程序里包含了一个系统/产品的所有业务功能,比如一个ERP系统,就包含了商品模块、订单模块、采购模块、销售模块、库存模块、报表模块等等,这个程序在部署时就是一个进程,比如把war包部署到tomcat中。
单体架构的优点
- 应用的开发很简单 :只需要构建一个单独的应用程序。
- 易于对应用程序进行大规模的更改 :更改代码和数据库后就可以构建和部署。
- 测试相对简单直观:对应用程序接口进行测试即可完成业务逻辑测试。
- 部署简单明了 :单文件单服务部署,不涉及服务之间调用。
- 横向扩展不费吹灰之力:部署多个服务,使用负载均衡进行调度。
单体架构的缺点
- 过度的复杂性:一个项目实现所有业务逻辑,复杂性和代码量都过于庞大,很难使开发者完全理解它的全部。
- 开发速度缓慢:在开发和修复的过程中花费大量的时间梳理复杂的系统,每次构建和测试的时间也越来越长。
- 代码提交合并部署过程中易出问题:多个程序员研发一套系统,在开发的过程中经常会相互干扰。
- 对配置性能依赖高:每个部署服务的服务器都需要相对更高的配置才能正常运行。
后期技术升级困难:团队人员必须长期使用一套相同的技术栈和软件版本,后期升级极其困难。