Ответ вслух Middle System design на фронте спрашивают часто обновлено

Мультиарендное SaaS

Вопрос

Спроектируй фронтенд SaaS, где у каждой компании свои данные, роли и оформление.

Веди разговор вслух, как на секции. Начинать с решения - главная ошибка: первые полторы минуты только вопросы.

Попробуйте сами

Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.

Показать ответ и разбор

Коротко

Самое важное произносится первым: идентификатор организации никогда не приходит параметром от клиента. Он берётся из сессии.

Что должно прозвучать в ответе

  • уточнил модель: поддомены, путь или выбор организации после входа

  • область видимости берётся из сессии, а не из параметра запроса

  • переключение организации сбрасывает кэш запросов целиком

  • роли и права: интерфейс скрывает, но решает всегда сервер

  • оформление под клиента - токенами, а не отдельной сборкой

  • тарифы и лимиты: гейт на создание и на показ - это разные проверки

  • изоляция кэша и хранилища между организациями

  • что видит пользователь, состоящий в нескольких организациях

Что могут спросить следом

  • Что произойдёт при переключении организации, если не сбросить кэш?
  • Как сделать оформление под клиента без отдельной сборки?
  • Где обычно протекает изоляция арендаторов?

Разбор

Самое важное произносится первым: идентификатор организации никогда не приходит параметром от клиента. Он берётся из сессии. Иначе подмена в адресной строке открывает чужие данные - это утечка между клиентами, самый дорогой класс ошибок.

Тут стоит рассказать грабли из практики: проверки прав в гвардах выполняются до подстановки области видимости, и запрос внутри такой проверки уходит без фильтра. Заметно не сразу, а последствия максимальные.

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

Права: интерфейс прячет кнопки ради удобства, но решение всегда за сервером. Спрятанная кнопка - не защита.

Оформление под клиента - переменными CSS, а не отдельной сборкой на каждого.

И тарифы: лимит на создание и лимит на показ - разные проверки, и путают их регулярно.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.