Для тех, кто устал от хаоса в коде: строим микросервис с чистой архитектурой, предсказуемыми тестами и бизнес-логикой в стиле DDD

Domain Driven Design и Clean Architecture на языке Go

Разработаете сервис с применением DDD и Clean Architecture
Реальный кейс
Научитесь разбивать приложение на слои, кодировать Domain Model
Добавите в свое портфолио проект, которым можно гордиться
Создадите сервис, который легко адаптировать под ваши задачи
Кирилл Ветчинкин
Автор курса, опыт применения DDD с 2019 года. Действующий архитектор Авито. Ex Staff Engener "Купер".
Портфолио
Практика
Шаблон
Онлайн
Старт 21 января
6 недель

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

Курс поможет заложить правильные принципы и подходы, чтобы избежать распространённых ошибок на начальных этапах карьеры, что создаст фундамент для эффективного роста в будущем.

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

Научитесь применять сложные аспекты DDD, такие как агрегаты, доменные события и репозитории. Сможете интегрировать DDD с другими подходами: MSA, CQS и Clean Architecture.
2

TeamLead,
CTO

Курс поможет вашей команде выстроить архитектурно грамотные и гибкие решения. Примеры сервисов из курса станут универсальными шаблонами, которые вы сможете взять за основу в вашей компании.
3
1
Кому подойдёт этот курс

“Наш код был сложным и непонятным”

В команде мы страдали от того, что код был слишком запутанным: одна фича затрагивала десятки файлов, а новые разработчики тратили месяцы, чтобы вникнуть.

“В команде все видят DDD по-разному”

Работая в команде, мы часто спорили, что такое доменная модель, как выделять агрегаты, где должна быть бизнес-логика.

“Когда бизнес менял требования —
все разваливалось”

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

“Тесты были слишком сложными”

Мы использовали слишком много моков, и тесты начинали ломаться при малейших изменениях в коде.

“Не понимал, как выделять доменную модель и её компоненты”

Агрегаты, value objects, доменные события — всё это было для меня абстрактными понятиями.

“Накопилось много теории, но в голове был хаос”

До курса я прочитал книги по DDD, статьи, смотрел выступления, но всё это оставалось разрозненным.
Не знал, как начать применять эти знания на практике.
С какими проблемами приходят на курс?

“Накопилось много теории, но в голове был хаос”

“Наш код был сложным и непонятным”

Реализуем HTTP, gRPC и Kafka адаптеры

Реализуете связь бизнес-логики и инфраструктуры. Научитесь формировать порты и адаптеры, связывать их с бизнес-логикой.
Что будет на курсе

Напишем много
тестов

Научитесь писать простые и понятные модульные и интеграционные тесты, покрывая бизнес-логику и инфраструктуру.
Заберете с собой навсегда

Разберем все тактические паттерны DDD

Научитесь выделять Value Object, проектировать Entity и реализовывать Aggregate, избегая популярных ошибок.

Создадим полноценный микросервис

Освоите Clean Architecture, включая применение Hexagonal и Onion подходов, а также научитесь выстраивать четкую структуру слоев в микросервисах.
После прохождения курса вы сможете

Реализуем Use Case и
Domain Service

Освоите работу с Domain Service, примените CQS подход, а также реализуете команды и медиаторы, связывая их с Use Case.

Знания DDD может повысить вашу ценность как специалиста

Многие компании ищут разработчиков, умеющих работать с этим подходом
Выберите подходящий тариф и запишитесь на курс
Востребованность и зарплаты:
Senior-специалист
с опытом более 3 лет
450 000+ ₽
Middle-специалист
с опытом от 1 до 3 лет
250 000+ ₽
100 000+ ₽
Junior-специалист
с опытом от 1 года
Кодировать Aggregate, Value Object, Entity
Делать интеграции по
gRPC, HTTP, Kafka
Правильно применять паттерн Repository и Adapter
Писать тесты, которые легко поддерживать
Обеспечивать согласованность
событий
Выстраивать архитектуру приложения с нуля
Публиковать Domain Event и передавать их по Kafka
Ваше резюме будет выделяться проектом, который демонстрирует ваше глубокое понимание архитектуры ПО

Проект в портфолио или резюме

Итоговый проект станет универсальными шаблоном, который вы сможете взять за основу в вашей компании

Готовый шаблон микросервиса

Обосновывать применение
DDD в команде
Получите мгновенный бесплатный доступ к демо-урокам
  • оцените актуальность и полезность тем курса для вас
  • узнаете как устроены уроки, какой объём информации даётся за одно занятие
Обучение проходит через практику на кейсе

Видеуроки

На них эксперт шаг за шагом создаст микросервис "Корзина", раскрывая ключевые паттерны DDD и объясняя, как избежать ошибок. Смотрите лекции в любое время.

Чат с экспертом

В закрытом чате эксперт лично ответит на ваши вопросы.
Без ответов вы точно не останетесь.

Практика на реальном кейсе

На курсе вы разработаете сервис “Диспетчеризации заказов”, решая реальные задачи бизнеса.

Персональная обратная связь

Куратор проведет ревью кода, даст подробную обратную связь и поможет разобраться со сложными моментами
6 недель обучения
12 заданий на кодирование
80% курса — практика
Регулярно обновляем курс
Программа курса
Содержание
Практика
Урок 1: Dependency Inversion Principle
Урок 2: Отличие Hexagonal / Onion / Clean архитектуры
Урок 3: Роль слоев приложения
Урок 4: Реализация структуры микросервиса в соответствии с Clean Architecture
ДЗ: Определить слои приложения в соответствии с Clean Architecture
Содержание
Практика
Урок 1: Способы реализации Application Core
Урок 2: Domain Layer
Урок 3: Анемичная и богатая Domain Model
Урок 4: Реализация паттерна Value Object (объект значения)
ДЗ: Реализовать Value Object «Location» в соответствии с бизнес-правилами
Содержание
Практика
Урок 1: Реализация паттерна Entity (сущность)
Урок 2: Признаки Entity
Урок 3: Инварианты
Урок 4: Хранение в БД
ДЗ: Реализовать Value Object “Location” в соответствии с бизнес-правилами
Содержание
Практика
Урок 1: Реализация паттерна Aggregate (агрегат)
Урок 2: Строгая согласованность
Урок 3: Ловушка «Реального мира»
Урок 4: Размер агрегата
ДЗ: Реализовать Aggregate «Courier» в соответствии с бизнес-правилами
Содержание
Практика
Урок 1: Реализация паттерна Domain Service (сервис предметной области)
Урок 2: Смысл и назначение
Урок 3: Отличие от Application Service
Урок 4: Популярные ошибки реализации
ДЗ: Реализовать в Domain Service алгоритм диспетчеризации заказов
Содержание
Практика
Урок 1: Создание схемы БД с помощью Migrations
Урок 2: Основные ошибки при реализации Repository
Урок 3: Реализация паттерна Repository
Урок 4: Покрытие логики Integration тестами
ДЗ: Реализовать Repository для Aggregate «Order» и «Courier»
Содержание
Практика
Урок 1: Чем плох Application Service
Урок 2: Реализация паттерна "Command"
Урок 3: CQS подход
Урок 4: Пример реализации
ДЗ: Реализовать все Use Case приложения, применить CQS
Содержание
Практика
Урок 1: Contract-first подход
Урок 2: Знакомство с Swagger Open API
Урок 3: Связь HTTP Handler и Use Case
Урок 4: Генерация HTTP Server из контракта
ДЗ: Реализовать все Use Case приложения, применить CQS
Содержание
Практика
Урок 1: Знакомство с gRPC и Protobuf
Урок 2: Генерация gRPC Client из контракта
Урок 3: Из какого слоя делать внешние вызовы
Урок 4: Пример реализации порта и gRPC адаптера
ДЗ: Реализовать исходящий адаптер. Сгенерировать gRPC Client из Protobuf
Содержание
Практика
Урок 1: Знакомство с kafka и Protobuf
Урок 2: Генерация Integration Event из контракта
Урок 3: В каком слое обрабатывать сообщения Kafka
Урок 4: Создание Kafka адаптера (consumer)
ДЗ: Реализовать входящий адаптер. Сгенерировать Integration Event из Protobuf
Содержание
Практика
Урок 1: Реализация паттерна Domain Event (событие предметной области)
Урок 2: Отличия Domain Events и Integration Events
Урок 3: Где порождать Domain Events
Урок 4: Создание Kafka адаптера (producer)
ДЗ: Реализовать Domain Event и исходящий адаптер. Сгенерировать Integration Event из Protobuf
Содержание
Практика
Урок 1: Разновидности гарантий доставки
Урок 2: Обеспечение согласованности в распределенных системах
Урок 3: Реализация паттерна Outbox
Урок 4: Реализация паттерна Polling publisher
ДЗ: Обеспечить согласованность данных. Провести отладку и финальный запуск проекта
ex Staff Engineer в «Купер», ex Head of Backend в «БКС Брокер»
Разработал архитектурный шаблон микросервиса с применением DDD в «СберМаркет»
Спикер и автор курса — Кирилл Ветчинкин
Постоянный спикер крупных IT-конференций по разработке и Архитектуре ПО: ArchDays, Highload++, Podlodka, РИТ
Действующий архитектор в «Авито»
15 лет
опыт разработки
6+ лет
опыт применения DDD
9000+ часов
практики на реальных проектах
Спикер и автор курса — Кирилл Ветчинкин
ex Staff Engineer в «Купер», ex Head of Backend в «БКС Брокер»
Разработал архитектурный шаблон микросервиса с применением DDD в «СберМаркет»
Постоянный спикер крупных IT-конференций по разработке и Архитектуре ПО: ArchDays, Highload++, Podlodka, РИТ
Действующий архитектор в «Авито»
6+
лет опыт применения DDD
15
года опыт программирования
9000+
часов практики на реальных проектах
Выберите подходящий тариф
До повышения цены осталось:
32 : 15 : 39 : 08
Дни
Часы
Минуты
Секунды
Физическим лицам
Юридическим лицам
Количество мест: неограниченно
Standard
  • Доступ к 12 модулям курса на 1 год
  • Чат с возможностью задавать вопросы
  • Сертификат об участии
  • Проверка всех домашних работ
  • Обзор кода сокурсников
  • Возможность сдать ДЗ в течение года
  • Бонусные модули
  • 3 персональных консультации по 60 минут
  • Возможность обсудить свой кейс с экспертом
Осталось < 2 мест
VIP
  • Доступ к 12 модулям курса на 1 год
  • Чат с возможностью задавать вопросы
  • Сертификат об участии
  • Проверка всех домашних работ
  • Обзор кода сокурсников
  • Возможность сдать ДЗ в течение года
  • Бонусные модули
  • 3 персональных консультации по 60 минут
  • Возможность обсудить свой кейс с экспертом
Бонусы:
  • Структурные шаблоны проектирования
  • SOLID принципы программирования и разработки программного обеспечения
  • GRASP шаблоны проектирования
Бонусы:
  • Структурные шаблоны проектирования
  • SOLID принципы программирования и разработки программного обеспечения
  • GRASP шаблоны проектирования
Осталось < 7 мест
Premium
  • Доступ к 12 модулям курса на 1 год
  • Чат с возможностью задавать вопросы
  • Сертификат об участии
  • Проверка всех домашних работ
  • Обзор кода сокурсников
  • Возможность сдать ДЗ в течение года
  • Бонусные модули
  • 3 персональных консультации по 60 минут
  • Возможность обсудить свой кейс с экспертом
до 3 декабря
32 900 ₽
после 3 декабря
34 900 ₽
до 3 декабря
60 000 ₽
после 3 декабря
70 000 ₽
до 3 декабря
37 900 ₽
после 3 декабря
39 900 ₽
Дни
Часы
Минуты
Секунды
VIP
  • Доступ к 12 модулям курса на 1 год
  • Чат с возможностью задавать вопросы
  • Сертификат об участии
  • Проверка всех домашних работ
  • Обзор кода сокурсников
  • Возможность сдать ДЗ в течение года
  • Бонусные модули
  • 3 персональных консультации по 60 минут
  • Возможность обсудить свой кейс с экспертом
Standard
  • Доступ к 12 модулям курса на 1 год
  • Чат с возможностью задавать вопросы
  • Сертификат об участии
  • Проверка всех домашних работ
  • Обзор кода сокурсников
  • Возможность сдать ДЗ в течение года
  • Бонусные модули
  • 3 персональных консультации по 60 минут
  • Возможность обсудить свой кейс с экспертом
Premium
Скидки на  юр. лиц
не  распространяются.

Это связано с  издержками на  документооборот — работа юристов, договор, акты.
45 000 ₽
Бонусы:
  • Структурные шаблоны проектирования
  • SOLID принципы программирования и разработки программного обеспечения
  • GRASP шаблоны проектирования
Бонусы:
  • Структурные шаблоны проектирования
  • SOLID принципы программирования и разработки программного обеспечения
  • GRASP шаблоны проектирования
  • Доступ к 12 модулям курса на 1 год
  • Чат с возможностью задавать вопросы
  • Сертификат об участии
  • Проверка всех домашних работ
  • Обзор кода сокурсников
  • Возможность сдать ДЗ в течение года
  • Бонусные модули
  • 3 персональных консультации по 60 минут
  • Возможность обсудить свой кейс с экспертом
Скидки на  юр. лиц
не  распространяются.

Это связано с  издержками на  документооборот — работа юристов, договор, акты.
80 000 ₽
Скидки на  юр. лиц
не  распространяются.

Это связано с  издержками на  документооборот — работа юристов, договор, акты.
40 000 ₽
Компаниям: обучите своих сотрудников
Напишите нам, мы выставим вам счёт для оплаты, а после выдадим доступ к курсу:
Есть два формата:
1. В общей группе с другими учениками
2. Группы только из ваших сотрудников
info@microarch.ru
Получите мгновенный бесплатный доступ к демо-урокам
  • оцените актуальность и полезность тем курса для вас
  • узнаете как устроены уроки, какой объём информации даётся за одно занятие
Курс прошли уже более
100 человек
Вот некоторые отзывы
«Теперь я не просто пишу код — я моделирую предметную область»
Пришёл с базовыми знаниями Golang и скромным опытом работы с Transaction Script, а ушёл с глубоким пониманием Domain-Driven Design и уверенностью в проектировании сложных систем.

Теперь я не просто пишу код — я моделирую предметную область, делая его гибким, масштабируемым и поддерживаемым!
Сергей (Go разработчик, Junior)
«Даёт практические навыки, которые сразу можно применять в бою»
Если вы пишете на Golang и хотите перейти от простых CRUD-приложений к профессиональному проектированию сложных систем — этот курс обязателен к изучению! Даёт не только теорию, но и практические навыки, которые сразу можно применять в бою.

Решил несколько рабочих задач с применением DDD, и коллеги были впечатлены!
Максим (TechLead)
«Были интересные обсуждения в чате, круто было услышать разные подходы»
Отличный практический пример, очень интересно было в процессе разбираться с паттернами.

Были интересные обсуждения в чате, круто было услышать разные подходы, посмотреть кто как делает.
Филип (Go разработчик, Middle+)
«Больше никакого размазанного кода по всему проекту»
Осознал, как правильно инкапсулировать бизнес-правила внутри агрегатов.

Больше никакого размазанного кода по всему проекту — теперь вся логика сосредоточена в одном месте, и её легко тестировать!
Данияр (Go разработчик, Senior)
«Перетащила отдельные практики в свою работу не ломая основной процесс»
Суперский курс, у меня в голове всё сложилось!

Я поняла, как и что буду применять в своих реальных проектах, увидела плюсы и минусы DDD.

Перетащила отдельные практики в свою работу не ломая основной процесс. Появились мысли, наметила план по улучшению кодовой базы.
Анна (Go разработчик, Middle+)
«Очень хорошо проработанные ДЗ. Все время затраченное на них проходит с пользой»
Наиболее ценны были разъяснения концепций и переход от теории к практике.

Очень хорошо проработанные ДЗ. Все время затраченное на них проходит с пользой, без необходимости набивки лишнего бойлерплейта или ненужных уточнений задания.
Анастасия (Go разработчик, Junior)
«Шел даже больше узнать об актуальных технологиях программирования»
Курс понравился, вообще я на него шел даже больше узнать об актуальных технологиях программирования и программировании микросервисов в целом, а не только об архитектуре.

Что открыл/попробовал для себя на курсе:
1. Гексагональная архитектура - увидел новую архитектуру, отличающуюся от той, с чем работаю.
2. Code First - видел, но не работал. На работе наоборот. Особо не зашло, sql-команды ближе.
3. gRPC - услышал первый раз. На работе Rest. В целом я всего с ним полгода. На первый взгляд рест кажется проще, но возможно просто привычнее уже. Попробовать gRPC было круто.
4. Swagger Open API. На работе хотели повесить эту функцию на аналитиков, но отказались. Плюс-минус одно и тоже с подходом, когда сначала код.
5. Очереди, outbox. На работе kafka+outbox/inbox, которые под капотом самописных библиотек. Пока с этим не работал, поэтому было интересно очереди попробовать.
6. Docker. Работал с ним в домашних целях, но было интересно поднять в нем всю инфрастурктуру проекта. На работе пока запрещен.
Игорь (разработчик)
«Рекомендую курс всем архитекторам, разработчикам и системным аналитикам»
Пройденный курс является логическим продолжением курса “Микросервисная архитектура” и позволяет на практике закрепить то, что ранее давалось в теории.
Перед курсом повторно пересмотрел видеоматериалы курса “Микросервисная архитектура”, что очень помогло в освоении материала текущего курса.

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

К материалам курса буду периодически возвращаться, т.к. объем новых знаний получился довольно объемным и требует дополнительного переосмысления и изменения прежней картины мира.
Кириллу очень благодарен за обратную связь, быстрые ответы в чате, помощь с разбором возникающих проблем и просто за хорошо поставленную речь, которую приятно слушать!
Рекомендую курс всем архитекторам, разработчикам и системным аналитикам.
Александр (разработчик)
«Кус дает практику для возможности закремпления полученных знаний»
Сейчас с основной задачей с которой приходится сталкиваться - это изминение менталитета разработчиков на то, как можно иначе писать код и показать ценность этого.

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

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

Для прохождения курса необходимы базовые знания работы с ORM, DI, конфигурирования приложения, принципы работы c web приложениями.
Основная ценность курса заключается в предоставлении комплексного материала по разработке готового микросервиса который можно использовать в рабочих проектах.
Алексей (системный аналитик)
Отвечаем на популярные вопросы
Начните бесплатно
Урок 1:
Анемичная доменная модель
  • Богатая доменная модель
  • Защита инвариантов
  • Улучшение тестируемости
  • Тактические паттерны DDD
Следующий урок:
Богатая доменная модель