Ми створюємо соціальні мережі під ключ. За 10+ років набили ґулі на realtime-сповіщеннях, стрічках та модерації. Типова проблема: клієнт хоче «як ВКонтакті», але забуває про N+1 у стрічці та гідратацію. Розповімо, як уникнути граблів.
Будь-яка соціальна мережа починається з графа соціальних зв'язків. Від його архітектури залежить продуктивність стрічки активності, сповіщень і навіть рекомендацій. Невірно вибрана модель стрічки (push vs pull) призводить до деградації при зростанні. Ми використовуємо гібрид, адаптуючи під навантаження.
Нещодавно ми запускали нішеву соцмережу для професійної спільноти дизайнерів — обсяг 300 тисяч користувачів, 5 мільйонів постів на місяць. Основний біль: стрічка пригальмовувала при пікових навантаженнях. Вирішили перепроектуванням графа та впровадженням гібридної стрічки. Результат: LCP впав з 4 до 1.8 секунд, а серверне навантаження знизилося вдвічі. В іншому проєкті помилка в алгоритмі стрічки призводила до втрати 30% активної аудиторії; вартість інциденту становила $20,000 на день. Після рефакторингу стрічки економія на серверній інфраструктурі склала $8,000 на місяць. Правильна архітектура графа допомогла уникнути подібних втрат.
Граф соціальних зв'язків: як не піти в N+1?
Два типи зв'язків: симетричні (дружба) та асиметричні (підписка). Зберігання графа в реляційній БД:
CREATE TABLE follows ( follower_id BIGINT REFERENCES users(id), following_id BIGINT REFERENCES users(id), created_at TIMESTAMP, PRIMARY KEY (follower_id, following_id) ); CREATE INDEX ON follows (following_id); -- для запиту «хто підписаний на X» При великій кількості користувачів (>10М) граф краще зберігати в спеціалізованих Graph DB (Neo4j, Amazon Neptune) або Redis з SSCAN. Facebook Engineering рекомендує гібридну модель стрічки саме з цієї причини.
Чому гібридна стрічка — стандарт індустрії?
Fan-out on write (push) — швидкий запис, але мільйон підписників = мільйон записів. Fan-out on read (pull) — економія місця, але повільніше. Ми використовуємо гібрид: для звичайних користувачів push, для популярних (поріг >5000 підписників) — pull на читання. Це стандарт Facebook та Instagram. Додатково ранжування (алгоритмічна стрічка) враховує лайки, коментарі, репости та близькість автора.
# Redis ZSET для стрічки користувача ZADD feed:{user_id} {timestamp} {post_id} ZREVRANGE feed:{user_id} 0 19 -- останні 20 постів Документація по Redis Sorted Sets.
Як ми вирішуємо проблему realtime?
Для стрічки використовуємо ZSET, для realtime-чату — Pub/Sub. Без Redis кожен WebSocket-сервер зберігав би стан, і при збої з'єднання обривалися. Redis вирішує: будь-який сервер публікує подію в канал, усі сервери з WebSocket-з'єднаннями отримують і доставляють підписникам.
Зберігання та обробка медіа
Фото та відео — в об'єктному сховищі (S3/Cloudflare R2). Обробка:
- Фото: зміна розміру → кілька thumbnail (150, 400, 800px) → WebP конвертація
- Відео: транскодування через FFmpeg або cloud (Cloudflare Stream, Mux)
Обробка асинхронна через чергу. Користувач бачить «обробляється», після готовності — сповіщення.
Модерація контенту: від хеш-фільтрації до ML
- Хеш-фільтрація: PhotoDNA / PDQ hash для виявлення відомого CSAM та незаконного контенту
- ML-модерація: NSFW-детектування зображень (Google Vision Safe Search API, NudeNet)
- Текстова модерація: детекція токсичності (Perspective API, OpenAI Moderation API)
- Репорти користувачів → черга для модераторів → рішення (прибрати / залишити / попередження)
Етапи розробки соціальної мережі
- Аналіз вимог та проектування графа: визначаємо типи зв'язків, модель стрічки, realtime-функціонал.
- Прототипування UI/UX: створюємо wireframes та дизайн-систему з урахуванням мобільної адаптації.
- Розробка MVP: профілі, підписки, пости з фото, коментарі, стрічка активності, базові сповіщення.
- Інтеграція realtime-чату та медіа-обробки: WebSocket + Redis Pub/Sub, транскодування відео, WebP для фото.
- Впровадження модерації та конфіденційності: хеш-фільтрація, ML-детекція, налаштування приватності, GDPR.
- Тестування, деплой та оптимізація: навантажувальне тестування, CI/CD, моніторинг LCP/CLS.
Конфіденційність та GDPR
Деталі конфіденційності
Налаштування приватності профілю та постів: публічний, тільки друзі, тільки я. GDPR: експорт даних, видалення акаунту (soft delete з повним видаленням через 30 днів).Терміни та вартість
| Етап | Терміни | Що входить |
|---|---|---|
| MVP | 4–6 місяців | Профілі, підписки, пости з фото, коментарі, стрічка, базові сповіщення |
| Повноцінна платформа | 10–18 місяців | Відео, чат, алгоритмічна стрічка, модерація, мобільні додатки |
Вартість розраховується індивідуально залежно від функціоналу та масштабу. Ми гарантуємо прозоре ціноутворення та відсутність прихованих платежів.
Що входить в роботу
- Архітектурна документація (ERD, діаграми потоків)
- Доступи до репозиторію, CI/CD, об'єктного сховища
- Навчання команди замовника (2-3 сесії)
- Гарантійна підтримка 6 місяців після запуску
Порівняння моделей стрічки
| Модель | Запис | Читання | Коли використовувати |
|---|---|---|---|
| Push | Важкий | Легке | Для <5000 підписників на автора |
| Pull | Легкий | Важке | Для популярних авторів |
| Гібрид | Комбінована | Баланс | Завжди |
Ми створюємо масштабовану соціальну платформу, готову до зростання. Зв'яжіться з нами — отримайте консультацію з архітектури вашої соціальної мережі. Замовте розробку MVP вже сьогодні — оцінимо ваш проєкт безкоштовно.







