Когда мы слышим Domain Driven Design, на ум сразу приходят такие понятия, как Ubiquitous Language (Повсеместный/Всеобщий язык), Bounded Contexts (Ограниченные контексты), то есть чаще всего говорят о стратегическом дизайне. Но между стратегией и кодом лежит большой очень важный слой — тактический дизайн. Это то, как стратегические идеи воплощаются в конкретные и работоспособные программные модели. Тактический дизайн — инструмент моделирования Bounded Context. Этой части DDD незаслуженно уделяют мало внимания, хотя без тактики любая стратегия терпит поражение. Стратегический дизайн — отвечает на вопросы «зачем» и «как» разделять: 🠶 Где границы между контекстами? 🠶 Какие модели и команды за что отвечают? 🠶 Как построено взаимодействие между контекстами? Тактический дизайн — здесь находим ответы на вопросы «как» реализовать внутри одного ограниченного контекста (Bounded Context): 🠶 Какие сущности находятся внутри контекста? 🠶 Какие инварианты должны соблюдаться? 🠶 Где агрегаты и их