Разделите хранение пользователей, подписок и твитов, формирование ленты и доставку медиа. Начните с требований к задержке, порядку ленты и объёму подписчиков, а не с обязательного набора микросервисов.
Проектирование мини‑версии микроблога, похожего на Twitter
Разделите хранение пользователей, подписок и твитов, формирование ленты и доставку медиа. Начните с требований к задержке, порядку ленты и объёму подписчиков, а не с обязательного набора микросервисов.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Требуется спроектировать сервис, имитирующий функциональность Twitter. Необходимо обеспечить возможность создания и удаления твитов, получения доступа к отдельному твиту по уникальной ссылке, подписки и отписки от других пользователей, формирования персональной ленты новостей и поддержки загрузки медиа‑файлов (изображения, видео). Основное внимание уделяется архитектурным решениям проекта, выбору компонентов, масштабируемости и отказоустойчивости.
Ответ
Разделите хранение пользователей, подписок и твитов, формирование ленты и доставку медиа. Начните с требований к задержке, порядку ленты и объёму подписчиков, а не с обязательного набора микросервисов.
Твит получает стабильный ID для постоянной ссылки; медиа хранятся в object storage и отдаются через CDN после проверки загрузки. Для обычных авторов возможен fan-out-on-write, для очень популярных — чтение их записей при сборке ленты. Используйте курсорную пагинацию, асинхронную доставку событий, идемпотентность и контроль доступа. Удаление должно убрать запись из выдачи, кэшей и производных лент; резервирование и наблюдаемость проверяются сценариями отказов.