Saltar para o conteúdo principal
Projeto de referência próprio

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.

Rust e Go
Linguagens
Acesso antecipado
Cliente para Windows
Cifrada
Cada sessão
Como código
Infraestrutura

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.

O desafio

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.

O que o tornou difícil
  • 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
O que construímos

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.

1

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.

2

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.

3

Clientes de desktop e móvel

Uma aplicação de desktop para Windows, hoje em acesso antecipado, e um cliente móvel em desenvolvimento.

4

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.

O resultado

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.

O que alcança
  • 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

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.

Tem um problema difícil só seu.

A engenharia por trás desta plataforma é a mesma que trazemos para o trabalho com clientes. Conte-nos o que está a construir.