Какой бекенд используется: монолит или микросервисы
Что проверяют
Понимаете ли вы, с чем на самом деле работает фронтенд вашего проекта и как устройство бэкенда отражается на клиенте. Пересказ определений из учебника тут не нужен. Следом обычно спрашивают, как фронтенд собирал данные для одного экрана и что происходило, когда один из сервисов лежал.
Как отвечать
Назовите, что было у вас, и сразу переведите это в последствия для фронтенда:
- монолит: один API, одна схема авторизации, согласованные форматы ошибок и дат. Экран обычно получает данные одним или двумя запросами;
- микросервисы напрямую: несколько базовых URL, CORS для каждого домена, разные форматы ошибок, водопады запросов на экране, которому нужны данные трёх сервисов;
- API Gateway или BFF: фронтенд ходит в одну точку, которая собирает ответы сервисов под конкретный экран. BFF часто пишет сама фронтенд-команда на Node.js, в Next.js или на NestJS, иногда его роль играет GraphQL-шлюз с федерацией;
- контракт: схема OpenAPI или GraphQL, генерация типов и клиента на TypeScript, обратная совместимость полей;
- частичные отказы: если сервис рекомендаций упал, страница товара всё равно должна открыться. Это обработка ошибок на уровне блока, error boundary в React, таймауты и заглушки вместо белого экрана.
Можно упомянуть микрофронтенды как ту же идею на стороне клиента и сказать, почему у вас их было или не было.
Если этот вопрос задаёте вы работодателю, спросите следом, есть ли BFF, кто владеет контрактом и как фронтенд узнаёт о ломающих изменениях API. Ответ покажет, сколько времени у вас будет уходить на согласования.
Где спотыкаются
Отвечают «не знаю, я только по фронту». Разработчик, который не знает, откуда приходят данные, выглядит слабее, чем он есть.
Называют микросервисы безусловно лучшим выбором. Для небольшой команды монолит проще в разработке и отладке, и сильный ответ называет условия, при которых дробление окупается.
Не могут объяснить, как клиент переживал недоступность одного из сервисов, и признаются, что весь экран падал из-за одного ответа 500.