DDDevotion – Telegram
DDDevotion
4.42K subscribers
65 photos
7 files
273 links
All about Domain-Driven Design
FB - https://www.facebook.com/groups/dddevotion/
Youtube - https://www.youtube.com/c/dddevotion
По вопросам сотрудничества @gradea
Download Telegram
Часто встречаю вопросы “Как внедрить DDD?” или “В вашей компании все используют DDD?”.

Но прежде чем внедрять, необходимо выяснить, что такое DDD. И здесь нет однозначного и общепринятого понимания. Каждый вкладывает в этот термин свой набор атрибутов.

Сейчас многие утверждают, что DDD - это скорее философия и сообщество без явных границ. Что-то может использоваться в DDD-подходе, но необязательно быть признаком. Агрегаты, события, контексты и т.д. – все это мы можем увидеть и за пределами DDD.

Но что делает DDD тем самым подходом, отличным от остальных? Если выбирать что-то одно, то я выбрал бы “общение с экспертами”. Из необходимости этого общения вытекают такие практики как Ubiquitous Language, Event Storming и прочие. А что для вас DDD?

Матиас и Кенни дискутировали недавно об этом. В итоге сегодня пройдет панельная дискуссия Присоединяйтесь!
Про давление сроков.

На мой взгляд это одна из причин наших Big Ball of Mud.

Чарльз Лехт уже нас предупреждал более 50 лет назад: Разработчик будет “обязан согласиться из уважения, страха или ложной лояльности” и неохотно, но соглашается на эти сроки. Разработчик открывает свой секретный ящик с инструментами и делает всё возможное, чтобы успеть к ближайшему сроку, используя инструменты, такие, как хардкод, копипаст-программирование, игнорирование тестов, сверхурочные и другие, разрушающие качество и срезающие углы практики см. книгу The Enterprise and Scrum. Никто не обращает внимание на использование этих ‘инструментов’, поэтому что сроки соблюдены. Менеджмент награждает разработчиков за их тяжёлый труд и восхваляет их за “отличную командную работу” и “боевой дух”.

Мне нравится, что Канбан метод и #noestimate опосредованно позволяют избегать этой проблемы.

Ребята перевели отличную статью про работу с легаси кодом. http://blog.agilix.ru/2020/10/28/%D1%83%D0%BD%D0%B0%D1%81%D0%BB%D0%B5%D0%B4%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D1%8B%D0%B9-%D0%BA%D0%BE%D0%B4/
Отличный (хотя и немного капитанский) доклад Сэма Ньюмена про сокрытие информации.

Очень понравилась часть про coupling: он делит на несколько видов и выстраивает их в иерархию от самой слабой связанности на уровне домена до самой сильной на уровне контента. Я раньше в голове не делил по видам, хотя подсознательно понимал эти степени.

Также крутая тема со скрытием информации. Очень важно понимать, что, во-первых, чем больше вы расшарили информации, тем дальше будет тяжелее и, во-вторых, явным раскрытием проще управлять.

Ограниченные контексты и агрегаты как раз и направлены на то что скрыть информацию, а то что не скрыто показать явно. Для меня теперь любая анемичная дырявая модель – пример content coupling (aka Pathological coupling): ни контракта, ни инвариантов, никакой явности, даже семантика полей разъезжается иной раз.

Сделал майндмап, можно пробежаться по основным тезисам прежде чем смотреть доклад целиком.

P.S. не смог нагуглить быстро про Tramp Coupling – знаете, что это такое?
Небольшой опрос, приключение на пару минут https://www.menti.com/8ek7z9uxrk

UPD Пробелы ставить можно и нужно!)
Агрегаты и контексты – наше всё!)
Сегодня рассказывал про агрегаты на Archdays2020. Примеры кода и референсы доступны по ссылке. Репозиторий будет обновляться.
Это был тяжелый год, был он тяжелей чем тот (с)
Есть желание 17 декабря проводить старый год каким-нибудь онлайн-мероприятием. Какой формат вам нравится больше? Можно выбрать несколько.
Anonymous Poll
75%
Воркшоп с кодом (про агрегаты, например, или что-то еще)
21%
Пара классический докладов
9%
Сессия Lean coffee
23%
Круглый стол с экспертами
1%
Другое, напишу в комментариях.
Отличная визуализация разницы. Спасибо @DmitriyLanets за ссылку
По мотивам воркшопа написал статью про агрегаты https://habr.com/en/company/dododev/blog/532628/

Сперва думал, что я перенесу все что проговаривал, но понял что объем темы настолько велик, что плохо пихать все в одну статью. Теперь думаю над продолжением.
23 декабря московским вечером планируем немного поболтать про код. Я не хочу делать формальный ивент с докладчиками и презами, но хочется пообщаться в неформальной обстановке.

Есть две опции.
1. Вам что-то не ясно в DDD. Вы бы хотели обсудить и увидеть как это делается. Напишите в комментариях.

2. Вам есть чем поделиться. Вы недавно (может и давно) запилили крутую штуку и можете показать код и рассказать что и как вы делали. Не надо думать, что крутые штуки бывают только у небожителей. Тот же Outbox Pattern вполне интересная штука и не все знают как это делается, что надо учесть. И тоже пишите в комментарии или в личку.

Ну и в любом случае присоединяйтесь!)
Channel photo updated
https://dddevotion.timepad.ru/event/1509640/

В предыдущей статье была уже эта ссылка. Публикую еще раз.

Предновогодний митап с кодом и общением. Приходите! Если вы постоянно читаете канал, то можете не регистрироваться, 23 декабря вечером здесь будет дополнительный анонс с ссылкой на ютуб или зум (пока что решаем как будет удобнее).
Уже завтра DDD-посиделки. Первый спикер - Андрей Ратушный @agratushniy. Андрей - активный участник сообщества, практикует Domain-driven design, с радостью согласился провести мастер-класс "От теории к коду".

Андрей так описывает этот воркшоп:
Я покажу, как можно сформировать структуру каталогов в фреймворке Symfony для разработки проекта с использованием ДДД подхода. Покажу примитивный слой супер-типов, а затем приступим к построению модели в порядке: Domain -> Application -> Ifrastructure -> Controller.

Повторяем процесс построения модели еще в двух контекстах. Затем соединяем это все при помощи событий. Пишем пару юнит, и пару интеграционных тестов на Behat.

Свои вопросы можете задавать в треде – мы постараемся ответить на все.
Второй докладчик Владимир Хориков – автор книги Unit Testing Principles, Practices, and Patterns, автор блога и курсов на Pluralsight. Он расскажет про инкапсуляцию и изоляцию, а именно:
- почему важна инкапсуляция
- почему важна изоляция
- почему нельзя иметь и то и другое в большинстве случаев.
Ссылка на трансляцию митапа 23 декабря https://www.youtube.com/watch?v=UlEmtTJUwtA
Скоро начинаем!
@agratushniy и @vkhorikov огромное спасибо за доклады.
Ссылки, видео и дополнительные материалы опубликуем чуть позже.
К сожалению, не смогли ответить на все вопросы, но вы может задать их в чате.
В начале года будет интересное мероприятие https://www.meetup.com/Virtual-Domain-Driven-Design-meetup/events/275246441/

Список участников впечатляет
Rebecca Wirfs-brock
Chris Richardson
Alberto Brandolini
Nick Tune
Krisztina Hirth
Trond Hjorteland

Крайне рекомендую!