Недавно я начал работу над побочным проектом. Предполагалось, что это виртуальная книга рецептов с возможностями хранения и получения рецептов (CRUD), оценки их и поиска по ним. Это ничего нового, но я хотел создать его как настольное приложение, чтобы узнать больше о базах данных, модульном тестировании, пользовательских интерфейсах и т. Д. Теперь, когда основной домен в значительной степени выполнен (я использую DDD-подход), и я реализовал большинство CRUD-репозиториев, я хочу сделать это немного более расширяемым, разместив основные функции онлайн, поэтому я могу писать несколько бэкэндов (настольное приложение, веб-приложение, web api и т. д.).Разделение и присвоение имен Microservices
Сервис-ориентированная архитектура (или Microservices) звучит как хороший подход ко мне, чтобы сделать это. Проблема, с которой я столкнулся, заключается в том, как решить, какие части моего проекта принадлежат отдельной службе и как их назвать.
Возьмите следующие части проекта:
- Core, домен (Заполнители, Сущность, Value Objects, Logic) ->Java
- Постоянство (Даосы Хранилище, множество реализаций Серверных баз данных) - >Java
- Search (Поиск услуги, которые используют запросы SQL на настойчивости БД для поиска) ->Java
- Desktop Application ->JS (Electron) или JavaFX
- Веб-приложение ->Настой или Rails
- Web API (Управление, Rate, Поиск рецептов с использованием REST) ->?
Мой первоначальный подход был бы поставить домен ядра, сохранение, поиск и веб-API в одном подпроекта и хозяйничать, что весь стек на Heroku или что-то подобное. Таким образом, мои клиенты могут использовать веб-интерфейс. Настольные и веб-приложения будут разными проектами сами по себе. Приложение Dektop может совместно использовать основной домен, если они оба написаны на Java.
Действительно ли это действительный подход, или я должен разделить первый сервис на более мелкие части? Как вы называете эти услуги?
Это намного проще разбить их, если вы думаете о микросервисе, содержащем единый ограниченный контекст и поддерживающую функциональность. У меня нет ограниченных контекстов, но масштаб проекта тоже не оправдывает этого. Если бы мне пришлось рисовать контекстную карту, это был бы один контекст. Я думаю, что развертывание всего этого как единой службы, обеспечивающей постоянство и запросы, является хорошим выбором. –