Как устроена наша инфраструктура: DevOps-практики в небольшом VPN-сервисе
Обычно про внутреннюю кухню не пишут. Мы расскажем — потому что от неё напрямую зависит, работает ли ваш VPN в тот момент, когда он нужен.
Контейнеры и воспроизводимость
Все сервисы живут в Docker-контейнерах: бот, прокси-ядро, база данных, мониторинг. Это даёт предсказуемость — окружение описано в конфигурации, и развернуть такое же на новом сервере можно за минуты.
Важное правило, которое мы для себя вывели: править только исходники, никогда не внутри контейнера. Выглядит очевидно, но однажды мы на этом обожглись — временная правка жила в работающем контейнере, всё работало, а при пересборке исчезла. Проблему искали потом полтора месяца. Теперь после каждого изменения проверяем, что оно есть и в исходнике, и в собранном образе.
Нужен VPN, который не отваливается?
49 конфигураций в 11 странах, три протокола на выбор. Заведите аккаунт на сайте и проверьте три дня бесплатно.
Мониторинг на двух уровнях
За инфраструктурой следят Prometheus с Alertmanager и Uptime Kuma. Проверяются не только «жив ли сервер», но и то, что реально важно:
- Отвечает ли прокси-ядро на каждой ноде — не просто порт открыт, а именно сервис работает
- Доходит ли промежуточный узел до своей ноды — отдельная проверка для каждой пары
- Жив ли канал приёма платежей
- Свободное место, память, исходящий трафик
Отдельный урок, который стоил нам нервов: статус «цель опрашивается» и «проверка проходит» — это разные вещи. Мы однажды отчитались «всё зелёное», глядя не на ту метрику, пока сервис реально лежал. Теперь смотрим именно на результат проверки.
Платежи: сверка вместо надежды
Платёжный шлюз уведомляет нас о проведённой оплате вебхуком. Но сеть ненадёжна: уведомление может не дойти. Поэтому раз в пять минут идёт автоматическая сверка — мы сами запрашиваем список успешных платежей и дочитываем пропущенные.
Если человек оплатил, а уведомление потерялось, подписка активируется в течение пяти минут без обращения в поддержку. То же самое работает и для покупки дополнительных устройств.
Бэкап перед каждым изменением
Любая правка боевого конфига начинается с копии. Звучит занудно, но несколько раз это спасало: ошибку видно сразу, откат занимает секунды.
Отдельное правило для правок с автоматикой — проверка на содержимое. Скрипт, вырезающий кусок кода, обязан убедиться, что вырезает именно то, что нужно. Однажды такая проверка остановила скрипт, который из-за неверно определённой границы собирался удалить одну строку вместо тридцати семи.
Разбор инцидентов
После каждой заметной поломки мы записываем не «что сломалось», а почему это не заметили раньше. Самые дорогие наши ошибки объединяет одно: сбой маскировался под успех. Заглушка возвращала код 200 вместо ошибки. Скрипт писал в лог «обновлено», ничего не обновив. Флаг отправки уведомления ставился независимо от того, доставлено ли оно.
Поэтому теперь проверяем не код ответа, а факт: не «вернулось 200», а «вернулось одиннадцать мегабайт, и это похоже на базу данных».
Зачем вам это знать
Затем, что надёжность VPN — это не количество серверов в рекламе. Это то, насколько быстро команда узнаёт о проблеме и насколько честно разбирает свои ошибки. Мы стараемся делать и то, и другое.
Проверьте на своём устройстве
Три дня бесплатно, карта не нужна. Аккаунт заводится на сайте, поддержка отвечает в Telegram.
Читайте также
Как мы узнаём о проблеме раньше, чем вы напишете
Что именно проверяет наш мониторинг, почему простого пинга недостаточно и как устроена реакция на бл…
О сервисеКакие ваши данные мы храним и как защищаем
Честный разбор: что технически необходимо для работы сервиса, чего мы не собираем принципиально и ка…
СетиAnycast, CDN и маршрутизация: почему один адрес ведёт в разные места
Как работает раздача контента по всему миру, что такое Anycast и почему через VPN некоторые сайты вд…