• Пойду по наитию -> ❌
• Буду ждать подсказок -> ❌
• Моя экспертиза позволит вырулить -> ❌✅
❗️ По опыту прохождения таких интервью в BigTech делаю маленький вывод для больших размышлений:
"System Design Интервью - вещь в себе."
☀️ Оказывается у такого интервью:
• Свой пайплайн прохождения
• Аккуратно расставленные грабли
• Разбросанные по IT миру лайфхаки
• Не простая подготовка
💯 Такое осознание специфики интервью поможет к нему подготовиться и успешно его пройти!
❓ С какого конца взяться?
1. Понять основные шаги интервью
2. Выяснить ожидания интервьюера
✏️ Пошаговый фреймворк прохождения
Существуют разные фреймворки прохождения. Чтобы не потонуть в море информации предлагаю рабочий:
1) Выяснить требования
Сюда относим Функциональные и Нефункциональные.
ФТ - какая функциональность доступна пользователю.
НФТ - Какие качества должны быть у проектируемой системы.
2) Построить api
Обычно это REST с несколькими ручками. Одну из которых нужно описать очень хорошо.
3) Спроектировать архитектуру
Начать с монолита. Позволит описать основные user flow голосом. Показать уже работающую минимальную систему.
4) Поговорить о масштабировании
Здесь многие тонут. Но мы подготовимся:
а) Сделать stateless сервисы, которые можем масштабировать горизонтально.
б) Сделать read реплики, поскольку, скорее-всего, запросов на чтение будет больше.
в) Обозначить шардирование, если идём в мир. К примеру, шардирование по гео для букинга. Допустим, ищем отели во Франции. Пускай по признаку "Страна" все данные находятся на определенном сервере. Чтобы не делать кросс серверных запросов. Удобно. Быстро.
5) Упомянуть технологии
Обычно выбираем PostgreSQL, если нужен ACID, схема данных, join.
6) Приправить всё кэшем и мониторингом
Именно здесь. В конце. Избегаем широко известной истории в узких кругах.
Рассказывает СТО: "Ко мне пришёл кандидат и предложил использовать кубернетиз для всех случаев.". Как бы да. Но сначала хочется увидеть спроектированный сервис. Который обслуживает основные пользовательские сценарии. А фразу "кубернетиз всё разрулит" можно припасти на потом. А не спасаться с помощью неё в самом начале.
👎 Нам не нужны:
• Диаграммы последовательности
• BPMN диаграммы, ...
• Подробное описание интеграций внутренних и внешних систем с проработкой их контрактов
🆗 Из диаграмм - максимум аналог С4 контейнерной схемы:
а) Актор - пользователь, админ, ...
б) API GATEWAY
в) Сервисы
г) СУБД
д) Мониторинг
изображенные в таком виде, чтобы получить от интервьюера:
💭 «Ага! Теперь ясно!».
⚡️ Так и закончатся ваши 60 минут
❗️ Если вышесказанное too much for me now, заберите первые 3 этапа. Отработайте их на "отлично" на пятерке(5️⃣) популярных задач.
И это будет уже базовым прохождением.
❓ В следующий раз можно разобрать ожидания интервьюера и особенности коммуникации на таком интервью.
Автор - Невзоров Владимир. Телеграмм канал - @system_design_world
