Мышление об этом с точки зрения слоев немного ограничивает. Это то, что вы видите в официальных документах о продукте, но это не то, как продукты действительно работают. У них есть «прямоугольники», которые по-разному зависят друг от друга, и вы можете сделать так, чтобы они вписывались в слои, но вы можете сделать это в нескольких различных конфигурациях, в зависимости от того, какую информацию вы оставляете вне диаграммы. *
И в действительно хорошо разработанном приложении коробки становятся очень маленькими. Они находятся на уровне отдельных интерфейсов и классов.
Это важно, потому что всякий раз, когда вы меняете строку кода, вы должны иметь некоторое представление о том, какое влияние окажут ваши изменения, а это означает, что вы должны точно понимать, что код делает в данный момент, каковы его обязанности, что означает должен быть небольшой блок с единственной ответственностью, реализующий интерфейс, который не заставляет клиентов зависеть от того, что им не нужно (S и I SOLID).
Вы можете обнаружить, что ваше приложение может выглядеть так, как будто оно имеет два или три простых слоя, если вы сузите глаза, но это не так. Это на самом деле не проблема. Конечно, катастрофически плохо спроектированное приложение может выглядеть так, будто оно имеет уровни слоев, если вы щуритесь так сильно, как только можете. Таким образом, эти «высокоуровневые» диаграммы «архитектуры» могут скрывать множество грехов.