Executando verificação de segurança...
9

Cloudflare reescreve seu principal sistema em Rust e obtém ganhos de desempenho e segurança

A Cloudflare anunciou uma atualização expressiva em sua infraestrutura, que reduziu o tempo médio de resposta em 10 milissegundos e aumentou o desempenho em 25%, segundo testes independentes realizados por redes de distribuição de conteúdo (CDNs).

O FL — considerado o “cérebro” da Cloudflare — é responsável pela aplicação de regras de segurança, mitigação de ataques DDoS, roteamento de tráfego e diversas configurações personalizadas de clientes. Até então, ele operava em LuaJIT, utilizando o framework OpenResty.

Em julho de 2024, a Cloudflare iniciou uma reconstrução completa do sistema, batizada de “FL2”. A nova versão foi desenvolvida em Rust e utiliza o framework interno Oxy, o mesmo que já alimenta serviços críticos como o Apple iCloud Private Relay e o Cloudflare Zero Trust Gateway.

Segundo a empresa, o Rust elimina classes inteiras de erros comuns em linguagens como C e Lua, como falhas de memória e data races, enquanto o Oxy permite realizar atualizações sem interromper conexões ativas. Além disso, o FL2 utiliza menos da metade do consumo de CPU e memória em comparação com o FL1.

A migração completa está prevista para ser concluída até o fim de 2025, com a desativação definitiva do sistema anterior no início de 2026. Paralelamente, a Cloudflare também está reescrevendo em Rust o serviço de terminação HTTP e TLS — o último componente ainda baseado em NGINX.

Carregando publicação patrocinada...
3

O post muito interessante, Rust tem cada vez mais ganhado espaço no mercado, não só pela velocidade, mas pela segurança, acho que isso acaba sendo o maior diferencial.

Tenho estudado Rust a um tempinho e é bem interessante ser condicionado a tomar alguns cuidados que eu não tenho em outras, não estou dizendo que ela é melhor que outras, apenas que a abordagem em relação a alguns cuidados, tratamentos de erros, mesmo em codigo simples, faz você pensar: isso é interessante.

Acho que para situações em que velocidade acaba sendo o ponto principal, outras linguagens vão se sair melhor que Rust, mas quando você pensa em ganhos em velocidade e segurança Rust tem se saido super bem e se destacado.

Obrigado pelo post. 😁

2

Não conhecia projetos que usava em prod LuaJIT, interessante! É isso que penso se quiser dá pra usar bash no servidor se você quiser.

Mas eu acho que em "qualquer" linguagem compilada ele iria obter um bom resultado, go por exemplo, zig. (juro que não sou hater de rust, gosto tecnicamente da linguagem)

Mas eles com certeza sabem muito mais do que eu.

2

O ponto não era obter somente um bom resultado. Esse bom resultado levou em consideração segurança também, e não só otimização. Nunca toquei em Zig, e por isso não posso afirmar com plenitude, mas pelo o que entendi sobre Zig até hoje, é que Zig previne muitos erros que o C deixa passa.

Acho interessante trabalhar mais nesse "C" deixa passar, porém estaria tangenciado o assunto. No caso do Zig, há a mesma liberdade de C, e por isso pode, seja por n motivos, gerar um problema de segurança, apesar de ser muito moderno e poderosos. Em Rust, o compilador te obriga a lidar com memória de maneira segura, senão nem compila.


Sobre o go, já tem diversos casos que rescrever o Backend em de Go para Rust melhorou a performance. Porém isso depende muito do projeto. No caso da Cloudfire, todo ms conta,e por isso devem ter escolhido Rust e não Go.


Compartilho da surpresa do o LuaJit.

1

Sim, a melhora é real!

Eu disse que poderia ter sido feito em qualquer linguagem que teria retorno, porque de luaJit para qualquer outra coisa e ter bom resultado.

Apesar que pra eles terem ganhado apenas 10ms, usando Rust acho que o código em Lua já era bem inteligente, pois o avanço foi pequeno.

Pequeno em 1 req, mas para cloudflare 2ms já é muita coisa, falo que do que tem agora pra -10 não é tanto por mudar uma lang.

E go perde pra rust por conta do GC, Rust é fora do comum com o modo de liberação de memória.

2

Acredito que a escolha deles foi tomada com base naquele equilíbrio: velocidade+segurança.

Digo isso pois como você comentou, tem linguagens que podem ter ganhos de velocidade maior que Rust como o próprio Zig, porém acho que existe o risco de cair na mesma questão do C e do C++, liberdade demais na hora de escrever o código pode fazer você deixar alguma coisa passar, por melhor programador que seja.

Nesse sentido o Rust te impede de fazer muita coisa e quando voce decide fazer, você precisa explicitamente dizer: quero fazer isso!

Acho que aqui que mora o diferencial no Rust, a parte de segurança fazem dela uma ótima opção quando você quer o equilíbrio de velocidade + segurança, mas se o objetivo for velocidade acho que um Zig vai se sair melhor.

O Go eu nao conheço muito bem, mas também acredito que seria uma boa opção pelo pouco que vi.