Construir una plataforma de acceso remoto sobre peer-to-peer
Nuestro proyecto insignia es la plataforma a la que pertenece este sitio: un sistema que conecta dos máquinas a través de redes hostiles, directamente siempre que la red lo permite, y mantiene la latencia lo bastante baja para controlar la pantalla en directo. Su cliente para Windows está hoy en acceso anticipado. Como es nuestra, podemos hablar de ella abiertamente.
Mostrado como un proyecto insignia de primera mano: la propia plataforma de Vexaro, el producto al que pertenece este sitio. Los proyectos con clientes se tratan de forma confidencial, así que el trabajo del que podemos hablar abiertamente es el nuestro.
Conectar máquinas que la internet no quiere conectar
El requisito difícil era una conexión directa entre dos máquinas a través de redes diseñadas precisamente para impedirlo. No debía enrutar cada sesión por un centro de datos y tenía que ser lo bastante rápida para controlar la pantalla en directo. Todo lo demás en la plataforma se apoya en haber resuelto eso.
- Establecer conexiones directas a través de NAT y firewalls restrictivos
- Mantener la latencia lo bastante baja para el control de pantalla en directo, no solo para la transferencia de archivos
- Evitar enrutar cada sesión por un centro de datos, por coste y privacidad
- Cifrar cada sesión, con cada parte verificando exactamente con quién está conectada
Cuatro capas, cada una con la herramienta adecuada
Elegimos el lenguaje y la arquitectura adecuados para cada capa en lugar de imponer un solo stack a todo el sistema. Aplicamos el mismo criterio en los proyectos con clientes.
Un núcleo en Rust por velocidad y seguridad
Conecta de forma directa siempre que la red lo permite y, si no, a través de un relay autenticado, con cada sesión cifrada y cada identidad verificada. El núcleo crítico para el rendimiento está escrito en Rust, por la seguridad de memoria y una latencia predecible.
Un backend en Go
Las cuentas, los dispositivos y las reglas de acceso los gestiona un backend escrito en Go: la capa donde más importan la legibilidad y la iteración rápida.
Clientes de escritorio y móvil
Una app de escritorio para Windows, hoy en acceso anticipado, y un cliente móvil en desarrollo.
Infraestructura como código
Cada entorno está definido como código, con monitorización, registro y copias de seguridad integrados, además de una opción de Kubernetes para instalaciones Enterprise autoalojadas.
Una plataforma sobre la que funcionamos cada día
Describimos el resultado por capacidades y arquitectura, no con cifras inventadas. Este es el sistema que operamos, y demuestra que llevamos a producción las cosas difíciles en lugar de solo hablar de ellas.
- Las sesiones conectan de forma directa siempre que la red lo permite y, si no, a través de un relay autenticado
- El control remoto en directo se mantiene ágil, con un vídeo que se adapta a las condiciones de red
- La infraestructura se puede reproducir a partir del código
- Las sesiones directas van cifradas de extremo a extremo; cuando una red obliga a conectar por relay, el tráfico sigue cifrado en tránsito a través de relays operados por Vexaro
El stack detrás de la plataforma
Lenguajes
Rust y Go.
Aplicaciones
Una app de escritorio para Windows en acceso anticipado y un cliente móvil en desarrollo.
Infraestructura y datos
Contenedores e infraestructura como código, con monitorización, registro y copias de seguridad integrados.