System Design социальной сети для путешественников для курса по System Design – https://balun.courses/courses/system_design
- Публикация постов из путешествий с фотографиями, небольшим описанием и привязкой к конкретному месту путешествия
- Оценка и комментарии постов других путешественников
- Подписка на других путешественников, чтобы следить за их активностью
- Поиск популярных мест для путешествий и просмотр постов с этих мест
- Просмотр ленты других путешественников и ленты пользователя, основанной на подписках в обратном хронологическом порядке
- Количество пользователей: 10 000 000 DAU
- Поведение пользователей: Один пользователь, в среднем, будет делать 5 запросов в день к приложению
- Регионы использования приложения: страны СНГ
- Сезонности в приложении: увеличение активности пользователей
- Праздничные дни – 20%
- Май – 30%
- Лето – 50%
- Сентябрь - октябрь – 25%
- Условия хранения данных: храним всегда
- Лимиты и ограничения:
- Максимальное кол-во фото в постах – 20
- Максимальное кол-во символов в описании – 2000
- Максимальное кол-во символов в комментариях – 1000
- В комментариях доступен только текст
- Оценивать посты можно только лайками
- При первом открытии ленты отображается 10 постов/комментариев – остальное через пагинацию
- Временные ограничения:
- Публикация поста – не более 1,5 с
- Публикация комментария – не более 500 мс
- Загрузка поста – не более 1,5 с
- Загрузка комментариев – не более 1 с
- Оценка поста – не более 500 мс
- Подписка на других путешественников – не более 1 с
- Результаты поиска – не более 3 с
- Загрузка ленты – не более 5 с
- Доступность приложения: приложение может быть недоступно за год не более, чем 6 часов
RPS, Traffic (публикация поста):
DAU = 10 000 000
в среднем пользователь будет создавать пост раз в 2 недели
RPS = 10 000 000 / 86 400 / 14 ~= 9
Traffic(медиа) = 9 * 10 МБ = 90 МБ/с
Traffic(метаинформация) = 9 * 5 КБ = 45 КБ/с
Traffic(итого) = 90,04 МБ/с
RPS, Traffic (оценка поста):
DAU = 10 000 000
в среднем пользователь будет оценивать посты каждый день
RPS = 10 000 000 / 86 400 ~= 116
Traffic = 116 * 40 байт = 4640 байт/с = 5 КБ/с
RPS, Traffic (комментарий поста):
DAU = 10 000 000
в среднем пользователь будет комментировать посты раз в 2 дня
RPS = 10 000 000 / 86 400 / 2 ~= 58
Traffic = 58 * 500 байт = 29000 байт/с = 28 КБ/с
RPS, Traffic (подписка на других путешественников):
DAU = 10 000 000
в среднем пользователь будет подписываться раз в 3 месяца
RPS = 10 000 000 / 86 400 / 90 ~= 2
Traffic = 2 * 50 байт = 100 байт/с
RPS, Traffic (поиск и просмотр популярных мест):
DAU = 10 000 000
в среднем пользователь будет искать раз в месяц
RPS = 10 000 000 / 86 400 / 30 ~= 4
Traffic = 4 * 30 МБ = 120 МБ/с
RPS, Traffic (просмотр ленты):
DAU = 10 000 000
в среднем пользователь будет смотреть ленту каждый день
RPS = 10 000 000 / 86 400 ~= 116
Traffic (медиа) = 116 * 20 * 500 КБ(сжатое фото) ≈ 116 * 10 МБ ≈ 1160 МБ/с ≈ 1.1 ГБ/с
Traffic (метаинформация) = 116 * 20 * 2 КБ = 4 640 КБ/с ≈ 4.53 МБ/с
Traffic (итого) = 1165 МБ/с ≈ 1.1 ГБ/с