Monolithic Architecture

20th August 2020 at 2:19pm

Monolithic Architecture,直译过来叫「单体应用体系」,指用单一的一个技术栈(比如 J2EE、Python Web 等),写一个庞大的应用,把所有业务逻辑、功能包含进来。这个应用可能即为 Web 前端提供 HTML 页面,又为手机 App 提供数据等。

好处:

  • 开发简单,只需要一套工具链和编程背景知识
  • 部署简单,只需要一套 CICD
  • 扩容简单,就是部多几台机器

缺点:

  • 应用代码可能越来越庞大,新人难以理解
  • IDE、CICD 工具,越跑越慢,甚至难跑
  • 你的程序容器(比如 Tomcat、nginx)需要加载的东西越多,它启动速度会越慢,降低开发效率
  • 扩容变难,应用里有部分功能是 CPU 密集型、有部分是内存占用大,不拆出来难扩容
  • 难以分工,模块的边界模糊,数据可能在不同地方被操作
  • 被绑在一个技术栈上,如果这个技术栈不再能解决问题,或者需要频繁迁移到新版本,可能会很痛苦

参考