System Design Space

    Глава 190

    Обновлено: 13 февраля 2026 г. в 23:10

    Frontend system design кейс: Design Instagram Feed

    Прогресс части0/12

    Практический frontend-кейс: проектирование ленты Instagram с акцентом на производительность, кэширование, pagination и UX для мобильных сценариев.

    Context

    Frontend Architecture Overview

    Кейс фокусируется на продуктовой ленте с высоким UX-давлением и жесткими performance-требованиями.

    Открыть главу

    Design Instagram Feed во frontend-system design - это баланс между персонализацией, производительностью и cost-efficiency. Система должна быстро отдавать релевантный контент и при этом сохранять плавный scroll на мобильных устройствах.

    Problem & Context

    Пользователь открывает приложение и ожидает увидеть значимую часть ленты почти мгновенно. Главные UX-риски: долгий TTFM, дерганый scroll, поздняя загрузка media и непредсказуемое поведение лайков/комментариев при нестабильной сети.

    Functional requirements

    • Бесконечная лента с cursor-based pagination и быстрой догрузкой карточек.
    • Поддержка видео/изображений, лайков, комментариев и сохранений без полной перезагрузки экрана.
    • Персонализация порядка постов и комбинирование новых/релевантных элементов.
    • Стабильный UX при плохой сети: skeleton, retry и graceful degradation.

    Non-functional requirements

    • Time to first meaningful feed item < 2s на среднем мобильном устройстве.
    • Scroll должен оставаться плавным (без заметных jank/drop frames).
    • Экономное потребление трафика и батареи за счет lazy loading и media optimization.
    • Устойчивость к всплескам нагрузки при массовых публикациях и пиковых часах.

    Scale assumptions

    DAU

    50M+

    Большая доля трафика приходится на мобильные клиенты и короткие сессии.

    Feed requests

    200k-600k RPS

    Пиковая нагрузка выше базовой в 2-3 раза во время regional prime-time.

    Media payload

    ~200KB preview / 1-3MB full

    Оптимизация изображений и видео критична для latency и стоимости CDN.

    Client memory budget

    < 120MB feed screen

    Виртуализация списка обязательна для длинных сессий прокрутки.

    Related

    Caching Strategies

    Кэширование - ключевой инструмент ускорения выдачи и снижения стоимости feed-инфраструктуры.

    Открыть главу

    Architecture

    Feed BFF

    Агрегирует ranking + content + social metadata, отдает компактный DTO, оптимизированный для UI.

    Ranking service

    Формирует персонализированный порядок постов, возвращает candidate set с score и reason codes.

    Media service + CDN

    Генерирует многоразмерные превью, управляет cache-control, signed URLs и progressive delivery.

    Interaction service

    Лайки/комментарии обрабатываются асинхронно с optimistic UI и reconciliation на клиенте.

    Deep dives

    Pagination и prefetch

    Cursor-based pagination исключает пропуски/дубли при изменении ленты. Клиент prefetch-ит следующий batch заранее по scroll threshold.

    Render performance

    Virtualized list + memoized feed items + media placeholder strategy. Вне viewport карточки не держат тяжелые DOM/media ресурсы.

    Optimistic interactions

    Лайк обновляется мгновенно локально, затем подтверждается сервером. При конфликте применяется reconciliation policy с понятным UX.

    Cache hierarchy

    In-memory cache экрана + HTTP cache + CDN edge cache. Ключевая цель - минимизировать cold fetch при возврате пользователя к ленте.

    Trade-offs

    Сильная персонализация улучшает retention, но усложняет explainability и дебаг пользовательских жалоб.

    Aggressive prefetch улучшает плавность, но может заметно увеличить расход трафика на мобильной сети.

    Тонкий BFF уменьшает клиентскую сложность, но добавляет критичный серверный слой с высоким blast radius.

    Оптимистичные обновления ускоряют UX, но требуют аккуратной обработки rollback при сетевых ошибках.

    Связанные главы

    References