<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Чистая архитектура и Domain Driven Design на практике | Евгений Лукьянов №77</title>
        <link>https://peertube.lightnode.ru/videos/watch/b820b6be-0c1a-4c2d-b325-a4667d7165ba</link>
        <description>Мы продолжаем разбираться в Domain-Driven Design — на этот раз прямо на уровне кода. Несколько недель назад мы с Евгением Лукьяновым делали EventStorming для идеи сервиса аналитики Telegram-каналов: системы, которая парсит каналы, анализирует посты, считает метрики и помогает авторам понимать, о чём писать и какие темы заходят. Евгений — технический директор компании Satory и автор образовательного проекта StreamConcat. Он много лет работает с DDD и чистой архитектурой и строит на этих принципах коммерческие системы. Поэтому вместо абстрактных рассуждений мы открыли редактор и начали разбирать, как события, агрегаты и инварианты из EventStorming превращаются в Kotlin-код на Spring Boot. Полезные ссылки: https://t.me/stringconcat https://www.youtube.com/@UCJ2Tig1kywPjqjNh0mb54Ug Подписывайтесь на канал «Организованное программирование» в Telegram: https://ttttt.me/orgprog – Список подкаст-платформ (Apple Podcast, Google Podcast, Spotify, Яндекс.Музыка и другие): https://podcast.ru/1734325321 – Смотреть в ВК Видео: https://vkvideo.ru/video-224967259_456239248 🔹 Telegram-канал Организованного Программирования: https://t.me/orgprog 🔹Хекслет Клуб в Telegram https://t.me/HexletClubBot 🔹 Курсы по искусственному интеллекту: https://ru.hexlet.io/courses_artificial-intelligence В этом выпуске: — как из стикеров EventStorming получается структура домена — почему агрегаты и доменные события часто реализуют без ORM — как выглядит минимальный каркас DDD-приложения: entity, aggregate root, value object — зачем хранить события внутри сущностей и как потом их «вынимать» — как устроены use case-слои и почему бизнес-логика должна жить внутри домена — где заканчивается доменная модель и начинается инфраструктура — как связывать агрегаты через события и слушатели — транзакции, outbox-паттерн и обработка доменных событий — почему вокруг DDD так много споров и где инженеры видят оverengineering\ Таймкоды: 00:00 - Введение. Можно ли превратить DDD из теории в реальный код? 02:45 - Идея стартапа: AI-сервис для анализа Telegram-каналов и поиска тем для постов 08:51 - Главные сущности проекта: канал, пост и тематика 17:10 - Демонстрация логики агрегатов 27:45 - Базовые типы: ID, строковые ограничения и value-объекты 38:15 - Бизнес-ошибки против исключительных ситуаций 46:26 - Live-валидация на фронтенде и UX 59:22 - Когда безопасность требует дополнительных проверок 01:09:57 - Зачем использовать Mock в тестах 01:21:19 - Проблема уникальности в нагруженных системах 01:28:08 - Когда DDD действительно спасает архитектуру 01:37:37 - Vibe coding и парное программирование с AI 01:51:33 - Транзакции и работа с Postgres 02:01:56 - Заключение. DDD vs классическая архитектура #DDD #EventStorming #архитектура #программирование #разработкаПО #организованноепрограммирование #кириллмокевнин Чистая архитектура и Domain Driven Design на практике | Евгений Лукьянов №77</description>
        <lastBuildDate>Tue, 28 Jul 2026 20:04:05 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>PeerTube - https://peertube.lightnode.ru</generator>
        <image>
            <title>Чистая архитектура и Domain Driven Design на практике | Евгений Лукьянов №77</title>
            <url>https://peertube.lightnode.ru/client/assets/images/icons/icon-96x96.png</url>
            <link>https://peertube.lightnode.ru/videos/watch/b820b6be-0c1a-4c2d-b325-a4667d7165ba</link>
        </image>
        <copyright>All rights reserved, unless otherwise specified in the terms specified at https://peertube.lightnode.ru/about and potential licenses granted by each content's rightholder.</copyright>
        <atom:link href="https://peertube.lightnode.ru/feeds/video-comments.xml?videoId=b820b6be-0c1a-4c2d-b325-a4667d7165ba" rel="self" type="application/rss+xml"/>
    </channel>
</rss>