Построение платформы удалённого доступа поверх peer-to-peer
Наш флагманский проект: платформа, к которой относится этот сайт. Эта система соединяет две машины через враждебные сети, напрямую везде, где это позволяет сеть, и держит задержку достаточно низкой для управления экраном в реальном времени. Её клиент для Windows сейчас на этапе раннего доступа. Раз платформа наша, мы можем рассказывать о ней открыто.
Это наш собственный флагманский проект: платформа Vexaro, продукт, к которому относится этот сайт. Проекты клиентов мы держим в тайне, поэтому открыто можем рассказывать только о своей работе.
Соединение машин, которые интернет не хочет соединять
Главным требованием было прямое соединение двух машин через сети, которые спроектированы как раз для того, чтобы такому соединению мешать. При этом нельзя было гнать каждую сессию через дата-центр, а скорости должно было хватать для интерактивного управления экраном в реальном времени. Всё остальное в платформе построено поверх решения этой задачи.
- Установить прямые соединения через NAT и ограничивающие файрволы
- Удержать задержку достаточно низкой для живого управления экраном, а не только передачи файлов
- Избежать маршрутизации каждой сессии через дата-центр, ради стоимости и приватности
- Шифровать каждую сессию и проверять подлинность сторон, чтобы каждая точно знала, с кем соединена
Четыре уровня, каждый в правильном инструменте
Мы подбирали язык и архитектуру под каждый уровень, а не навязывали один стек всей системе. Тот же подход мы применяем в проектах клиентов.
Ядро на Rust ради скорости и безопасности
Платформа соединяет машины напрямую везде, где позволяет сеть, а в остальных случаях через аутентифицированный ретранслятор. Каждая сессия зашифрована, подлинность сторон проверяется. Критичное к производительности ядро написано на Rust ради безопасности памяти и предсказуемой задержки.
Бэкенд на Go
Учётные записи, устройства и правила доступа обслуживает бэкенд на Go. На этом слое важнее всего читаемость кода и быстрые итерации.
Десктопный и мобильный клиенты
Десктопное приложение для Windows, которое сейчас на этапе раннего доступа, и мобильный клиент в разработке.
Инфраструктура как код
Каждое окружение описано как код, со встроенными мониторингом, логированием и резервным копированием, плюс вариант на Kubernetes для самостоятельных установок Enterprise.
Платформа, на которой мы работаем каждый день
Мы описываем результат через возможности и архитектуру, а не через выдуманные цифры. Это система, которую мы эксплуатируем сами, и она показывает, что мы выпускаем сложные вещи, а не только рассказываем о них.
- Сессии соединяются напрямую везде, где позволяет сеть, а в остальных случаях через аутентифицированный ретранслятор
- Живое удалённое управление остаётся отзывчивым, а видео подстраивается под сетевые условия
- Инфраструктура воспроизводится из кода
- Прямые сессии защищены сквозным шифрованием; если сеть вынуждает использовать ретранслируемое соединение, трафик остаётся зашифрованным при передаче через ретрансляторы, которыми управляет Vexaro
Стек, стоящий за платформой
Языки
Rust и Go.
Приложения
Приложение для Windows в раннем доступе; мобильный клиент в разработке.
Инфраструктура и данные
Контейнеры и инфраструктура как код со встроенными мониторингом, логированием и резервным копированием.