A Microsoft acaba de apresentar o Hyperlight, um novo projeto open-source baseado em Rust, projetado para oferecer segurança e eficiência em funções virtualizadas. O Hyperlight é uma solução leve de virtualização que opera tanto em Linux (via KVM) quanto em Windows (via Hyper-V), proporcionando um isolamento robusto para cada requisição de função. Com isso, a Microsoft busca atender a uma ampla gama de cenários, desde serviços em nuvem até dispositivos IoT e aplicações industriais.
Segurança e velocidade: desafios resolvidos
Garantir segurança e rapidez simultaneamente é um dos maiores desafios no universo da computação moderna. Soluções tradicionais de virtualização, como Hyper-V e KVM, embora seguras, costumam apresentar tempos de inicialização elevados e alto consumo de recursos. Antes do Hyperlight, os provedores de infraestrutura precisavam manter máquinas virtuais aquecidas (“warm VMs”) para garantir baixa latência, o que gerava custos elevados e desperdício de recursos.
O Hyperlight resolve esses problemas ao criar micro-VMs em apenas 1 a 2 milissegundos. Embora não tão rápido quanto runtimes como Wasmtime, esta abordagem combina a segurança de VMs com eficiência, tornando prático escalonar funções sob demanda e reduzir ociosidade.
Como funciona o hyperlight?
Diferentemente de hipervisores tradicionais, o Hyperlight adota uma abordagem minimalista. Ele aloca uma fatia linear de memória e designa uma CPU virtual, eliminando etapas como mapeamento de dispositivos virtuais e inicialização de kernels. Os convidados (“VM guests”) do Hyperlight combinam um kernel especializado e um runtime de aplicação em um programa único, garantindo desempenho otimizado.
Essa arquitetura permite que aplicações executem códigos fornecidos por usuários com segurança, protegendo o host e possibilitando customizações serverless. O Hyperlight suporta componentes WebAssembly e funções autônomas em linguagens como Rust e C, ampliando seu alcance.
Exemplo de uso no rust?
No Rust, o Hyperlight oferece bibliotecas dedicadas para configurar e gerenciar sandboxes. Um exemplo básico é criar uma sandbox com a função “PrintOutput”, que imprime uma mensagem:
use std::thread;
use std::time::Duration;
use hyperlight_host::{MultiUseSandbox, UninitializedSandbox};
fn main() -> hyperlight_host::Result<()> {
let guest = hyperlight_testing::simple_guest_as_string().unwrap();
let mut uninit_sandbox = UninitializedSandbox::new(guest, None, None, None)?;
let mut sandbox: MultiUseSandbox = uninit_sandbox.evolve(Noop::default())?;
let result = sandbox.call_guest_function_by_name(
"PrintOutput", ReturnType::Int,
Some(vec![ParameterValue::String("Hello from VM guest".to_string())])
);
assert!(result.is_ok());
Ok(())
}
Este exemplo demonstra como configurar um ambiente seguro e executar códigos isolados, com flexibilidade e rapidez.
Adotando o Hyperlight na computação cloud-native
A Microsoft planeja submeter o Hyperlight à Cloud Native Computing Foundation (CNCF) como um projeto sandbox. Esta colaboração visa promover o desenvolvimento do Hyperlight na comunidade open-source, integrando-o à paisagem cloud-native e habilitando novas possibilidades em aplicações de ponta e nuvem.
Participe do projeto
O Hyperlight é licenciado sob a Apache 2.0, reforçando o compromisso da Microsoft com inovação colaborativa. Desenvolvedores e profissionais de TI podem explorar o repositório no GitHub, contribuir para o código e propor melhorias. Descubra como o Hyperlight pode transformar suas aplicações e experimente agora!