!!! ВНИМАНИЕ DEPRECATED
Данная статья более неактуальна, потому что я успел сделать еще один скачок эволюции и перейти в сторону функциональщины, поэтому дальнейшие материалы будут выходить в рамках 2-х онлайн книг:
—
Здесь я буду собирать все самые крутые и полезные ссылки по тематике DDD и всего его окружающего.
- Theory
- (NEW) https://refactoring.guru/ru – про все паттерны человеческим языком и с картинками
- DDD
- Что можно узнать о Domain Driven Design за 10 минут? – проще и быть не может
- Domain services vs Application services – самая простая статья для понимания того, в чем отличие Доменной и логики Приложения
- Vaughn Vernon — How to Use Aggregates for Tactical Design
- Записки первая и вторая на тему перехода от Anemic к Rich Domain Model
- Validation
- Видео и презентация (офигенные) на тему подхода к валидации
- Статья. Что делать если изменяются требования к уже существующим сущностям.
- CQRS
- Repository + Query Object
- Command and Query Responsibility Segregation (CQRS) на практике – Глава «Эволюция кода»
- Книга «Entity Framework Core in Action» – 4 и 10-ая главы о том, как совмещать (любой) ORM с DDD
- Clean / Onion / Hex Architecture
- Vertical Slices
- Vertical Slice Architecture — Jimmy Bogard (eng)
- Максим Аршинов — Быстрорастворимое проектирование (видео) (статья) (rus)
- Encountering «Vertical Slice Architecture»… Is it incompatible with Clean Architecture? (там внизу еще куча ссылок) (eng)
- Node.js
- Khalil Stemmler (github) – он в самых дотоншых деталях рассказывает как сделать чистый DDD на Node.js + TS + выложил несколько репозиториев с примерами проектов. Просто бомба.
- Event Driven Architecture
- https://www.youtube.com/watch?v=1hwuWmMNT4c
- https://www.youtube.com/watch?v=STKCRSUsyP0
- https://emacsway.github.io/ru/domain-events-in-ddd/ – ах как я люблю его, сделал полный обзор вопроса причиноследственных связей использования Events и их типов
- Modular Monolith
- https://github.com/kgrzybek/modular-monolith-with-ddd – проект просто с кучей документации и шикарным примером того, как делать Модули в рамках Монолита
- Examples
- https://github.com/stemmlerjs/white-label & https://github.com/stemmlerjs/ddd-forum – DDD + TS , один из лучших примеров
- https://github.com/dotnet-architecture/eShopOnContainers – невероятно залайканный пример просто огромного ПО, которое включает в себя ВСЕ. Готовьте пару десятков часов на реальный lvl up своей насмотренности.
- https://github.com/VaughnVernon/IDDD_Samples – репозиторий от самого Vaughn Vernon! На мой взгляд среднячок и имеет некоторые ошибки, но точно стоит изучения
- https://github.com/citerus/dddsample-core – очень чистенький и приятный на изучение DDD проект (если что, основной код здесь)
- https://github.com/ddd-by-examples/factory – большой и прикольный проект, включающий все (но с ужасной структуризацией папок)
- Flutter + Firebase + DDD https://resocoder.com/category/tutorials/flutter/firebase-ddd/
Кого почитать / у кого я все пизжу
- Россия
- Федор Борщев
- Игорь Камышев
- Максим Аршинов
- Александр Бындю
- Тимур Шемсединов (youtube) (курс)
- Rest of the world
- Vladimir Khorikov
- Khalil Stemmler (github)
- Он в самых дотоншых деталях рассказывает как сделать чистый DDD на NodeJS + дает несколько репозиториев с примерами проектов. Просто бомба.
- Martin Fowler
- Он каким-то образом ответил на все вопросы разработки в своей блоге https://martinfowler.com/. А еще у него ахуительный костюм.
- Vaughn Vernon
- Udi Dahan
- Можно бесконечно смотреть на огонь, воду и выступления Udi. Очень харизматичный мужик с невероятными концепциями, которыми мы, скорее всего, никогда не воспользуемся. Талеб мира IT.
- Eric Evans
- Greg Young
- Jimmy Bogard
- Chris Richardson
- Microsoft
FAQ
«Если бы ты выделил 1 секцию из всех материалов, то какую?»
Это была бы секция «Examples». Потому что сколько у вас не будет теории, не посмотрев реальный код, почти ВСЕ непонятно.
Я считаю, что для программиста важнее всего «насмотренность». Лучше всего, чтобы она появлялась на реальных проектах, но изучать чужие проекты тоже очень важный скилл. Это обучит вас быстрее вникать в новые проекты, с которыми вы будете сталкиваться.
В моей работе технического консалтера – это один из самых важных навыков.
«Что посоветуешь для ускорения изучения?»
Попробуйте написать ХОТЬ ЧТО-НИБУДЬ с применением этих концепций.
И нет, не стоит начинать с коммерческих проектов, поскольку вы совершите огромное количество ошибок из-за чего возненавидите эти концепции и бросите все к чертям собачим (большинство противников именно так и возненавидели DDD).
«Почему так много C# и Java проектов?»
Потому что все проотцы крупных архитектурных решений пишут на C# и Java.
Я даже больше скажу: C# ASP .NET имеет прям в себе кучу встроенных шаблонов и библиотек для работы в стиле DDD, Clean Architecture и так далее.
А вот вам нечего пиздеть: TypeScript разработчикам повезло больше всех, поскольку JavaScript пиздили с Java, а TypeScript с C#, так что вам должны быть знакомы все эти концепции.
«А если мне в лом все это читать?»
О, а вот это хороший вопрос:
В июле 2020 года начнет выходить серия моих курсов на тему облегченного DDD.
Ждите апдейты в Telegram @davidshekunts_blog