Микросервисы DDD CQRS

Я читал о DDD и микросервисах. Начал прототипировать, взяв вариант использования части CQRS. Вариант использования — спортивное футбольное приложение, в котором есть видео, новости, счет и домашняя страница. В этом я определил домены и ограниченный контекст, которые

  1. Новости

  2. Ролики

  3. Результаты

  4. Домашняя страница

Во-первых, 3 домена полностью независимы друг от друга.

Теперь требования к домену домашней страницы. 1. Раздел «Оценка» 2. Раздел «Видео» 3. Раздел «Контент»

Раздел контента: имеет собственную базу данных

Раздел видео: он сделает HTTP-вызов видеосервиса и получит данные

Раздел Score: он сделает HTTP-вызов службы Score и получит данные

Мой вопрос связан с доменом домашней страницы. Я считаю, что он тесно связан с другими службами и не является независимым.

Как создать домен домашней страницы?


person Vikas Naidu    schedule 05.03.2018    source источник
comment
Я действительно думаю, что вы неправильно поняли концепцию DDD, и я уверен, что вам не нужны микросервисы для такого рода приложений. DDD — это способ разработки сложных приложений, которые имеют множество бизнес-правил и логики. Кроме того, ваш вопрос основан на мнении, поскольку нет простого, всегда правильного ответа на вопрос, например, как я могу проектировать? Также я думаю, что это слишком широко для формата SO. Это действительно сложная тема. Редактировать: Но я думаю, что вам обязательно стоит использовать CQRS! :-)   -  person Paweł Hemperek    schedule 05.03.2018
comment
Спасибо за комментарий. Во-первых, я согласен с тем, что DDD — это способ разработки сложных приложений. когда дело доходит до вопроса. Я просто хотел понять часть CQRS, касающуюся микросервисов. Наличие зависимостей от нескольких сервисов приемлемо в моделях CQRS или нет. Можете ли вы это прояснить? Или как бы вы подошли к вышеуказанной проблеме?   -  person Vikas Naidu    schedule 05.03.2018


Ответы (1)


Я считаю, что он тесно связан с другими службами и не является независимым.

да.

Вы можете улучшить независимость, тщательно продумав режимы отказа; как должны вести себя элементы пользовательского интерфейса, когда соответствующий центр данных недоступен. Вы можете, например, сделать так, чтобы домашняя страница просто отображала сообщение «данные недоступны», если удаленный орган не отвечает своевременно. Или вы можете сделать так, чтобы на домашней странице отображалась кэшированная копия некоторых устаревших данных. Может даже иметь смысл всегда отображать ответ с использованием кэшированных данных, при этом обновления кэша происходят в фоновом режиме.

Существуют методы, которые можно использовать для уменьшения связи между службами.
Один из подходов описан Уди Даханом в разделе Техники компоновки пользовательского интерфейса. Его идея заключается в том, что вы используете элемент, например виджет, для инкапсуляции логики отображения и режима отказа.

Лежащая в основе механика на самом деле не так уж и отличается; виджет имеет все те же проблемы, что и раньше, когда данные недоступны. Но что он делает, так это разделяет две проблемы (что вы делаете, когда виджет недоступен, что вы делаете, когда данные недоступны), которые принадлежат разным командам: команда домашней страницы решает, что делать. когда виджет недоступен (возможно, используется кешированная копия), команда обслуживания решает, что делать, когда виджет не может получить доступ к резервным данным (возможно, виджет имеет собственный кеш устаревших данных).

Нет никакой магии; у вас есть распределенная система, и следствием этого является то, что вы должны учитывать в своем проекте тот факт, что удаленные процессы не всегда будут доступны.

person VoiceOfUnreason    schedule 05.03.2018
comment
Спасибо за ответ. Хорошее понимание читаемой стороны микросервисов. - person Vikas Naidu; 07.03.2018