DDD помогает создавать сложные программные системы, которые легко поддерживать и развивать в будущем. Основные преимущества:

DDD позволяет легко тестировать приложениния

DDD помогает создавать приложения, которые легко поддерживать и развивать

DDD упрощает коммуникации с экспертами предметной области

DDD позволяет избежать создания запутанного и сильно связанного кода

Получите мгновенный бесплатный доступ к демо-урокам

Вам будут доступны 2 первых модуля: "Clean Architecture" и "Domain Model". Модули откроются сразу после регистрации.

Старт 07 октября

Курс «Domain Driven Design и Clean Architecture на языке C#»

Длительность 6 недель
Кому подойдёт этот курс

Middle
разработчикам

Чтобы вырасти до Senior не достаточно просто знать язык разработки, нужно уметь строить архитектуру приложения самостоятельно. На курсе ты создашь приложение с 0 в стиле DDD.

Senior разработчикам

Ту уже имеешь большой опыт создания приложений, но если тебе кажется, что в приложении все сильно запутанно и тесты писать "больно", то это курс для тебя. Тут мы разложим все по полочкам.

TeamLead,
CTO

Ты ощущаешь, что код, который пишет твоя команда - сложный и запутанный. Это тормозит ее скорость. На курсе узнаешь как разложить логику по слоям и решить эту проблему.
Сможете: повысить грейд, получить повышение ЗП или сменить работу
Умение проектировать приложения высоко ценится на рынке и является ключевым навыком опытного разработчика.
После курса ты сможешь

Разбивать приложение на слои

Слои позволяют разделить приложение на отдельные компоненты, каждый из которых выполняет свою функцию. Это делает приложение более гибким и легким в поддержке и тестировании. Поэтому мы уделяем этой теме особое внимание.

Формировать Domain Model приложения

Применять тактические паттерны DDD

Определять
Use Case ядра приложения

Покрывать слои различными тестами

Доменная модель, играет ключевую роль в разработке программного обеспечения. Она служит для автоматизации предметной области в приложении.

На курсе вы закодируете Domain Model и покроете ее тестами.
Доменные сущности нужны для того, чтобы инкапсулировать всю необходимую информацию об объекте предметной области и реализовать бизнес-логику.

На курсе вы научитесь кодировать разные разные типы сущностей.:
  • Сущность (Entity): уникальный объект с идентификатором и свойствами.
  • Объект-значение (Value Object): простой объект без идентичности, определяемый атрибутами.
  • Агрегат(Aggregat): отношение между объектами, когда один объект содержит другие объекты.
В Clean архитектуре Use Case — это сценарий использования, который описывает взаимодействие между различными слоями системы.

Вы научитесь их обнаруживать и кодировать. Поймете чем отличается логика приложения от логики предметной области.


Мы изучим различные виды тестирования:
  1. Модульное тестирование — проверка отдельных модулей или компонентов программного обеспечения.
  2. Интеграционное тестирование — проверка взаимодействия между различными модулями или компонентами программного обеспечения.
  3. Компонентное тестирование — проверка соответствия программного обеспечения заданным функциональным требованиям.
Делать синхронные интеграции по gRPC
Писать Unit Test и Integration Test
Обеспечивать отложенную согласованность
Публиковать Domain Event и передавать их по Kafka
Понимать когда DDD не нужен
Правильно применять паттерн Repository
Кодировать Aggregate, Value Object, Entity
Применять Onion и Clean архитектуру
Разберём все ключевые паттерны и антипаттерны
Aggregate
Anemic Domain Model
Value Object
"Протекание" слоёв
Entity
Нарушение инкапсуляции
Domain Event
Нарушение SRP
Repository и Outbox
Сильная связанность
Получите мгновенный бесплатный доступ к демо-урокам
О Clean Architecture и о недостатках Anemic Domain Model. Уроки откроются сразу после регистрации.
Практика — основа курса. Её легко применить в вашем проекте
Отработка навыков проектирования и разработки на кейсе, приближенном к реальности.
2. Бизнес-кейс
Бизнес-кейс — интернет магазин. Для старта у нас будет набор архитектурных схем и User Stories с описанием возможностей системы. Цель — разработать микросервисы "Корзина" и "Доставка" и запустить систему. Сервис "Доставка" вы создаёте полностью сами.
1. Видеоуроки с теорией
На них эксперт будет создавать микросервис "Корзина". Мы рассмотрим паттерны и антипаттерны, спикер приведёт примеры из собственного опыта, объяснит корневые причины применения тех или иных решений. А в конце даст практическое домашнее задание.
3. Практические задания
Каждый участник самостоятельно разрабатывает с нуля микросервис "Доставка". Спикер проверяет задания, даёт пояснения, демонстрирует свой вариант. В процессе прохождение программы можно будет задавать вопросы спикеру, он оперативно ответит на них в чате.
4. Результат — рабочая система из нескольких микросервисов
На примере нашего учебного кейса мы проанализировали бизнес и его задачи, выделили сервисы и начали их разработку, применили различные архитектурные паттерны, разобрались с тем, как они применяются и технической составляющей применения.
Практика — основа курса. Её легко применить в вашем проекте
Отработка навыков проектирования и разработки на кейсе, приближенном к реальности.

Программа рассчитана на 6 недель и охватывает ключевые этапы применения DDD на практике

Вы получите набор навыков, начиная от определения того, какая архитектура должна быть у сервиса, до правильной организации слоёв и доменной модели.
12 видеоуроков
по 30-40 минут
12 практических заданий
Отработка навыков через опыт
Поддержка в чате от самого эксперта
Ревью кода и подробная обратная связь
1. Clean Architecture
1. Clean Architecture
  • Hexagonal / Onion / Clean архитектура в чём разница
  • Слои приложения
  • Ports, Adapters и Application Core
  • Построение структуры приложения
2. Value Object
2. Value Object
  • Способы реализации Application Core
  • Domain Layer
  • Анемичная и богатая Domain Model
  • Реализация Value Object (объект значения)
3. Entity
3. Entity
  • Реализация Entity (сущность)
  • Признаки Entity
  • Инварианты
  • Хранение в БД
4. Aggregate
4. Aggregate
  • Реализация Aggregate (агрегат)
  • Строгая согласованность
  • Ловушка «Реального мира»
  • Размер агрегата
5. Domain Service
5. Domain Service
  • Реализация Domain Service (сервис предметной области)
  • Смысл и назначение
  • Отличие от Application Service
  • Популярные ошибки реализации
6. Repository
6. Repository
  • Создание БД с помощью EF Migration
  • Основные ошибки при реализации Repository
  • Пример реализации
  • Покрытие логики Integration тестами
7. Application Layer
7. Application Layer
  • Чем плох Application Service
  • Паттерн "Command" и "Mediator"
  • CQS подход
  • Пример реализации
8. Входящий HTTP адаптер
8. Входящий HTTP адаптер
  • Contract-first подход
  • Проектирование REST API методов с помощью Swagger Open API
  • Связь HTTP Handler и Use Case
  • Пример реализации HTTP Server
9. Исходящий Grpc адаптер
9. Исходящий Grpc адаптер
  • Знакомство с gRPC и Protobuf
  • Формирование контракта в Protobuf
  • Из какого слоя делать внешние вызовы
  • Пример реализации gRPC Client
10. Входящий Kafka адаптер
10. Входящий Kafka адаптер
  • Знакомство с Kafka
  • Формирование контракта
  • Связь Kafka Consumer и Use Case
  • Создание Kafka Consumer
11. Исходящий Kafka адаптер
11. Исходящий Kafka адаптер
  • Domain Events и Integration Events
  • Формирование контракта
  • Из какого слоя отправлять события в Kafka
  • Создание Kafka Producer
12. Eventual Consistency
12. Eventual Consistency
  • Изучение разновидностей гарантий доставки
  • Обеспечение согласованности в распределенных системах
  • Реализация паттерна Outbox
  • Финальный запуск проекта и отладка
Смотрите выступление спикера с конференции РИТ о подходах и технологиях в микросервисной архитектуре
Курс ведёт опытный разработчик
Кирилл Ветчинкин — опыт применения DDD с 2019 года.
  • Principal Engineer в Купер (ex СберМаркет)
  • Пишет код с 2002 года
  • Начинал с C++, сейчас пишет на C# и Go
  • Разработал архитектурный шаблон микросервиса в крупном Маркетплейсе с применением DDD
  • Успешно реализовал ряд высоконагруженных систем на микросервисной архитектуре для Мегафон, Теле2, БКС Брокер, СберМаркет
  • Постоянный спикер крупных IT-конференций по разработке и Архитектуре ПО: ArchDays, Highload++, Podlodka, РИТ, DevOpsDays, DotNext, DevOps Pro, MskDotNet Meetup и другие
  • Обладает степенью MBA в IT (ВШЭ)
Отзывы о предыдущих потоках курса
  • Олег Новиков
    Middle C# Разработчик
    Интересно посмотреть альтернативные подходы (не как у нас) реализации приложений и альтернативные инструменты. Понравился формат. 30 минут лекции, домашка с поднятием докеров с инфраструктурой, merge в gitlab. Мне было комфортно.
  • Андрей Горшков
    Teamlead, разработчик
    Спасибо за курс, мне было очень полезно и познавательно. Читал книги по DDD, но честно ничего не понимал, не понимал как это реализовывать в коде, всегда это как-то поверхностно было. Треннинг внес ясность.

    Мне понравились задания, все задания были полезны. Нехватило про паттерн inbox (в курсе был только outbox). Понравилось про аггрегаты и доменные события. Теперь понимаю, что такое агрегаты.
  • Игорь Лукьянчук
    Senior, C# backend
    Было интересно разобраться с адаптерами и портами, что доступ к доменной модели должен осуществляться через поведение. Вообще в целом большая приближенность к реальному проекту! Отдельно спасибо за ссылки с доп. материалами.

    Эмоции положительные, подача материала последовательная и понятная. Курс позволил многое прояснить и структурировать разрозненные знания. Большое спасибо! Удачи Вам и развития!
  • Наталья Суханова
    Java Разработчик
    Курс идеален для новых разработчиков хорошо подходит и опытным, хорошо показаны принципы и плюсы hexagon-архитектуры мне очень понравилось и было полезным, спасибо!

    - рабочий проект с реальной предметной областью
    - хорошо раскрыты несколько возможностей удалённого взаимодействия
    - хорошо раскрыта тема тестов, какие бывают и как можно тестировать интеграцию и компоненты
  • Андрей Филонов
    Techlead, разработчик
    Практика применение DDD на практически полноценном примере/продукте (не какой ни будь типовой Pet).

    Один из лучших курсов, который я проходил, методически сделан прекрасно, была и домашняя работа, и лекции, и проверка домашней работы , ясное и краткое изложение. Спасибо большое!
  • Екатерина Стрельцова
    C# разработчик
    Курс был очень информативным и полезным. Рассмотрели основные подходы к архитектуре микросервиса, применили некоторые из них на практике. Помимо этого на практике использовали актуальные технологии программирования, такие как gRPC, Swagger Open API, EF Code First, очереди сообщений, MediatR. Было интересно получить новый опыт работы с различными инструментами. В результате получили рабочий проект, который можно добавить в портфолио.
  • Игорь Яковлев
    C# разработчик
    Курс понравился, вообще я на него шел даже больше узнать об актуальных технологиях программирования и программировании микросервисов в целом, а не только об архитектуре.

    Что открыл/попробовал для себя на курсе:
    1. Гексагональная архитектура - увидел новую архитектуру, отличающуюся от той, с чем работаю.
    2. EF Code First - видел, но не работал. На работе наоборот. Особо не зашло, sql-команды ближе.
    3. gRPC - услышал первый раз. На работе Rest. В целом я всего с ним полгода. На первый взгляд рест кажется проще, но возможно просто привычнее уже. Попробовать gRPC было круто.
    4. Swagger Open API. На работе хотели повесить эту функцию на аналитиков, но отказались. Плюс-минус одно и тоже с подходом, когда сначала код.
    5. Очереди, outbox. На работе kafka+outbox/inbox, которые под капотом самописных библиотек. Пока с этим не работал, поэтому было интересно очереди попробовать.
    6. MediatR. Мне не зашло - сложно искать по коду переходы, проще обычный DI. Но headHunter говорит, что это требуется и актуально.
    7. Docker. Работал с ним в домашних целях, но было интересно поднять в нем всю инфрастурктуру проекта. На работе пока запрещен.
  • Александр Тихомиров
    C# разработчик
    Пройденный курс является логическим продолжением курса “Микросервисная архитектура” и позволяет на практике закрепить то, что ранее давалось в теории. Перед курсом повторно пересмотрел видеоматериалы курса “Микросервисная архитектура”, что очень помогло в освоении материала текущего курса. Сам курс оставил приятное впечатление. Очень надеюсь, что полученные знания помогут мне в работе. К материалам курса буду периодически возвращаться, т.к. объем новых знаний получился довольно объемным и требует дополнительного переосмысления и изменения прежней картины мира. Кириллу очень благодарен за обратную связь, быстрые ответы в чате, помощь с разбором возникающих проблем и просто за хорошо поставленную речь, которую приятно слушать! Рекомендую курс всем архитекторам, разработчикам и системным аналитикам.
  • Теймур Мамедов
    Golang разработчик
    Курс отличный с точки зрения структурирования знаний и заложения основ по DDD и что важно, дает практику для возможности закремпления полученных знаний, но точно требует продолжения.

    Моя оценка:
    1. Структурирование знаний. (9/10)
    2. Обьяснение сложных концепций доступным языком. (10/10)
    3. Наглядные илюстрации и примеры проектов на разных языках программирования (9/10)

    Продублирую дополнительно что хотелось еще хотелось бы раскрыть:
    Сейчас с основной задачей с которой приходится сталкиваться - это изминение менталитета разработчиков на то, как можно иначе писать код и показать ценность этого. Интересно было бы в рамках данного курса услышать успешные истории и рекомендации, как можно начать внедрять практики DDD и Clean Architecture в повседневную деятельность разработчиков.
  • Михаил Бобылев
    Java Разработчик
    Курс ориентирован на C#, а я его выполнял на Java. Соответственно, многие вещи пришлось изучать самостоятельно, что порой приводило к затыкам, на преодоление которых уходило время.

    Хороший курс, наглядно показывает ddd в микросервисах и подключение портов и адаптеров.
  • Алексей Портнов
    Системный аналитик
    Курс является гармоничным развитием курса "Микросервисная архитектура" с акцентом на проработку архитектуры на примере сервиса Доставки. Для меня, как системного аналитика, курс был достаточно сложным, его прохождение заняло все свободное время, однако наличие эталонного решения и чата с поддержкой, а так же логически последовательно изложенный материал способствовали успешному усвоению материалов курса. Для прохождения курса необходимы базовые знания работы с ORM, DI, конфигурирования приложения, принципы работы c web приложениями. Основная ценность курса заключается в предоставлении комплексного материала по разработке готового микросервиса который можно использовать в рабочих проектах.
Обратная связь и поддержка от спикера в течение курса
Проверка заданий
Ответы на вопросы
На тарифах Premium и VIP эксперт даёт обратную связь на каждое задание.
В закрытом чате эксперт лично ответит на ваши вопросы.
Доп. материалы
К каждому уроку, для более глубокого погружения.
Формат курса: видеоуроки + 5 живых эфира с разборами домашек в Zoom
И ответами на вопросы участников от эксперта курса — Кирилла Ветчинкина.
Стоимость программы
Standard
  • Видеоуроки, доступ на 1 год
  • Возможность задавать вопросы в чате
  • Домашние задания к урокам (без проверки)
  • 5 живых эфира с вопросами и разборами домашек в Zoom
  • Сертификат об участии
24 900 ₽
30 000 ₽
Регистрация
Premium
  • Всё, что в Standard
  • +
  • Проверка всех домашних работ
  • Code review сокурсников
  • Возможность сдать ДЗ в течение года
  • Дополнительные модули
29 900 ₽
35 000 ₽
Регистрация
VIP
  • Всё, что в Premium
  • +
  • 3 индивидуальных Q&A-сессии по 60 минут
  • 3 месяца персональной поддержки в чате с момента покупки
90 000 ₽
100 000 ₽
Регистрация
Компаниям: обучите своих сотрудников
Напишите нам, мы выставим вам счёт для оплаты, а после выдадим доступ к курсу:
Есть два формата:
1. В общей группе с другими учениками
2. Группы только из ваших сотрудников
info@microarch.ru
Получите мгновенный бесплатный доступ к демо-урокам
О Clean Architecture и о недостатках Anemic Domain Model. Уроки откроются сразу после регистрации
Отвечаем на популярные вопросы