Тёмный

Как не провалиться на собеседовании отвечая про DDD | Domain Driven Design | Jetbulb 

Jetbulb
Подписаться 22 тыс.
Просмотров 22 тыс.
50% 1

Опубликовано:

 

20 сен 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 58   
@xmahz
@xmahz Год назад
Столько принципов, а по итогу работаешь с Легаси кодом в монолите, с постоянными самоповторами 🫠
@Jetbulb
@Jetbulb Год назад
🤣 жЫза
@khvastov.maksym
@khvastov.maksym Год назад
Всё так. И смотришь на этот "большой красивый мир микросервисов" как через щель в заборе :( С другой стороны - для того мы и развиваемся, чтобы иметь возможность выбирать проекты, на которых нам бы хотелось работать. Правда сейчас ситуация на рынке не фонтан, выбирать не приходится.
@xmahz
@xmahz Год назад
@@khvastov.maksym я вот, сижу выбираю и норм)
@khvastov.maksym
@khvastov.maksym Год назад
@@xmahz Я тоже выбираю, и даже по собесам хожу, но команды сейчас балованые, имхо)
@xmahz
@xmahz Год назад
@@khvastov.maksym Они всегда такие мне кажется)
@olegbaranich
@olegbaranich Год назад
Спасибо за замечательный контент! У меня 4 года опыта и почти каждое собеседование начинается с вопросов архитектуры :) очень полезное видео
@egorzdioruc7831
@egorzdioruc7831 11 месяцев назад
Очень круто, спасибо! Пока что это самый лучший урок по DDD из тех, что я видел Очень хотелось бы, что бы ты также упоминул о уровнях DDD и также о других модулях приложения, таких как Service, Factory, Store, Repository и т.д. Но и так в целом у тебя получился весьма весомый и хорошо спроектированный урок Кайф)
@I.Karabadjak
@I.Karabadjak Год назад
Постоянно слежу за вашими выпусками, официально уровень не джун, но, признаюсь, все равно периодически открывается либо то, о чем забыл, либо какие-то нюансы о которых не знал. Смотрю ваши видео на пару с документацией: чуть что сразу лезу в детали. Макс, очень бы хотелось разборы каких-то интересных или может просто распространенных кейсов/задач с использованием тех или иных фреймворков или паттернов проектирования. Разнообразного опыта у вас много, поделитесь практикой)
@Jetbulb
@Jetbulb Год назад
Вот уже начали пробовать делать видео с разбором задач с собеседований)) Как раз должно быть следующее на подобную тематику
@borisn879
@borisn879 Год назад
Еще: CQRS, UseCase\Interactor, Domain events, domain service, транзакционная цепочка агрегатов, потоки между агрегатами, субдоменами, трилема, признаки чистоты и полноты модели. Вынесение части логики в app, чтобы сохранить чистоту домена и холивар на этот счет. Связь чистой кричащей архитектуры дяди Боба, гексагонал и ДДД. Типичные паттерны в ДДД.
@АлексейЩеблыкин-ь9ы
Я так понимаю это уже более продвинутые топики) Можешь поделиться где ты о них читал, а то некоторые термины, по типу транзакционной цепочки агрегатов ни в книге Эванса, ни в интернете не нашел, а любопытно.
@borisn879
@borisn879 Год назад
@@АлексейЩеблыкин-ь9ы Два типа согласованности: транзакционная согласованность агрегата и итоговая согласованность. Итоговая согласованность может потребовать провести цепь транзакций по нескольким агрегатам. Как я понимаю это, изменение состояния в Счетах по событию Оплата запускает цепь транзакций по другим агрегатам (в другие ограниченные контексты). И тут проблема, как это реализовать (события домена, например, сага..) и как компенсировать в случае сбоев. А сбой может быть технический или же бизнес-процессный, например, доставка с текущего момента не может отвезти 6м стрелу, т.к. автопарк изменился. Но в итоге, каждый агрегат должен сохранить consistency и инвариант.
@ПавелК-ю9э
@ПавелК-ю9э Год назад
Огонь, спасибо. Очень клёво, конечно каждый разработчик должен знать.
@9_vko
@9_vko Месяц назад
Видео очень полезное)) Лучше чем куча бесполезных статей в интернете)
@НиколайДемидов-ф6у
@НиколайДемидов-ф6у 5 месяцев назад
Немного разбираюсь в DDD, могу сказать, что у ведущего приятная речь, но объясняет на четверочку.
@ksyaneone
@ksyaneone 11 месяцев назад
Смотрел доклад какого то типа, ничего не понял. У тебя очень доступно вышло объяснить. Спасибо
@borisn879
@borisn879 Год назад
ДДД - это таки моделирование процессов бизнеса, бизнес-сущности как база. Бизнес платит за приятные Event: order has been paid, State:delivered. Агрегат определяется бизнес-транзакцией, т.е. процессом. BC - на основе ценности, очевидности и потока событий. Цель бизнеса - что-то менять. Цель программы - тоже что-то менять. Поэтому event, state, side-effect выходят на первый план.
@Alexander-dg5id
@Alexander-dg5id 5 месяцев назад
Про то, что мы вынуждены всегда доставать агрегат целиком чтобы изменить одну его запчасть - не правда. Иногда это даже вредно. Мы запросто можем достать одну сущность из всего агрегата, и модифицировать ее. Важно только, чтобы результатом работы не стало нарушение консистентности агрегата. Но работать точечно - можно, и часто - нужно.
@borisn879
@borisn879 Год назад
17:24 entity Order имеет ambient context из-за времени. Т.е. получается impure. Как передать получение Времени? Как сервис? Как plain value? 20:31 entity Order.client - вопрос, нужна ли сущность клиента? Order не нужно фото клиента, его имя и хобби. Получается, что Client в данном BoundedContext может иметь лишь Id.
@oldzas
@oldzas 10 месяцев назад
Понравилась подача, подписался, лайк
@Chaevnicher
@Chaevnicher 24 дня назад
Абсолютно непонятно из данного видео как вельюобджекты должны храниться в бд. В виде джейсон в свойстве энтити или как? Айдишника-то нет… но это затруднит бизнесовые выборки типа «список пользователей, заплативших более 10 раз от 100₽ за последние 20 лет»… в чем смысл данного примера?
@АртурЗарипов-б2й
@АртурЗарипов-б2й 9 месяцев назад
Большое спасибо!
@alextret6787
@alextret6787 Год назад
Отличное видео и канал. Спасибо!
@borisn879
@borisn879 Год назад
Вопрос про VO. В домене используется VO\IdInterface, требующий метод isEqualsTo. В infrastructure есть реализация этого интерфейса, например, UUIDv7. Каждая реализация имеет свой метод isEqualsTo, понятно, что для UUIDv7 и UUIDv4 способы разные. Причем, реализации имеют зависимость от vendor amsey\uuid, который обеспечивает проверку isEqualsTo. Domain model Entity используют VO\IdInterface, куда мапится infrastructure\UUIDv7. Например, SomeRepository->nextID возвращает VO\IdInterface в виде infrastructure\UUIDv7. Вопрос - это норма? Тут видна не-чистота Домена через VO\IdInterface.
@borisn879
@borisn879 Год назад
26:41 стоит ли делать такой большой Aggregate? Factory для него будет объемный. Этот Aggregate имеет одну транзакционную границу? Бизнес-логика должна быть вшита в Aggregate или injection\delegate и куда? А если бизнес-логика в стиле "не более трех за последний год", то race condition и concurency проблема, транзакция...
@vitaliiboichuk8287
@vitaliiboichuk8287 Год назад
Дуже важлива інформація! Було б чудово, якщо б ви ще розглянули забезпечення транзакційності в скоупі декількох мікросервісів. Дуже дякую за вашу працю!
@Jetbulb
@Jetbulb Год назад
Гарна пропозиція. Записав в пул тем для відео. Респект 👍
@borisn879
@borisn879 Год назад
15:08 интересны связи между BC, есть ли bidirect потоки, насколько высок coupling. Как конкретно реализованы User & Client, если они мапятся в одну сущность БД, например.
@inzagher
@inzagher Год назад
DDD уже на джуна спрашивают?) Видео пока не смотрел, тема определенно, интересная и важная.
@xmahz
@xmahz Год назад
Это бесполезно, джун тебе не назовет зачем нужен DDD, только если не заучит теорию)
@Jetbulb
@Jetbulb Год назад
На джуна конечно же нет. Но сам понимаешь, все зависит от собеседующего и его желаний. Как по мне, DDD для middle+
@kazbowski
@kazbowski Год назад
Привет, спасибо за такой информативный видос :) Скажи пожалуйста, ты когда ходил по собесам, тебя спрашивали такие заезженные вопросы про Java core?
@Jetbulb
@Jetbulb Год назад
Привет )) Ох, чего только не спрашивают. Бывают крутые собеседования, а бывают скучные и бессмысленные
@baxiskerimzade2690
@baxiskerimzade2690 Год назад
Спасибо!)
@lWeRl
@lWeRl Год назад
На примере разбора ValueObject. Как у нас в базе лежит price? Если оба поля по итогу лежат в order - то зачем ее отделять. Если поля вынесены в отдельную таблицу, то у них появляется Id и они превращаются в Entity. А если они в одной таблице, то мы пишем на Order gerPrice который возвращает новый объект типа price?
@borisn879
@borisn879 Год назад
Я не спец, но PriceValueObject хранит фракцию и валюту. Тут не может быть идентификатора. Заказ хранит итоговую стоимость как фракция и валюта. В домене есть понятие Price (в виде PriceValueObject), а как оно будет мапиться туда и обратно - дело десятое. Домен не знает, что у вас БД. Ему нужны лишь понятия, заполненные данными. Домен не зависит от инфраструктуры.
@АлександрПанцерный
Для понимания вашего примера - это может быть массив или иная структура в таблице order
@rudinandrey
@rudinandrey Год назад
в принципе это такой фильтр, как и СОЛИД например, очень хорошо и понятно рассказал.
@Abdul-hy4cy
@Abdul-hy4cy Год назад
16:50 - всё видео звучит очень абстрактно
@JohnJohn31595
@JohnJohn31595 Год назад
thanks
@selub1058
@selub1058 3 месяца назад
Дадада...микросервис на базе express задеплоинного монолитом в AWS Lambda (типа для того, чтобы быстро было и по минималке использовать нативный API Gateway....а по факту потому что в команде нет человека с соответсвующей квалификацией )
@dsalodki
@dsalodki 9 месяцев назад
Можно было гораздо короче
@jellyfish6265
@jellyfish6265 10 месяцев назад
чем больше узнаю о ддд, тем больше понимаю, что эта муть нафиг не нужна
@maxfun7978
@maxfun7978 Год назад
Ну очень много лишнего текста.
@madcalm2024
@madcalm2024 Год назад
хм... про язык написания техзаданий... чтобы заказчики тоже шевелили извилинами и не перекладывали это на программистов
@Jetbulb
@Jetbulb Год назад
а что делать когда заказчик и есть программист, но извилины не извилятся? )))) З.Ы. Риторический вопрос
@АлександрС-г8ж
@АлександрС-г8ж Месяц назад
Макс, привет. Спасибо за твои видео. Трудно спорить с тем, что написано на заставке. Но на заднем фоне у тебя солдат НАТО (ошибаюсь?). Именно они бомбили столицу Югославии, + Ирак, Ливия и тд. Это сочетание текста и картинки вызвало сильное возмущение. Не мог бы пояснить, считаешь ли ты агрессией те войны, о которых я упомянул и как картинка соотносится с текстом заставки?
@margaritaiazyvanova4541
@margaritaiazyvanova4541 8 месяцев назад
Спасибі очень полезно и спасибо за поддержку💛💙
@halalcapital
@halalcapital Год назад
Макс, что думаешь о таком подходе к собеседованиям? ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-SMYs5CKCk9M.html Мне кажется интересный подход, может проведешь собес в таком стиле?)
@Jetbulb
@Jetbulb Год назад
Посмотрел))) Ничего интересного не нашел. Если честно. Ощущение, что просто хайпанули на интересной теме. Идея обновленных подоходны к интервью классная, но как-то неконструктивно получилось. Потому я Евгению не верю 🤨 Ощущение, что под копирку рассказывает, а не то что в ИТ сегодня происходит. А так, это его субъективное мнение. В итоге рынок показывает, что работает, а что нет. Легко сказать: «Весь мир не используется мою крутую идею». Абсолютно другое дело, донести свою мысль в мир и сделать ее живой. Ну а другое, не стоит путать попытку найти фундаментального инженера с некомпетентностью некоторых случаев. Далеко не всегда интервью сливается в холодную теорию. Все зависит от ситуации. Как-то так 🤓
@halalcapital
@halalcapital Год назад
@@Jetbulb истина где то рядом)
@alevadnaya
@alevadnaya Год назад
Этот аспект вообще плохо понимаем всеми.
@borisn879
@borisn879 Год назад
Из-за этого холивары и "мой ДДД лучше твоего". Чем выше абстракция, тем больше вариантов реализации.
Далее
А вам, слабо?
00:22
Просмотров 44 тыс.
What is DDD - Eric Evans - DDD Europe 2019
57:06
Просмотров 260 тыс.