Распределенные домены, управляемые ресурсами дизайна
Я вполне уверен в разработке приложений DDD, но одна область, которая продолжает вызывать у меня проблемы, это когда два приложения интегрируются друг с другом. Я изо всех сил пытаюсь найти любые полезные книги или ресурсы по этой теме. В таких книгах, как Patterns of EAI, подробно рассматриваются шаблоны обмена сообщениями и конструирование сообщений, но в действительности не объясняется, как создавать системы, использующие эти шаблоны.
Я искал высоко и низко, и я вполне уверен, что нет примеров приложений, которые демонстрируют, как интегрировать две системы. Я понимаю концепцию асинхронного обмена сообщениями, но опять же не могу найти хороших примеров того, как его применить.
Ресурсы по SOA, похоже, продолжают повторять одни и те же понятия, не демонстрируя, как их реализовать, и чаще всего кажутся более заинтересованными в продаже мне продуктов.
Вот такие вопросы, на которые я пытаюсь ответить:
Должно ли каждое приложение иметь свою собственную копию данных? Например, должно ли каждое приложение в организации иметь свой собственный список клиентов, который он обновляет после получения сообщения?
В какой момент в стеке DDD передаются сообщения? Являются ли они результатом доменных событий?
Могу ли я объединить асинхронные сообщения и WCF или мне нужно выбрать? Использую ли я WCF для запроса / ответа и обмена сообщениями для публикации / подписки?
Как одно приложение DDD использует услуги другого? Должно ли одно приложение DDD запрашивать данные у другой системы через свои сервисы приложений, или у него уже должна быть собственная локальная копия данных, как указано в пункте 1?
Очевидно, у меня не может быть транзакции в двух системах. Как мне избежать этого?
Если я в замешательстве, это потому, что я есть. Я не ищу ответы на вышеупомянутые вопросы, просто указываю в направлении ресурсов, которые ответят на этот вопрос и схожих вопросов.
2 ответа
Я делаю похожий переход. Мой совет:
- Начните с http://cqrsinfo.com/.
- Послушайте распределенный подкаст.
- Поймай любой из разговоров Грега Янга. Например, здесь Эрик Эванс берет интервью у Грега. У него есть дневные сессии, которые также записываются.
- Читайте / слушайте что-нибудь из Udi Dahan (посты, лекции, статьи и т. Д.). У него есть кое-что хорошее в InfoQ.
- Жди книги Грега.
- Прочитайте все, что вы можете найти на EDA (Event Driven Architecture).
В дополнение к тому, что сказал Эрик Фарр, возможно, стоит обратить внимание на часть 4 книги DDD (Стратегический дизайн). Он не подходит к проблеме с точки зрения "распределенного", но содержит много информации о том, как интегрировать приложения ( ограниченный контекст). Такие шаблоны, как Anticorruption Layer, могут быть очень полезны при проектировании на границе приложения.