System Design Space

    Глава 44

    Обновлено: 15 февраля 2026 г. в 11:40

    Hacking the System Design Interview (short summary)

    Прогресс части0/7

    Источник

    Оригинальная статья

    Обзор книги Hacking the System Design Interview в блоге Code of Architecture

    Перейти на сайт

    Hacking the System Design Interview

    Авторы: Stanley Chiang
    Издательство: Independently published, 2022
    Объём:

    Разбор книги Stanley Chiang: 7-шаговый фреймворк, 16 практических задач и сравнение с другими материалами.

    Hacking the System Design Interview — оригинальная обложкаОригинал

    Личное мнение

    Эта книга показалась мне интереснее, чем "System Design Interview" от Alex Xu. Структура изложения базовых концепций здесь более понятная и систематизированная.

    Структура книги

    Книга состоит из введения, в котором автор рассказывает общие слова про system design interview, а также трёх основных частей:

    1. The System Design Interview

    Краткое интро про этот тип интервью и про то, как использовать книгу для подготовки к нему.

    2. Essential Concepts

    Базовая терминология и фундаментальные принципы для дизайна сервисов:

    Концепции из баз данных
    Основы сетей
    Интеграция сервисов
    Распределённые системы
    Принципы тестирования

    3. Core Components

    Базовые компоненты современных систем:

    Веб-серверыКешиОбъектные хранилищаCDNRead/Write APIFan-out servicesГенерация уникальных IDBig DataMapReduce

    4. System Design Questions

    Семишаговый подход к решению задач, методы приблизительной оценки, рисование диаграмм и 16 практических задач для отработки навыков.

    7-шаговый подход к System Design

    Фреймворк, который предлагает автор, состоит из семи последовательных шагов. Давайте разберём каждый из них подробно.

    1

    Понимание задачи и определение границ

    На этом этапе нужно выяснить у интервьюера какие функции должна поддерживать система. Это позволит избежать ненужных углублений и определиться, насколько глубоко нужно нырнуть в каждую из тем.

    Ключевые вопросы:

    • Какие основные use cases должна поддерживать система?
    • Каковы ожидаемые нагрузки (пользователи, запросы в секунду)?
    • Какие есть ограничения по времени/бюджету?
    2

    Определение модели данных

    На втором этапе нужно определиться какими сообщениями обмениваются элементы системы и какие данные хранятся в системе.

    Сообщения (Messages)

    Форматы обмена данными между компонентами системы

    Хранилище (Storage)

    Схема данных и выбор типа хранилища

    3

    Высокоуровневая оценка нагрузки

    Проводим Back of the Envelope Estimation — прикидываем порядки величин для основных метрик системы.

    Что оцениваем:

    • Количество пользователей (DAU/MAU)
    • Количество запросов в секунду (QPS)
    • Объём хранимых данных
    • Пропускная способность сети
    4

    Высокоуровневый дизайн

    После определения основных требований и характеристик строим высокоуровневую архитектуру и согласовываем её с интервьюером. Это критически важный момент!

    Обязательно получите подтверждение от интервьюера, что вы на правильном пути, прежде чем углубляться в детали.

    5

    Детальный дизайн

    После согласования высокоуровневого дизайна переходим к детальному проектированию критически важных частей системы.

    На что обратить внимание:

    • Детали реализации ключевых компонентов
    • Алгоритмы и структуры данных
    • Обработка edge cases
    • Выбор конкретных технологий
    6

    Спецификация API и интерфейсов

    Определяем публичные API системы и интерфейсы взаимодействия между компонентами.

    Внешние API

    REST, GraphQL, gRPC эндпоинты для клиентов

    Внутренние интерфейсы

    Контракты между микросервисами

    7

    Обсуждение узких мест и производительности

    Финальный этап — обсуждение потенциальных проблем и способов их решения.

    Темы для обсуждения:

    • Bottlenecks и способы их устранения
    • Single points of failure
    • Масштабирование под рост нагрузки
    • Мониторинг и alerting

    16 практических задач

    В книге представлены 16 задач для отработки навыков System Design. Большинство из них пересекаются с задачами из репозитория system-design-primer, но есть и уникальные примеры.

    SСтандартные задачи

    • URL Shortener (TinyURL)
    • Chat System (WhatsApp/Messenger)
    • Autocomplete/Typeahead
    • News Feed (Facebook/Twitter)
    • Web Crawler
    • Rate Limiter
    • Notification System
    • Video Streaming (YouTube/Netflix)

    UУникальные задачи

    • Proximity Service (Yelp/Google Maps)
    • Ride Sharing (Uber/Lyft)
    • Ticketing System (Ticketmaster)
    • Hotel Reservation System
    • Distributed File System (GFS/HDFS)
    • Distributed Key-Value Store
    • Interplanetary Distributed Computing System
    • Real-time Gaming Leaderboard

    Особенно интересная задача

    "Interplanetary Distributed Computing System" — уникальная задача, которая заставляет думать о системах с очень большими задержками (минуты-часы) и ограниченной пропускной способностью. Отличная практика для понимания фундаментальных принципов распределённых систем.

    Выводы и рекомендации

    Кому подойдёт эта книга?

    Начинающим — хорошая структура базовых концепций поможет систематизировать знания.

    Опытным инженерам — уникальные задачи вроде "Interplanetary System" дадут новый взгляд на знакомые концепции.

    Как дополнение — книга отлично работает в связке с другими материалами по System Design.

    Рекомендую использовать эту книгу как один из источников при подготовке, комбинируя её с "System Design Interview" от Alex Xu и репозиториемsystem-design-primer.

    Где найти книгу

    Amazon

    Hacking the System Design Interview