什么是自足系统(Self-contained Systems)?


自足系统(又称为自包含系统、自我独立系统,英文Self-contained Systems,简称SCS)是一种软件架构方法,SCS 包含自己的 用户界面、特定的 业务逻辑 和单独的 数据存储 。

SCS优先考虑将应用程序分散到独立的系统中,每个系统都有自己的领域逻辑、用户界面和数据存储。微服务是仅关注业务逻辑的小型服务,而 SCS 则不同,它规模更大,涵盖的特定领域范围更广。

SCS 是代表独立Web的系统,包括Web用户界面、业务逻辑和数据库,可能还有服务 API。通常由一个团队负责。

这类系统的主要优点是:

  • 自主性 - 每个 SCS 都有独立的数据库、业务逻辑和用户界面。
  • 与领域对齐一致 - SCS 是围绕特定业务领域构建的,确保每个单元都代表一套连贯、有意义的功能。
  • 分散数据管理 - 每个 SCS 都有独立的数据库,确保其内部数据的一致性,减少跨服务依赖。
  • 技术独立 - 允许在其他 SCS 中使用不同的技术堆栈,以满足每个域的特定需求。
  • 明确发布接口 --与其他系统交互的接口定义明确,在保持封装的同时,保持明确的契约。
  • 独立部署 - 每个 SCS 都可以独立部署、扩展和更新,而不会影响其他系统。

这种系统与 领域驱动设计DDD配合得很好。创建此类系统的第一步是领域分析,可通过识别与特定业务领域一致的有界上下文来进行。然后将每个有界上下文封装在自足系统中,自足系统包括自己的数据管理、业务逻辑和用户界面,确保每个系统都是独立的,但在必要时能够通过定义明确的应用程序接口与其他系统进行交互。

为什么自足系统(SCS)与微服务不同:

  • SCS 的范围更广,包括用户界面、业务逻辑和界限上下文中的数据存储
  • 由于需要管理许多较小的、相互依赖的服务,微服务可能会导致较高的操作复杂性,而 SCS 则更为重要、更为自主。
  • SCS 管理其数据,从而在每个系统内实现更好的数据一致性,而微服务通常依赖于共享数据存储。