【发布时间】:2016-11-19 09:07:15
【问题描述】:
我最近开始了一个副项目。它应该是一个虚拟食谱书,具有存储和检索食谱 (CRUD)、对其进行评分和搜索的功能。这不是什么新鲜事,但我想将其构建为桌面应用程序,以了解有关数据库、单元测试、UI 等的更多信息。现在核心域已经完成(我使用 DDD 方法)并且我实现了大部分 CRUD 存储库,我想通过在线托管核心功能来使其更具可扩展性,因此我能够编写多个后端(桌面应用程序、Web 应用程序、Web api 等)。
面向服务的架构(或微服务)对我来说听起来是个不错的方法。我面临的问题是如何决定,我的项目的哪些部分属于单独的服务以及如何命名它们。
参与项目的以下部分:
- 核心域(聚合、实体、值对象、逻辑)-> Java
- 持久性(DAO、存储库、多个数据库后端实现)-> Java
- 搜索(使用持久数据库上的 SQL 查询进行搜索的搜索服务)-> Java
- 桌面应用程序 -> JS(电子)或 JavaFX
- Web 应用程序 -> Flask 或 Rails
- Web API(使用 REST 管理、评分、搜索食谱)-> ?
我最初的方法是将核心域、持久性、搜索和 web api 放入一个子项目中,并将整个堆栈托管在 Heroku 或类似的东西上。这样我的客户就可以使用 Web 界面。桌面和 Web 应用程序本身就是不同的项目。如果 Dektop 应用程序都是用 Java 编写的,则它们可以共享核心域。
这是一种有效的方法,还是我应该将第一个服务分成更小的部分?您如何命名这些服务?
【问题讨论】:
标签: soa microservices