Фронт или бек — чья это логика?

Есть вопрос который поднимается у нас на каждом проекте и никогда не решается окончательно.

Где живёт логика — на фронте или на беке?

Бек говорит: отдаём данные, дальше сами. Фронт говорит: мы не можем делать семь запросов чтобы показать одну таблицу. Оба раздражены. Решения нет — потому что некому его принять.

Честно говоря, фронтендеру проще когда всё на беке. Меньше кода, меньше ответственности, красота. Но так не работает.

Бизнес-логика — правила, расчёты, валидация которая влияет на данные — должна жить на беке. Потому что фронт можно открыть в devtools или postman и отправить что угодно. Валидация только на фронте — это не защита, это просьба вести себя хорошо.

На фронте валидация нужна — но только чтобы пользователю было понятно что можно вводить а что нет. Подсветить поле, задизейблить кнопку, показать подсказку. Это про интерфейс, не про безопасность. Если кто-то снял disable в devtools и всё равно отправил запрос — бек должен вернуть ошибку. Это его работа.

Всё остальное — серая зона. Сортировка, трансформация, форматирование — зависит от объёма данных, от аудитории, от того насколько нагружен бек. Универсального ответа нет, и это нормально.

Ненормально другое — когда некому это решение принять. Когда нет человека который смотрит на продукт целиком и говорит «вот граница, вот почему». А сейчас получается каждый спор решается не по делу, а по тому кто громче настаивал на общей встрече.

Отдельная история — костыли. Допустим есть исключение в логике — его можно добавить на фронте во всех местах, или один раз на беке. Кажется, очевидно. Но иногда это исключение реально существует в интерфейсе — оно как бы должно быть в логике, просто пользователь не должен про него знать. Тогда фронт. А иногда это чистое бизнес-правило которое просто работает не так как должно — тогда неправильно будет делать этот костыль на фронте.

Нам иногда не хватает общего тимлида на фронт и бек вместе. Человека который понимает обе стороны и может сказать, где делать логику и куда правильнее добавить костыль — и это будет решение, а не чья-то капитуляция.