Stefan Tilkov:跳过单体应用,从微服务开始

  • Jan Stenberg
  • 谢丽

2015 年 6 月 12 日

话题:SOA架构语言 & 开发

在过去的几个月中,许多人都宣称微服务架构应该总是从单体应用开始,其中包括Martin FowlerSam Newman,但Stefan Tilkov认为,那经常是错误的,构建一个模块边界清楚、结构良好的单体应用然后再迁移到微服务在大多数情况下都非常困难,几乎不可能。

Tilkov 是 innoQ 的联合创始人兼首席顾问。虽然他赞同只有在理由充分的情况下才选择分布式系统的观点,但在他看来,最重要的原因是它可以推动大型系统的单个部分快速、独立的交付。他认为,微服务的主要优点是在系统的不同部分之间创建了清晰严格的边界,使连接不同部分增加耦合度的风险最小化。他指出,如果遵循严格的规则,那么在单体应用中也可以做到这点,但是根据他的经验,这种情况很少出现。

在 Tilkov 看来,单体应用的基本思想是系统不同部分之间互连。从技术的角度来看,系统的所有部分使用同样的平台、抽象概念和库,并以同一个过程中的所有东西为基础进行通信。从业务的角度来看,所有的领域对象在系统的任何部分都可以使用,不同部分使用同样的持久化模型,事务总是可以覆盖所有变化。在他看来,所有这些事实都增加了耦合度,他再次强调,分解现有的单体应用极其困难。

Tilkov 认为,当系统足够大时,我们从开始就应该考虑构建单个的子系统,并尽可能地提高它们的自治程度,而不是总是从单体设计开始。

作为由微服务组成的系统的一个例子,Tilkov 提到了Otto.de。这是德国的一家电子商务网站。在去年的 QCon 伦敦大会上,他就此作过演讲

早些时候,Tilkov 比较了不同类型系统的特点,并新创了一个术语“自包含系统(Self-Contained System,缩写 SCS)”来描述明显比微服务更大的自治服务,但只是针对一个特定的领域。

查看英文原文:Stefan Tilkov: Skip the Monolith, Start with Microservices

SOA架构语言 & 开发