拆分和命名微服务

Splitting and naming Microservices

我最近开始了一个副项目。它应该是一本虚拟食谱书,具有存储和检索食谱 (CRUD)、对它们进行评分和搜索的功能。这不是什么新鲜事,但我想将它构建为桌面应用程序,以了解有关数据库、单元测试、UI 等的更多信息。现在核心域已经基本完成(我使用 DDD 方法)并且我实现了大部分 CRUD 存储库,我想通过在线托管核心功能来使其更具可扩展性,所以我能够编写多个后端(桌面应用程序、Web 应用程序、Web api,等等)。

面向服务的架构(或微服务)对我来说是一个很好的方法。我面临的问题是如何决定我的项目的哪些部分属于单独的服务以及如何命名它们。

参加项目的以下部分:

我最初的方法是将核心领域、持久性、搜索和网络 api 放入一个子项目中,并将整个堆栈托管在 Heroku 或类似的东西上。这样我的客户就可以使用网络界面。桌面和 Web 应用程序本身就是不同的项目。如果 Dektop 应用程序都用 Java.

编写,则它们可以共享核心域

这是一种有效的方法,还是我应该将第一个服务分成更小的部分?你如何命名这些服务?

Eric Evans 在 GOTO 2015 会议上 (https://youtu.be/yPvef9R3k-M),我 100% 同意他的观点,回答了你的问题。微服务范围应该是一个或多个限界上下文。包括其支持类持久化,REST/HTTPAPI等。 据我了解,微服务是限界上下文的部署包装器,添加了隔离、扩展和弹性方面。 如您所写,您没有应用战略设计来定义有界上下文。因此,在将应用程序撕成碎片之前,是时候检查一下了。