最近看了 Simon Martinelli 在 Spring I/O 2025 的演讲:《Say Goodbye to Microservices, Say Hello to Self-Contained Systems》(如果英语观看困难的小伙伴,推荐使用Chrome插件「YouTube中文配音」),其中提到了大家在微服务实践过程中的痛点,并引出了新的解决方案:Self-Contained Systems。看到标题,DD还是挺激动的,感觉是个新鲜知识,但是进一步了解之后,又有一些其他感触,跟大家聊一聊。
对于微服务,相信大家都已经不陌生了,那什么是 SCS(Self-Contained Systems)呢?
SCS是一种将大型系统的功能分离为许多独立协作系统的架构方法。其具备以下特点:
以下是官网的原文(https://scs-architecture.org/vs-ms.html)说明:
SCS 方法与微服务有许多共同的概念,包括通过独立可部署单元来实施隔离、组织边界与架构边界的对齐、对技术选择多样性的支持,以及无集中式基础设施等理念。如果您愿意将这些视为微服务的核心,那么可以将 SCS 视为微服务的一种特殊化形式。但与许多人所认为的微服务关键属性的其他方面相比,两者存在一些重要差异:
当然,SCS 也可以进一步拆分,使其由微服务组成(尤其是在业务逻辑层面)。在这种情况下,这可以视为一种特定的微架构方法。
SCS 显然专注于大型项目和多团队拆分,而微服务则可用于其他目的:小团队甚至单个开发者经常使用微服务,例如为了更轻松地实现持续交付、构建更健壮的系统,或对每个微服务进行独立扩展。因此,微服务的用途更为广泛,而 SCS 则专门解决大型项目的架构和组织管理问题。
根据以上内容结合《Say Goodbye to Microservices, Say Hello to Self-Contained Systems》的演讲内容,做了一下整理:
比较维度 | 微服务(Microservices) | SCS(重点中心系统) |
---|---|---|
拆分粒度 | 单个服务粒度更小,聚焦单一功能,代码量通常较少。 | 服务规模更大,承载完整业务模块,需团队协作开发。 |
服务数量 | 系统中服务数量众多(如电商平台可能包含数百个)。 | 服务数量较少(如电商平台通常为5-25个)。 |
通信机制 | 允许服务间通过API、消息队列等直接通信。 | 理想情况下避免服务间直接通信,强调独立性。 |
UI处理 | 部分定义中UI与逻辑分离(如独立前端服务),也有定义包含UI。 | 每个SCS通常包含独立UI,形成完整业务单元。 |
集成方式 | 主要通过逻辑层(如API接口)实现服务集成。 | 更倾向于在UI层(如前端界面)进行集成。 |
应用场景 | 适用于小团队、个人开发,或追求持续交付、独立扩展的场景。 | 专注于大型项目,解决多团队协作的架构与组织管理问题。 |
在总结完SCS与微服务的比较之后,我的第一感觉是SCS更像是以前我们常说的SOA,他们都有这些特点:
所以,个人感觉这里所说的SCS更像迎合目前微服务实践痛点的冷饭热炒?还是缺乏深入探究没有掌握其精髓?