Shomla - Архитектура высоконагруженного WebRTC голосового чата в реальном времени на базе Go

Shomla - Архитектура высоконагруженного WebRTC голосового чата в реальном времени на базе Go

Shomla - это кроссплатформенный сервис голосовых чатов (1 на 1), работающий прямо в браузере с минимальной задержкой без установки нативных приложений. В основе платформы лежит высокопроизводительный сигналинг сервер на Go (Golang), управляющий WebSocket сессиями и очередями умного матчинга, а также гибридная инфраструктура WebRTC (P2P + распределённый пул TURN серверов) с динамической авторизацией. Фронтенд построен по принципу Zero Framework PWA с выносом тяжёлой логики в WebWorkers, что обеспечивает мгновенный отклик интерфейса даже на бюджетных мобильных устройствах.

  1. Адрес проекта в продакшне: shomla.com
  2. Стек технологий: Go (Gorilla WebSockets, Fiber, Chi), PHP 8, SQLite, WebRTC, Hybrid TURN/STUN (REST API Ephemeral Auth), Vanilla JS, WebWorkers, PWA.

Инженерная и продуктовая задача

При создании браузерной платформы живого общения разработчики сталкиваются с четырьмя главными проблемами:

  1. Сетевая пробиваемость (NAT Traversal): до 20 25% пользователей мобильных сетей и корпоративных Wi Fi находятся за симметричным NAT или жёсткими файрволами, где прямое P2P соединение невозможно.
  2. Гонки состояний (Race Conditions) при матчинге: когда тысячи пользователей одновременно ищут собеседника, переключают комнаты или теряют связь, сигналинг сервер должен мгновенно перестраивать пары без "мёртвых" сессий.
  3. Расход бюджета на медиа трафик: ретрансляция аудио через TURN серверы без защиты от парсинга и утечки ключей быстро разоряет инфраструктуру.
  4. Трение при установке (Onboarding Friction): заставлять пользователя скачивать приложение из App Store или Google Play ради быстрого голосового звонка снижает конверсию на старте в несколько раз.

Ключевые архитектурные решения Shomla

Узел системыРеализация в ShomlaБизнес и продуктовый эффект
Сигналинг и координация сессийКастомный сервер на Go поверх Gorilla WebSockets и роутеров Fiber / ChiПоддержка тысяч одновременных полнодуплексных соединений с минимальным потреблением RAM и субмиллисекундной маршрутизацией SDP/ICE-кандидатов
Сетевая связность и обход NATГибридная схема STUN/TURN: связка собственных узлов и внешних API с динамической генерацией временных токенов (TURN REST API)Стабильное установление аудио канала в сложных мобильных сетях и полная защита TURN-релеев от несанкционированного использования трафика
Движок умного матчинга (Matchmaking Engine)In memory конечный автомат (State Machine) на Go с фильтрацией по языку, интересам, полу и формату (1 на 1)Мгновенный подбор релевантного собеседника без блокировок базы данных и зависших "призрачных" комнат при обрыве связи
Клиентская архитектура (Frontend)Чистый JavaScript (Zero Framework), PWA и вынос сетевой/фоновой обработки в WebWorkersНулевой вес сторонних UI бандлов, плавный интерфейс без фризов главного потока (UI thread) и работа на iOS/Android/Desktop как нативное приложение
Хранение данных и модерацияЛокальная персистентность на SQLite, поведенческие триггеры, детекция голосовой активности и инструменты автомодерацииВысокая скорость чтения/записи профилей и сессий без сетевых задержек внешней СУБД, поддержание безопасной среды внутри чата

Разрабатываете платформу с голосовой/видеосвязью, стримингом или голосовыми AI-агентами?

Архитектурные наработки Shomla позволяют запускать отказоустойчивые коммуникационные продукты в сжатые сроки

Проектирование и разработка WebRTC-приложений (аудио/видеочаты, EdTech-платформы, телемедицина, стриминг).

Настройка TURN/STUN-инфраструктуры, сигналинг-серверов на Go и алгоритмов матчинга под высокую нагрузку.

Интеграция real-time голосовых AI-ботов (WebRTC + VAD + LLM + синтез речи с низкой задержкой).