Monolithic Architecture,直译过来叫「单体应用体系」,指用单一的一个技术栈(比如 J2EE、Python Web 等),写一个庞大的应用,把所有业务逻辑、功能包含进来。这个应用可能即为 Web 前端提供 HTML 页面,又为手机 App 提供数据等。
好处:
- 开发简单,只需要一套工具链和编程背景知识
- 部署简单,只需要一套 CICD
- 扩容简单,就是部多几台机器
缺点:
- 应用代码可能越来越庞大,新人难以理解
- IDE、CICD 工具,越跑越慢,甚至难跑
- 你的程序容器(比如 Tomcat、nginx)需要加载的东西越多,它启动速度会越慢,降低开发效率
- 扩容变难,应用里有部分功能是 CPU 密集型、有部分是内存占用大,不拆出来难扩容
- 难以分工,模块的边界模糊,数据可能在不同地方被操作
- 被绑在一个技术栈上,如果这个技术栈不再能解决问题,或者需要频繁迁移到新版本,可能会很痛苦