Я работаю в небольшой компании, и мы собираемся углубиться в мир микросервисов.Как и ожидалось, мы столкнулись с несколькими трудностями.
На данный момент мы работаем над новым программным обеспечением для управления тяжелой техникой, но давайте сосредоточимся на небольшом ограниченном контексте: рабочем порядке.Ради простоты я опущу ненужные детали.В любом случае, этот ограниченный контекст состоит из техника, команды и фактического рабочего задания.Команда состоит из группы техников и менеджера команды, который также является техником.Давайте подумаем об одном небольшом аспекте программного обеспечения: техник должен иметь возможность видеть все рабочие задания, выданные ему, и, если он оказывается руководителем группы, он должен видеть все рабочие задания, выданные ему.все члены этой команды.
Моей первой идеей было создание единого сервиса.После некоторых исследований я начал задумываться о том, стоит ли мне создавать две службы: одну для управления командами и техниками, а другую - для фактического управления рабочими заданиями.Проблема со вторым подходом заключается в том, что часть логики, которая контролирует, какие заказы должны быть получены, должна быть размещена внутри шлюза API / BFF.Поскольку рабочие задания не имеют сведений о командах (что я на самом деле считаю правильным проектом), API-шлюз должен будет извлекать команды, в которых техник является руководителем, чтобы получить все рабочие задания для всех членов этих групп.команды.
Меня беспокоит то, что какая-то бизнес-логика просачивается в API-шлюз, и я не уверен, что все в порядке, я также боюсь создавать анемичные микросервисы.С другой стороны, этот ограниченный контекст может использоваться в другом программном обеспечении, которое может не использовать концепцию команд.
Я также думал о создании третьего сервиса для координации этой работы, но не нашел никакогоПричины поддержать идею на данный момент.
Итак, подведем итог: я должен создать один, два или три службы?Я обязан создать два, но пока не могу решить, как это сделать.
Спасибо, ребята, один на один.