Пройдите шаги: уточните требования, оцените нагрузку, выберите решения, нарисуйте схему.
Человек набирает «как оформ», и под строкой появляются «как оформить загранпаспорт», «как оформить самозанятость» и ещё восемь вариантов. Подсказка опоздала больше чем на 100 мс — человек уже набрал следующую букву.
Для расчёта: 300 млн поисковых запросов в день, на каждый клиент отправляет в среднем 8 запросов подсказок (с паузой 50 мс между нажатиями), вечером нагрузка вдвое выше средней.
Словарь — 50 млн самых частых запросов за 30 дней. Когда случается новость (перекрыли мост, вышел сериал), новый запрос должен попасть в подсказки за 5 минут.
В работе: Подсказки срабатывают на каждую букву в поисковой строке и экономят человеку половину набора.
Источник: Яндекс: как проходит секция дизайна систем для бэкенда (статья на Хабре); сценарий наш. Условие пересказано своими словами.
- Уточнить требования — Что выяснить до схемы?
- Оценить нагрузку
- Индекс — Как отвечать на префикс за единицы миллисекунд?
- Свежие запросы — Как добавить в подсказки запрос, который стал частым 3 минуты назад?
- Схема — Опишите офлайн-сборку индекса, свежий слой и путь запроса подсказок.