✍️ System Design
System Design (системный дизайн) — процесс проектирования архитектуры системы
🔵направлен на удовлетворение бизнес-целей, пользовательских требований и технических ограничений
🔵это конкретное техническое решение, переход от требований к архитектуре
🔵детализирует, как именно система будет работать, но не определяет стратегию на уровне всей компании и не описывает бизнес-цели
Уровни системного дизайна
🔸 высокоуровневый (High-Level Design, HLD): общая архитектура системы, взаимодействие между компонентами, выбор технологий и структурирование сервисов
🔸низкоуровневый (Low-Level Design, LLD): детализированная информацию о компонентах системы (БД, API, структура данных и тд)
Основные принципы
🔵Масштабируемость
Проектировать системы так, чтобы могли выдерживать рост нагрузки
➡️ Пример: горизонтальное масштабирование (добавление серверов в кластер) позволяет балансировщику нагрузки распределять трафик между ними, предотвратить перегрузки
🔵Отказоустойчивость
Минимизировать влияние отказов компонентов на всю систему
➡️ репликация БД, для достпуности данных при сбое основной БД
🔵Скорость и производительность
Оптимизация времени отклика и обработки данных
➡️ кэширование популярных запросов с помощью Redis
🔵Модульность
Деление системы на независимые части для упрощения разработки и поддержки
➡️ микросервисная архитектура, где каждая служба выполняет отдельную задачу (авторизация, управление товарами)
🔵Балансировка нагрузки
Распределение входящего трафика между несколькими серверами
➡️ CDN-серверы автоматически распределяют нагрузку, направляют пользователей к ближайшему серверу с кэшем
🔵Безопасность
Защита данных и ресурсов системы
➡️ шифрование данных в REST API с использованием HTTPS, механизмы защиты от SQL-инъекций, XSS и CSRF
🔵Мониторинг
Система должна предоставлять метрики для отслеживания проблем
➡️ установка инструментов мониторинга (Prometheus или Grafana)
Системный дизайн VS архитектура
🔵системный дизайн — детальное проектирование, включая конкретные компоненты (БД, очереди сообщений, API)
❓Как именно это построить
🔵архитектура — высокоуровневое описание системы, основные компоненты, их роли и взаимосвязи
❓Что строим
Краткий пример системного дизайна
Задача: создать масштабируемую систему для загрузки и хранения изображений
Сбор требований:
🔸максимальный размер изображения — 5 МБ
🔸10 000 пользователей, 100 загрузок в секунду
🔸сохранение резервных копий
Решение
🔸API-шлюз: принимаем запросы на загрузку
🔸балансировщик нагрузки (Layer 7): распределяем запросы между серверами загрузки
🔸серверы хранения: храним изображения в S3-совместимом объектном хранилище (например, MinIO)
🔸кэш: используем CDN (Cloudflare) для ускорения
🔸очереди сообщений: RabbitMQ для обработки изображений (ресайзинг)
🔸БД: метаданные изображений сохраняем в реляционной БД (PostgreSQL)
📎 Материалы
1. Что такое System design?
2. Что такое System Design. Пример System Design для онлайн-магазина, для мобильного приложения
3. System Design для начинающих: всё, что вам нужно
4. System design. Реальный проект vs Интервью
5. System Design. Общие принцип прохождения интервью по проектированию ИТ-систем
📚 Книги
1. System Design. Подготовка к сложному интервью
2. Разработка высоконагруженных систем — очень полезная брошюра по материалам конференции HighLoad++
#архитектура #проектирование #развитие
➿➿➿➿➿➿➿➿
🧑🎓 Больше полезного в базе знаний по системному анализу
Post #551
13.8K
- 🔥 29
- 👍 14
- ❤ 7
- 😁 1
- 🤔 1