Я профессионально занимался архитектурой программных проектов более 10 лет, у меня сложилось свое понимание о том как нужно работать с архитектурой. Хочу сделать наблюдение про "чистую архитектуру".
Встречаю людей, которые говорят, что на самом деле архитектура сильно переоценена и главное - это что нужно бизнесу и что можно все сделать удобным тебе образом и все будет ок.
Собственно в контексте "чистой архитектуры" так оно и есть. И сейчас поясню в чем, на мой взгляд, тут недопонимание. Любимая метафора тех кто говорит про архитектуру, - это строительство домов.
Возьмем эту же метафору за основу. У нас есть дом, который построили по проекту, есть ли в этом проекте архитектура? Безусловно - да!
Теперь в дом заехали жильцы и начали делать дизайн своих квартир. С легкой подачи Роберта Мартина, дизайн - это архитектура. При этом мы свободные в некоторых рамках - можем красить стены, можем переносить розетки и даже можем убирать или изменять какие-то конструкции (в некоторых пределах) - это дает ощущение, что архитектура неважна. Ведь мы можем ее легко менять и ничего страшного не происходит.
Вот в этом и состоит проблема - есть некоторый набор действий, которые позволяют отклоняться в принятии решений от того, что предлагает нам архитектура проекта. Но если мы зайдем слишком далеко, например, решим убрать все несущие стены, то окажется, что такое изменение может привести к разрушению всего дома.
Лично я не склонен считать дизайн частью архитектурного решения, поэтому мне кажется, что "переносить розетки" в проекте каждый может так как считает нужным. Для меня архитектура - это как раз тот набор принципов и правил, по которым строится основа проекта, нарушение этих правил приведет к неминуемой проблеме.
Чистая архитектура - это уровень кода (есть еще уровень программ, уровень системы, уровень организации), поэтому во многом она затрагивает вопросы дизайна, как следствие - вносить изменения можно без последствий, но ровно до тех пор, пока мы не отойдем от дизайна и не перейдем к архитектурным принципам, вот тут мы уже не сможем просто менять правила игры не получая штрафа в виде тех. долга и нарушений в работе проекта. Поэтому не стоит рассматривать "чистую архитектуру" в качестве хорошего примера для утверждения, что архитектура не так уж важна. Архитектура программного проекта затрагивает куда больше аспектов, чтобы сосредоточиться только на одном самом простом уровне.