单体架构

  • 优点
    • 简单
    • 测试直观
    • 部署简单
    • 横向扩展简单,即运行多个实例
  • 问题
    • 复杂
      • 系统大了之后,复杂性很大
    • 开发慢
      • 改动一个小点,就要打包运行整个项目
    • 难扩展
      • 有的模块需要简单配置,有的需要高级硬件配置,而整个项目是一个配置
    • 没有故障隔离
      • 一个模块挂了,连带整个项目挂掉
    • 技术升级困难
      • 尝试新技术的时候,需要改动所有相关的地方,成本高

在我看来,复杂性的提升导致单体很难

  • 复杂性由元素,以及元素之间的关系构成
  • 元素多了
    • 大家不合
      • 有的要求高,有的要求低
  • 元素关系多了
    • 你要改动,我受影响了
    • 你挂了,我也挂了
    • 你要更新,我也相应要更新
    • 程序员只想改动你,却不得不把你的兄弟姐妹也了解一遍