最近看了 Simon Martinelli 在 Spring I/O 2025 的演讲:《Say Goodbye to Microservices, Say Hello to Self-Contained Systems》,其中提到了大家在微服务实践过程中的痛点,并引出了新的解决方案:Self-Contained Systems。看到标题还是挺激动的,感觉是个新鲜知识,但是进一步了解之后,又有一些其他感触,跟大家聊一聊。
什么是 SCS(Self-Contained Systems)
对于微服务,相信大家都已经不陌生了,那什么是 SCS(Self-Contained Systems)呢?
SCS是一种将大型系统的功能分离为许多独立协作系统的架构方法。其具备以下特点:
- 自治:每个SCS都是一个自治的Web应用程序。对于SCS的领域而言,所有数据、处理数据的逻辑以及渲染Web界面的所有代码都包含在SCS内部。一个SCS可以独立完成其主要用例,无需依赖其他系统的可用性。
- 单一团队:每个SCS由一个团队负责。这并不意味着只有一个团队可以修改代码,但负责的团队对代码库的内容拥有最终决定权,例如通过合并拉取请求(pull-requests)。
- 异步依赖关系:与其他SCS或第三方系统的通信尽可能采用异步方式。具体来说,其他SCS或外部系统不应在SCS自身的请求/响应周期内被同步访问。这实现了系统解耦,减少了故障影响,从而支持自治性。目标是实现时间上的解耦:即使其他SCS暂时离线,SCS也应能正常工作。即使技术层面的通信是同步的,也可以通过数据复制或请求缓冲等方式实现这一点。
- API是可选:SCS可以有一个可选的服务API。由于SCS拥有自己的We