День 2591. #Архитектура #ВопросыНаСобеседовании
Проектирование Систем Как Кофейня. Начало
Собеседования по проектированию систем — это «финальный босс» в разработке ПО. Они пугают не потому, что математика сложная, а потому, что холст чистый. Большинство инженеров думают, что проектирование систем — это знание внутренних механизмов Kafka или нюансов Cassandra. Нет. Это искусство ясно мыслить вслух. Мы будем проектировать кофейню. Потому что, если вы можете масштабировать работу кафе, вы сможете масштабировать и распределённую систему.
Секрет: не спешите строить, задавайте вопросы
Представьте, что вы хотите открыть кофейню. Вы не начинаете с покупки эспрессо-машины за $20К и найма 5 барист в первый же день. Так вы обанкротитесь через месяц.
Начинайте с вопросов:
- Сколько человек живёт в районе?
- Это место, куда можно быстро зайти, или место, где можно посидеть и поработать?
- Что происходит в утренний/вечерний час пик?
Системное проектирование работает точно так же.
Вот схема для прохождения интервью:
1. Фаза «уточнения» (не гадайте)
На собеседовании вопрос обычно расплывчатый: «Разработайте Twitter». Дилетант: начинает рисовать «базу данных твитов».
Профессионал: спрашивает: «Для кого? Мы поддерживаем видео? Что важнее: скорость или согласованность?»
Вопросы, которые следует задать:
- Пользователи: Кто этим пользуется?
- Масштаб: 100 человек или 100 миллионов?
- Соотношение: Это ресурс нагрузкой на чтение (скролл ленты) или на запись (публикация)?
- «Атмосфера»: Требуется низкая задержка или высокая согласованность?
2. Определение «Основного меню» (вариантов использования)
Сосредоточьтесь на 3-5 основных действиях. Если вы попытаетесь спроектировать всё сразу, вы не спроектируете ничего.
Для нашего кафе «Основное меню» состоит из следующих элементов:
- Просмотр: Пользователь просматривает меню.
- Заказ: Пользователь размещает заказ.
- Принятие: Бариста видит и принимает заказ.
- Отслеживание: Пользователь получает уведомление, когда заказ готов.
3. Высокоуровневый дизайн («Эскиз на салфетке»)
Теперь нарисуем «большие блоки». Пока не беспокойтесь о виде БД. Просто определите роли.
- Клиент: Делает заказ с телефона.
- Бэкенд (Менеджер): Получает заказ и решает, куда он будет отправлен.
- БД: Постоянная запись о каждом проданном кофе.
- Очередь: Если 50 человек делают заказ одновременно, «Очередь» сохраняет их и ставит в обработку последовательно, чтобы у баристы не случился нервный срыв.
4. Модель данных (Ингредиенты)
Какую информацию нужно хранить? Не усложняйте. Представьте это как «квитанции заказа».
- Пользователь: Имя, Email, Баллы лояльности.
- Продукт: Название напитка, Цена, Ингредиенты.
- Заказ: Отметка времени, Стоимость, Статус (Ожидание/Выполнено).
- Связи: У одного пользователя может быть много заказов. Один заказ может содержать много товаров.
Вот и всё. Не создавайте сложную сеть таблиц, если интервьюер об этом не просит.
5. Обработка «часа-пик» (Масштабирование)
Это та часть интервью, где меняется «атмосфера». Ваше кафе пользуется огромным успехом! Внезапно за дверью оказывается 500 человек. Если вы не измените систему, она рухнет, и все уйдут недовольные.
Окончание следует…
Источник: https://medium.com/@yashgangane987/system-design-is-just-a-coffee-shop-a-stress-free-guide-for-engineers-af3e82dc589e
Post #3112
2.16K
- 👍 12
- 👎 1