云原生落地:企业级DevOps实践
上QQ阅读APP看书,第一时间看更新

2.1.2 单体架构

在Web应用发展早期,大部分工程都是将所有的服务和功能模块打包到一个单一的应用中,如以War包的形式运行在Tomcat进程中,直接与数据库和文件系统交互。

在业务发展早期,业务功能往往比较单一,为了快速支持业务,一般一台服务器、一个应用、一个数据库,就足够支撑起一个单一的业务功能。比如电商业务,登录、下单、商品、库存都在一个单一的应用中进行管理和维护。单体架构在业务发展早期非常轻便,易于搭建开发环境,易于测试和部署。

随着业务的不断增长,用户的访问越来越多,单一应用对磁盘、CPU、内存、数据库的访问要求也越来越高。一台服务器一个应用的配置开始捉襟见肘,更改任何一个小的功能模块,整个应用都要重新进行编译和部署。同时,当有多个需求并行时,发布效率会非常低下,整体的功能耦合性非常大,一个小功能的变动可能会引起整个应用不可用。多种功能的强耦合迫使单体架构走向分布式架构。