Три слоя
- Model — данные и бизнес-логика: работа с БД, валидация, вычисления. Ничего не знает о том, как данные будут отображены
- View — шаблон, превращающий данные в HTML (или JSON). Не содержит логики — только отображение
- Controller — принимает HTTP-запрос, вызывает нужную модель, передаёт результат в view. Тонкий слой-дирижёр
Правило «тонкого контроллера»
Контроллер не должен содержать бизнес-логику — только оркестрацию. Если метод контроллера превышает 10–15 строк, это сигнал вынести логику в сервис или модель.