Системный дизайн с нуля: инжен... Заметка
DEV Community на русском

Системный дизайн с нуля: инженер-руководитель учит своего племянника

Инженеры часто испытывают трудности с вопросами проектирования систем не из-за недостатка технических знаний, а из-за отсутствия структуры. Прямой переход к выбору технологий до понимания проблемы и масштаба приводит к неструктурированным ответам. Систематический подход, начинающийся с понимания проблемы и требований, имеет решающее значение. Такое структурированное мышление позволяет принимать решения на основе данных, а не догадок.Основная структура состоит из трех фаз: Понять, Спроектировать и Укрепить, охватывающих двенадцать шагов. Фаза 1, Понять, включает определение проблемы, сбор функциональных и нефункциональных требований, а также оценку масштаба. Нефункциональные требования, такие как масштабируемость, доступность и задержка, являются ключевыми отличиями. Шаг 3, понимание этих нефункциональных требований и их последствий, демонстрирует опыт.Оценка масштаба, самый пропускаемый шаг, включает расчет таких показателей, как ежедневные активные пользователи и запросы в день. Эти цифры определяют последующие архитектурные решения. Расчеты "на салфетке" необходимы, используя формулы для QPS, хранения данных, пропускной способности и кэш-памяти. Запоминание ключевых цифр, таких как количество секунд в дне и единицы данных, жизненно важно для быстрых расчетов.Проектирование для пиковой нагрузки, а не для средней, является основным принципом обеспечения стабильности системы. Понимание годовых потребностей в хранении данных помогает предвидеть будущие проблемы масштабирования, такие как шардинг. Расчеты пропускной способности информируют о требованиях к сетевой инфраструктуре. Расчеты кэш-памяти определяют необходимые ресурсы для кэширования часто используемых данных.Последовательный расчет семи ключевых показателей — DAU, общее количество запросов, запросы на чтение/запись, QPS на чтение, пиковый QPS и годовое хранение — формирует необходимую мышечную память. Такой дисциплинированный подход, основанный на количественном анализе, трансформирует способность кандидата уверенно решать любые вопросы проектирования систем. Структура обеспечивает логическую последовательность от первоначальных требований до надежной и масштабируемой системы.