Модулика
← Все проекты
  • Сети
  • Мобильные приложения
  • Инфраструктура

VPN-сервис с клиентами под все платформы

С нуля построили VPN-сервис — серверную инфраструктуру в 14 локациях, клиенты для iOS, Android, Windows и macOS и личный кабинет с подпиской.

Клиент
Молодая компания в сфере защиты личных данных
Год
2026
Срок
3 месяца
Иллюстрация интерфейса
14локаций на старте
18 мсмедианная задержка до ближайшего сервера
4платформы с общим ядром логики
50 000+пользователей

Задача

Основатели пришли с идеей простого VPN «для людей»: одна кнопка, без настроек и технических терминов. Нужно было пройти путь от прототипа до работающего продукта с подпиской и поддержкой, не раздув команду.

Как устроено

Инфраструктура описана в Terraform — новая локация поднимается за 20 минут. Каждый сервер отдаёт метрики в Prometheus, а балансировщик раздаёт клиентам конфигурацию с коротким сроком жизни, поэтому выведенный из работы сервер перестаёт получать новых пользователей сразу.

Личный кабинет и оплата отделены от VPN-инфраструктуры: даже при проблемах с оплатой у пользователя не рвётся соединение посреди работы.

Сложности и как мы их решили

01Обычный WireGuard блокируют по сигнатуре

Проблема

В части сетей «чистый» WireGuard распознавался и блокировался провайдерами уже через несколько минут после подключения — пользователи думали, что сервис просто не работает.

Решение

Добавили второй транспорт с маскировкой под обычный TLS-трафик и автоматический выбор протокола. Клиент сам пробует варианты в фоне и запоминает рабочий для конкретной сети.

02Серверы были загружены неравномерно

Проблема

Пользователи выбирали «Амстердам», потому что он первый в списке, и один сервер держал 70% нагрузки, пока остальные простаивали.

Решение

Сделали балансировщик на Go, который учитывает задержку до клиента, загрузку процессора и канала каждого сервера. В интерфейсе пользователь выбирает страну, а конкретный сервер подбирается автоматически.

03Четыре приложения — четыре набора ошибок

Проблема

Логика подключения, переподключения и смены сети писалась отдельно под каждую платформу и вела себя по-разному в одинаковых ситуациях.

Решение

Вынесли всю логику состояний в общее ядро на Go, которое собирается в библиотеку под каждую платформу. Отдельно под каждую платформу написаны только интерфейс и работа с системой.

Результат

Сервис запустился в срок и набрал больше 50 000 пользователей. Доля обращений в поддержку с жалобой «не подключается» снизилась с 31% до 6% после внедрения автоматического выбора протокола.

Технологии

  • Go
  • WireGuard
  • Xray
  • Kotlin
  • Swift
  • Avalonia UI
  • PostgreSQL
  • Prometheus
  • Terraform
Следующий проект

«Поток» — планировщик задач для команд