Почему мы выбрали Чистую архитектуру?

Возможно, кто-то скажет, что моё знакомство с Чистой архитектурой произошло преждевременно и скорее всего этот человек будет прав... Но только отчасти)

За моими плечами ещё нет ни одного приложения, выпущенного в продакшн. Я ещё не столкнулась с проблемами разросшегося легаси-кода, который стало невозможно поддерживать. И в целом, смотрю на мир сквозь розовые очки новичка, который только-только выпорхнул с курса по Django с его MVT подходом. Так зачем же мне понадобилась Чистая архитектура?

В августе 2024 года я присоединилась к клубу по Web-разработке, чтобы получить опыт работы в команде и прокачать свои технические навыки. Нас распределили в команды по 5 человек, дали ТЗ (системы управления проектами) и направление, в котором копать дальше - "начните с архитектуры".

В принципе мы были вольны не прислушиваться и написать очередное MVT приложение на Django. Особенно, если учитывать, что по итогу дальше CRUD мы всё равно не ушли. Но мы решили - почему бы не попробовать? И попробовали!) И конечно Чистая архитектура была избыточна для нашего "игрушечного" проекта, но дала нам возможность познакомиться с большим количеством полезных концепций, которые она в себе содержит.

Почему нормальные люди обычно выбирают Чистую архитектуру?

В основе любой архитектуры лежит желание организовать продукт таким образом, чтобы работать с ним было комфортно на всех этапах его существования. Хорошая архитектура делает продукт понятным, упрощает его создание, обслуживание и установку. В идеале она также помогает снизить затраты на разработку/обслуживание продукта и повысить эффективность работы программистов.

Но важно понимать, что не существует универсальных подходов, которые бы были одинаково хороши при разработке любого продукта. Чистая архитектура достаточно объёмна и сложна сама по себе, а в какие-то моменты вам может показаться, что вы просто дублируете код! Только вот на самом деле это не дублирование, а разделение кода по слоям/уровням (что скорее всего будет избыточным для небольшого проекта).

Чистая архитектура рассчитана на сложные системы с долгим сроком жизни и большой командой разработчиков. Если у вас именно такой проект (или вам просто любопытно), то вот что она может вам предложить:

Предыстория

Роберт Мартин впервые подробно описал Чистую архитектуру в одноимённой статье в августе 2012 года. В ней же он перечислил вдохновившие его подходы: