Construir uma plataforma de acesso remoto sobre peer-to-peer
O nosso projeto de referência é a plataforma a que este site pertence: um sistema que liga duas máquinas através de redes hostis, diretamente sempre que a rede o permite, e mantém a latência baixa o suficiente para controlar um ecrã ao vivo. O cliente para Windows está hoje em acesso antecipado. Por ser nossa, podemos falar dela abertamente.
Apresentado como um projeto de referência de primeira mão: a própria plataforma da Vexaro, o produto a que este site pertence. Os trabalhos com clientes são mantidos confidenciais, por isso o trabalho de que podemos falar abertamente é o nosso.
Ligar máquinas que a internet não quer ligadas
O requisito difícil era uma ligação direta entre duas máquinas através de redes concebidas precisamente para o impedir. Não podia encaminhar cada sessão por um centro de dados e tinha de ser rápida o suficiente para controlar um ecrã ao vivo, de forma interativa. Tudo o resto na plataforma assenta na resolução deste problema.
- Estabelecer ligações diretas através de NAT e firewalls restritivos
- Manter a latência baixa o suficiente para o controlo de ecrã ao vivo, não apenas a transferência de ficheiros
- Evitar encaminhar cada sessão por um centro de dados, por questões de custo e privacidade
- Cifrar cada sessão, com cada parte a verificar exatamente a quem está ligada
Quatro camadas, cada uma na ferramenta certa
Escolhemos a linguagem e a arquitetura adequadas a cada camada em vez de impor uma única stack a todo o sistema. Aplicamos o mesmo discernimento nos projetos com clientes.
Um núcleo em Rust pela velocidade e segurança
Liga diretamente sempre que a rede o permite e, quando não permite, através de um relay autenticado. Cada sessão é cifrada e cada identidade verificada. O núcleo crítico para o desempenho está escrito em Rust, pela segurança de memória e por uma latência previsível.
Um backend em Go
As contas, os dispositivos e as regras de acesso são tratados por um backend escrito em Go, a camada onde a legibilidade e a iteração rápida mais importam.
Clientes de desktop e móvel
Uma aplicação de desktop para Windows, hoje em acesso antecipado, e um cliente móvel em desenvolvimento.
Infraestrutura como código
Cada ambiente está definido como código, com monitorização, registo e cópias de segurança integrados, e ainda uma opção Kubernetes para instalações Enterprise auto-alojadas.
Uma plataforma sobre a qual corremos todos os dias
Descrevemos o resultado por capacidades e arquitetura, não com números inventados. Este é o sistema que operamos, e mostra que levamos à produção as coisas difíceis em vez de apenas falar delas.
- As sessões ligam diretamente sempre que a rede o permite e, quando não permite, através de um relay autenticado
- O controlo remoto ao vivo mantém-se ágil, com um vídeo que se adapta às condições de rede
- A infraestrutura é reproduzível a partir do código
- As sessões diretas são cifradas de ponta a ponta; quando uma rede obriga a uma ligação via relay, o tráfego continua cifrado em trânsito através de relays operados pela Vexaro
A stack por trás da plataforma
Linguagens
Rust e Go.
Aplicações
Uma aplicação de desktop para Windows em acesso antecipado e um cliente móvel em desenvolvimento.
Infraestrutura e dados
Contentores e infraestrutura como código, com monitorização, registo e cópias de segurança integrados.