Задача
Основатели пришли с идеей простого 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