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