独立系统

2020-05-07 20:00:58

自包含系统(SCS)方法是一种体系结构,它侧重于将功能分离到许多独立的系统中,使完整的逻辑系统成为许多较小软件系统的协作。这就避免了大块头不断增长,最终变得难以为继的问题。过去几年,我们在许多大中型项目中看到了它的好处。

这个想法是将一个大系统分成几个较小的独立系统,或称SCS,它们遵循一定的规则。每个SCS都是一个自治的Web应用程序。对于SCS的域,所有数据、处理该数据的逻辑以及呈现Web界面的所有代码都包含在SCS中。SCS可以自己完成其主要用例,而不必依赖其他可用的系统。

每个SCS归一个团队所有。这并不一定意味着只有一个团队可以更改代码,但拥有代码的团队对代码库中的内容拥有最终决定权,例如通过合并拉请求。

只要有可能,与其他SCS或第三方系统的通信就是异步的。具体地说,其他SCS或外部系统不应在SCS自身的请求/响应周期内同步访问。这使系统解耦,减少了故障的影响,从而支持自治。我们的目标是与时间解耦:即使其他SCS暂时脱机,一个SCS也应该可以工作。即使在技术层面上的通信是同步的,例如通过复制数据或缓冲请求,也可以实现这一点。

SCS可以有一个可选的服务API。因为SCS有自己的Web UI,所以它可以与用户交互,而不需要通过UI服务。但是,用于移动客户端或其他SCS的API可能仍然有用。

每个SCS必须包括数据和逻辑。要真正实现任何有意义的功能,两者都是必需的。SCS应该自己实现功能,因此必须同时包含这两个功能。

为避免紧密耦合,SCS不应与其他SCS共享业务代码。创建SCS的Pull-Request或使用通用库(例如数据库驱动程序或OAuth客户端)可能很好。