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

Дашборд с виджетами

Вопрос

Спроектируй дашборд: десяток виджетов, у каждого свои данные и период обновления.

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

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

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

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

Коротко

Ключевое решение - виджет владеет своими данными. Тогда дашборд не ждёт самый медленный запрос: каждый показывает свой скелетон и появляется сам.

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

  • уточнил число виджетов, частоту обновления и настраивается ли раскладка

  • каждый виджет грузит свои данные сам - независимые границы загрузки и ошибок

  • один упавший виджет не должен ронять дашборд: границы ошибок по виджетам

  • общие фильтры (период, проект) - в адресе, один источник правды

  • дедупликация запросов, если виджеты просят одно и то же

  • обновление по расписанию и пауза, когда вкладка не активна

  • скелетоны фиксированного размера, чтобы раскладка не прыгала

  • тяжёлые графики - ленивой загрузкой, не в основном бандле

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

  • Как сделать настраиваемую раскладку и где её хранить?
  • Что если бэкенд умеет отдать всё одним запросом - что выберешь?
  • Как не перегрузить сервер при обновлении раз в пять секунд?

Разбор

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

Общие фильтры - период, проект - в адресной строке: один источник правды, ссылка воспроизводится, «назад» работает.

Если несколько виджетов просят одни и те же данные, дедупликация по ключу запроса обязательна - иначе при открытии уходит десять одинаковых запросов.

Автообновление ставим на паузу, когда вкладка скрыта (visibilitychange): иначе фоновая вкладка сутками долбит сервер.

Скелетоны - фиксированного размера: прыгающая раскладка на дашборде особенно заметна. Библиотеки графиков тяжёлые, поэтому грузим их лениво, вместе с виджетом.

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

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