В проблеме вопрошающего: у него есть граничные контексты, которые оперируют похожими/одинаковыми данными. Эти данные в предметной области связаны с одним информационным объектом и в контекстах объекты называются одинаково. Объекты реализуются в виде сущности или объекта-значения. Шарить реализации между - можно, но тогда растёт зацепление. Применяют обычно другое решение - используют механизм передачи данных в сообщениях. Сообщения должны быть переданы так, что не завязываться на язык/классы и прочее(json, например). С обоих сторон контекстов появляется необходимость в описании способов кодирования/декодирования сообщений. Во время кодирования/декодирования и решается проблема маппинга данных на понятный контексту язык объектов.
Зацепление это вообще не про это, зацепление не про то, что какой-то мс тебе прислал (сереализовал/десереализовал) какую-то кучу объектов в один звонок, если твой мс звонит в 10 эндпоинтов другого мс - это и есть зацепление
Обычно если два контекста переиспользуют целиком классы друг друга, значит эти контексты поделили либо криво, либо зря. И стоит переделать их так, чтобы не переиспользовали.
Добрый день. Есть корзина - добавляем туда доступный товар. Через время товар заканчивается, но в корзине остается, но помечяется "закончился" - получается инвариант. Что можно делать с инвариантами в такой ситуации и кто-нибудь сталкивался ли с таким?
Это товар, который кончился. Можно предложить юзеру заменить товар, можно просто уведомить, что товаров нет и ты пересчитаешь стоимость, выкинув товары, а можно просто выкинуть товары. Но это вполне валидный кейс