什么是微服务?它们与 API 驱动的架构有何不同?

What are microservices and how do they differ from an API-driven architecture?

我想回答这个问题,"Do you use microservices?"我不知道'microservices'具体是什么意思。基本上我在 "What are microservices?" 上阅读的所有内容要么是一堆无用的术语,如 'loosely coupled'、'fine-grained' 和 'lightweight',要么听起来像是由商业管理顾问编写的高管,没有实际内容。

我目前的理解是:

稍后,当我开始编写其他应用程序时,每个应用程序都有自己的 SPA 和 API,我决定将身份验证和授权分解到它自己的 API 中。后来,我决定将一些对每个 API 通用但与 authn/authz 无关的业务逻辑分解到另一个 API 中。所以现在每个 SPA 都独立地与(至少)三个 API 进行通信。 (每个 API 是一个单独的容器,每个 SPA 是一个单独的容器。)

这些是微服务吗?什么是微服务?每个应用程序都有一个 API,在大多数情况下,我可以将它们分成多个较小的 API。那么这些单体 API 还是微服务?

我同意你的看法,似乎没有成熟的方法来实际衡量 "small"、"loosely coupled" 等目标。可能很难给出准确的定义,因为它取决于上下文和应用程序的工作方式。

但是,对于微服务架构的开发和部署过程有一些标准:

  • 您应该能够相互独立地交付和部署服务。
  • 开发团队应该能够独立于其他服务实施服务。

现在真正有趣的问题是如何为服务找到合适的边界。我喜欢这篇文章 How to break a Monolith into Microservices,其中有很好的陈述:

Finding the domain boundaries in a legacy monolith is both an art and science.

听起来您已经对在单个服务中分离什么进行了很多思考,因此您显然至少在使用微服务的道路上进展顺利。