Разработка и внедрение приватного мессенджера для внутреннего использования (до 200 активных пользователей), работающего на нашем собственном сервере с белым IP. Обеспечить полный контроль над данными, независимость от внешних облачных сервисов, возможность интеграции с внутренними системами (боты, уведомления) и безопасную передачу сообщений, включая голосовые.
/weather и т.п.).[Android клиент] ←→ (HTTPS/WSS) ←→ [Nginx + SSL] ←→ [Centrifugo (WebSocket)] ←→ [Бэкенд (FastAPI)]
↓ ↓
[Статика веб] [SQLite/PostgreSQL]
↓
[Хранилище голосовых]
Centrifugo – это open-source сервер для доставки сообщений в реальном времени, написанный на Go. Он используется в крупных проектах (например, в «Битрикс24»). В нашем решении он берёт на себя всю сложность работы с WebSocket:
| Задача | Реализация в Centrifugo | Преимущество для нас |
|---|---|---|
| Управление тысячами постоянных соединений | Встроенный неблокирующий I/O | Не нужно писать свой WebSocket-сервер |
| Каналы (личные, групповые) | Подписка по шаблонам с проверкой прав через ваш бэкенд | Простая модель безопасности |
| Присутствие (онлайн/оффлайн) | API presence и presence_stats |
Готово «из коробки» |
| История сообщений (в рамках сессии) | Хранение в памяти или Redis (history_size) | Позволяет догрузить пропущенные сообщения при переподключении |
| Индикатор «печатает» | Отправка ephemeral-сообщений в канал | Не требует дополнительной БД |
| Push-уведомления (FCM/APNS) | Прокси на мобильные push-сервисы (опционально) | Единый интерфейс |
| Масштабирование | Горизонтальное через Redis | Без переписывания кода |
Centrifugo не хранит сообщения постоянно (только в памяти на ограниченное время), поэтому всю историю мы сохраняем в своей БД – это даёт полный контроль.
Так как сервер наш собственный (белый IP), достаточно минимальной конфигурации:
Оценка стоимости: Если сервер физический – уже есть. Если аренда VPS – порядка $10–15/мес.
POST /register – создание пользователя.POST /send_text – отправка текстового сообщения.POST /upload_voice – загрузка голосового файла, возврат URL.GET /history – получение истории сообщений с другим пользователем./help, /time).| Этап | Содержание | Результат | Срок |
|---|---|---|---|
| 1 | Настройка сервера (Ubuntu, Docker, Nginx, SSL, фаервол) | Рабочий сервер с белым IP и HTTPS | 2 дня |
| 2 | Развёртывание Centrifugo (конфигурация, запуск, проверка) | Рабочий WebSocket-эндпоинт | 1 день |
| 3 | Разработка бэкенда (FastAPI + SQLite) | API регистрации, отправки сообщений, загрузки голосовых | 5 дней |
| 4 | Разработка Android-приложения (минимальная версия) | Регистрация, список чатов, текстовые сообщения, голосовые | 10 дней |
| 5 | Интеграция Centrifugo в Android (подписка на каналы, приём сообщений) | Мгновенная доставка | 3 дня |
| 6 | Реализация ботов (например, echo-бот, бот-время) | Расширяемая логика | 2 дня |
| 7 | Тестирование (до 5 бета-пользователей) | Стабильная работа | 3 дня |
| 8 | Документация, обучение, развёртывание push-уведомлений (если нужно) | Готовый продукт | 4 дня |
Итого: ориентировочно 30 рабочих дней (один разработчик). Возможно параллельное выполнение этапов 3 и 4.
| Риск | Вероятность | Меры снижения |
|---|---|---|
| Отказ сервера (железо) | Низкая (для VPS – средняя) | Регулярное резервное копирование БД и голосовых файлов. Возможность быстрого переезда на другой VPS. |
| Проблемы с WebSocket на мобильных сетях | Средняя | Автоматическое переподключение с экспоненциальной задержкой; поддержка long-polling как fallback (Centrifugo умеет). |
| Нехватка дискового пространства | Низкая | Мониторинг и автоматическая очистка старых файлов. |
| Сложность настройки push-уведомлений на iOS | Высокая (если нужны) | На первом этапе push не делаем; используем только активное соединение. Для Android – Firebase Cloud Messaging, для iOS – решаем позднее. |
Предлагаемое решение сочетает надёжность enterprise-подхода (Centrifugo) с гибкостью самописного бэкенда. Мы получаем мессенджер, полностью контролируемый нашей компанией, с возможностью быстрого добавления ботов, голосовых сообщений и интеграций. Android-приложение обеспечит удобство для мобильных сотрудников. Проект реализуем за 4–6 недель силами 1–2 разработчиков.