[Udemy] Чистая архитектура на практике (Денис Цветцих)
Чистая архитектура в продакшене. Миграция со слоистой архитектуры на чистую. Масштабирование чистой архитектуры
Чему вы научитесь
- Применение на чистой архитектуры в продакшен-проектах
- Масштабирование проекта от стартапа к большому проекту в соответствии с чистой архитектурой
- Руководство по перепроектированию от слоистой к чистой архитектуре
Требования
- Базовые знания C#
Описание
О чем этот курс?
Курс показывает слушателю как применять чистую архитектуру на практике при разработке бэкенда бизнес-приложений (да-да, тот самый кровавый enterprise). В качестве демо-проекта используется интернет-магазин, не по наслышке знакомый огромному количеству программистов. Дядя Боб говорит о том, что количество компонентов может меняться, однако он не говорит какие компоненты могут добавляться и для решения каких задач. Курс показывает какие компоненты нужно будет создавать кто тех, что описаны Дядей Бобом, каково содержимое каждого компонента и какими будут ссылки между компонентами.
Также вы найдете ответы на вопросы:
- Куда поместить сross-cutting сoncerns (сквозная функциональность) и хелперы, которые есть в любом реальном проекте
- Обязательно ли использовать Rich-модель и как изменится архитектура при использовании анемичной модели
- Чем отличается и где находится бизнес-логика и логика приложения
- Как организовать доступ к данным, обязательно ли создавать абстракцию для ORM в виде репозиториев
- Как изменится архитектура, если в системе будет много интеграций с внешними системами и инфраструктуры
- Какие есть подходы к реализации интерактора, какой подход лучше выбрать и почему
- Какова роль ApplicationServices в чистой архитектуре
- Контроллеры Дяди Боба и контроллеры MVC-фреймворка - это одно и то же или нет
- Всегда ли работает правило зависимостей
- Нужно ли писать обертки для всех используемых в проекте библиотек и фреймворков
Отдельно рассматривается вопрос масштабирования архитектуры. Курс показывает как реализовать в соответствии с чистой архитектурой минимальный проект, а потом масштабировать его, н потеряв соответствие чистой архитектуре. В качестве минимального проекта показан микросервис, он масштабируется до стартапа, стартап - до среднего проекта, а средний - до большого, в котором будет несколько входных точек (Backend For Frontend).
Наконец, рассматриваются два популярных демо-проекта с гитхаба, который реализованы в соответствии с чистой архитектурой. Производится обзор и анализ архитектуры этих проектов, их достоинств и недостатков (последних, увы, будет немало). И, конечно, показывается как отрефакторить эти проекты в соответствии с чистой архитектурой.
Что такое чистая архитектура?
Чистая архитектура была предложена Дядей Бобом. Она основана на созданных до него луковой и гексагональной (ее еще называют 'порты и адаптеры') архитектурах, однако содержит достаточно много нового. Чистая архитектура говорит о том, что ядром системы должны быть бизнес-сущности и бизнес-правила, независимые от инфраструктуры (например, базы данных). Следующий слой - юскейсы, это реализация логики приложения. Далее слой контроллеров, а вся инфраструктура находится на внешнем слое фреймворков. При этом действует правило зависимостей: внешние слои могут использовать внутренние, но внутренние не могут использовать внешние.
Курс отвечает на вопрос в чем похожи и чем отличаются эти три архитектуры, а также в чем их принципиальная разница со слоистой архитектурой. Курс рассказывает как реализовать проект, соответствующий сразу и чистой, и луковой, и гексагональной архитектурам.
Для кого этот курс?
Курс предназначен для backend-разработчиков бизнес-приложений, которые хотят чувствовать гордость за проделанную работу, создавая системы, в которых добавление новых фич и исправление багов вызывает радость и счастье, а не боль и страдание.
Демо-проект курса сделан на C# и ASP.NET Core, но без использования специфических фич как языка программирования, так и платформы. Так что идеи и подходы, описанные в курсе, будут понятны и полезны backend-разработчикам на любом языке программирования и любой платформе (Java, Python, JavaScript, Ruby, Go, PHP итд).
Для кого этот курс:
- Middle и Senior разработчики
- Архитекторы
- Тимлиды и Техлиды