Небольшая шпаргалка, которую писал себе перед собеседованиями по System Design
Сбор требований
- Функциональные
- Нефункциональные
Сбор сведений
- Dau/Mau/Rps
- Объём данных
- Количество пользователей
- Read/Write
Границы
- Что не входит в систему Auth, Logging, Metrics, Эквайринг
- Что входит в систему / Выделяем интерфейсы
Проектирование
- Пользователь / Система
- Use Cases
- Happy path
- Exceptional flow
Разделение баз данных
- Шардинг - масштабирование записи. / Consistent hashing ring
- Репликация - масштабирование чтения.
Кэширование
- Redis - кэширование данных на уровне приложения.
- Memcached - память кэша данных общего назначения.
- CDN - географически распределенный кэш статических ресурсов
- Nginx Cache - кэширование HTTP-ресурсов.
Балансировка нагрузки
- HAProxy / L4
- Nginx / L7
- AWS ELB (Elastic Load Balancing)
- Google Cloud Load Balancer
- Amazon Route 53 / DNS
Очереди сообщений
- RabbitMQ - брокер сообщений для сложных маршрутизаций и очередей.
- Apache Kafka - платформа стриминга данных с высокой пропускной способностью и масштабируемостью.
Высокая доступность и отказоустойчивость
- Кластеры.
- Резервное копирование и восстановление.
- Master-slave / Primary-Replica.
Мониторинг и логирование
- Sidecar контейнеры.
- Prometheus - система мониторинга событий и алертинга.
- Grafana - платформа для визуализации и аналитики метрик мониторинга.
- ELK Stack (Elasticsearch-Logstash-Kibana) - стек для логирования.
NoSql
- MongoDb / документоориентированная
- Cassandra / колончатая
- Redis / ключ-значение
- DynamoDb / ключ-значение облако
- Azure Cosmos Db / документ облако
Blob
- Filesystem
- Amazon S3
- HDFS
- Azure Blob
SSO
- Keycloak / opensource
- Okta / paid
Post #49
304
- 👍 7
- ❤ 1
- 👎 1
- 🔥 1