Saltar al contenido principal
Proyecto insignia propio

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.

Rust y Go
Lenguajes
Acceso anticipado
Cliente para Windows
Cifrada
Cada sesión
Como código
Infraestructura

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.

El reto

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.

Qué lo hizo difícil
  • 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
Lo que construimos

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.

1

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.

2

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.

3

Clientes de escritorio y móvil

Una app de escritorio para Windows, hoy en acceso anticipado, y un cliente móvil en desarrollo.

4

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.

El resultado

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.

Qué consigue
  • 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

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.

¿Tienes un problema difícil propio?.

La ingeniería detrás de esta plataforma es la misma que llevamos al trabajo con clientes. Cuéntanos qué estás construyendo.