https://github.com/nikitadev-work/system-design-practice
System design practice
https://github.com/nikitadev-work/system-design-practice
rest-api system-design
Last synced: 2 months ago
JSON representation
System design practice
- Host: GitHub
- URL: https://github.com/nikitadev-work/system-design-practice
- Owner: nikitadev-work
- Created: 2026-02-17T15:40:58.000Z (5 months ago)
- Default Branch: main
- Last Pushed: 2026-02-22T14:04:42.000Z (4 months ago)
- Last Synced: 2026-05-03T10:46:39.152Z (2 months ago)
- Topics: rest-api, system-design
- Homepage:
- Size: 346 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
Практика **System Design**
**Тема**: Социальная сеть
Функциональные требования:
- добавление и удаление друзей
- просмотр друзей пользователя
- просмотр профиля пользователя
- публикация поста в ленту
- загрузка медиа файлов для постов
- просмотр ленты постов
- просмотр диалогов и чатов пользователя
- отправка и чтение сообщений
Нефункциональные требования
DAU: 55 000 000 пользователей
Сообщения:
- Один пользователь в день пишет: 35 сообщений
- Один пользователь в день читает: 200 сообщений
- Средняя длина сообщения: 60 символов
Посты и лента:
- Один пользователь в день просматривает: 120 постов
- Один пользователь в день ставит: 25 лайков
- Один пользователь в день пишет: 3 комментария
- Один пользователь публикует: 0.2 поста
- Средняя длина поста: 500 символов
Профиль и социальный граф:
- Среднее количество друзей у пользователя: 200
- Среднее количество подписок: 150
- Среднее количество подписчиков: 200
Медиа:
- Один пользователь в день загружает: 0.3 медиа-файла
- Средний размер фото: 2 MB
- Средний размер видео: 50 MB

## Расчеты
### Размер базы данных для хранения сообщений на 5 лет
Размер текста сообщений за день:
55 000 000 * 35 * 60 * 2 байт = 231 GB/день
За год:
231 * 365 ≈ 84 TB
За 5 лет:
≈ 420 TB без репликации
С 2х факторной репликацией:
≈ 840 TB
### Расчет для одной реплики
Рассматриваем HDD на 6 TB:
400 / 6 = 67 дисков
Шардирование:
по 8 дисков на шарде → 9 шардов
### Входящий трафик на создание постов
Количество постов в день:
55 000 000 * 0.2 = 11 000 000
Если считать, что все посты текстовые:
11 000 000 * 500 * 2 = 11 000 000 000 байт ≈ 11 GB/день
### RPS
RPS по созданию постов:
11 000 000 / 86 400 ≈ 128 posts/s
RPS по чтению постов:
55 000 000 * 120 / 86 400 ≈ 77 000 posts/s