[Udemy, Денис Цветцих] Чистая архитектура на практике (2020)

Автор: Udemy, Денис Цветцих
Название: Чистая архитектура на практике (2020)

1617949813553



Курс показывает слушателю как применять чистую архитектуру на практике при разработке бэкенда бизнес-приложений (да-да, тот самый кровавый enterprise). В качестве демо-проекта используется интернет-магазин, не по наслышке знакомый огромному количеству программистов. Дядя Боб говорит о том, что количество компонентов может меняться, однако он не говорит какие компоненты могут добавляться и для решения каких задач. Курс показывает какие компоненты нужно будет создавать кто тех, что описаны Дядей Бобом, каково содержимое каждого компонента и какими будут ссылки между компонентами.


Также вы найдете ответы на вопросы:


  • Куда поместить сross-cutting сoncerns (сквозная функциональность) и хелперы, которые есть в любом реальном проекте
  • Обязательно ли использовать Rich-модель и как изменится архитектура при использовании анемичной модели
  • Чем отличается и где находится бизнес-логика и логика приложения
  • Как организовать доступ к данным, обязательно ли создавать абстракцию для ORM в виде репозиториев
  • Как изменится архитектура, если в системе будет много интеграций с внешними системами и инфраструктуры
  • Какие есть подходы к реализации интерактора, какой подход лучше выбрать и почему
  • Какова роль ApplicationServices в чистой архитектуре
  • Контроллеры Дяди Боба и контроллеры MVC-фреймворка - это одно и то же или нет
  • Всегда ли работает правило зависимостей
  • Нужно ли писать обертки для всех используемых в проекте библиотек и фреймворков
Демо-приложение изначально реализовано по слоистой архитектуре. По ходу погружения в чистую архитектуру происходит поэтапное перепроектирование проекта в соответствии с чистой архитектурой. Так что слушатели курса получат подробный гайд по миграции любой существующей системы на чистую архитектуру.

Отдельно рассматривается вопрос масштабирования архитектуры. Курс показывает как реализовать в соответствии с чистой архитектурой минимальный проект, а потом масштабировать его, н потеряв соответствие чистой архитектуре. В качестве минимального проекта показан микросервис, он масштабируется до стартапа, стартап - до среднего проекта, а средний - до большого, в котором будет несколько входных точек (Backend For Frontend).

Наконец, рассматриваются два популярных демо-проекта с гитхаба, который реализованы в соответствии с чистой архитектурой. Производится обзор и анализ архитектуры этих проектов, их достоинств и недостатков (последних, увы, будет немало). И, конечно, показывается как отрефакторить эти проекты в соответствии с чистой архитектурой.

Что такое чистая архитектура?

Чистая архитектура была предложена Дядей Бобом. Она основана на созданных до него луковой и гексагональной (ее еще называют 'порты и адаптеры') архитектурах, однако содержит достаточно много нового. Чистая архитектура говорит о том, что ядром системы должны быть бизнес-сущности и бизнес-правила, независимые от инфраструктуры (например, базы данных). Следующий слой - юскейсы, это реализация логики приложения. Далее слой контроллеров, а вся инфраструктура находится на внешнем слое фреймворков. При этом действует правило зависимостей: внешние слои могут использовать внутренние, но внутренние не могут использовать внешние.

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

Для кого этот курс?

Курс предназначен для backend-разработчиков бизнес-приложений, которые хотят чувствовать гордость за проделанную работу, создавая системы, в которых добавление новых фич и исправление багов вызывает радость и счастье, а не боль и страдание.
Демо-проект курса сделан на C# и ASP.NET Core, но без использования специфических фич как языка программирования, так и платформы. Так что идеи и подходы, описанные в курсе, будут понятны и полезны backend-разработчикам на любом языке программирования и любой платформе (Java, Python, JavaScript, Ruby, Go, PHP итд).

Подробнее:
Для просмотра содержимого вам необходимо .

Скачать: