Nos dias de hoje, é inegável que a escalabilidade e a disponibilidade são pontos cruciais para o sucesso de qualquer aplicação. Figma, uma das ferramentas de design colaborativo mais populares, decidiu inovar ao desenvolver um serviço de proxy Redis interno chamado FigCache. Essa decisão veio em um momento em que a fragmentação da pilha de caching estava se tornando uma verdadeira dor de cabeça para a disponibilidade do site. Vamos explorar como essa reestruturação não só melhorou a performance, mas também apresentou lições valiosas para nós, profissionais de tecnologia.

Desafio e motivação

A equipe da Figma identificou que as lacunas de escalabilidade e confiabilidade em sua plataforma Redis estavam ameaçando a disponibilidade do site. Para qualquer um que já lidou com Redis em escala, os sintomas são familiares: crescimento no volume de conexões e uma avalanche de requisições saturando a I/O do Redis. Essas questões não eram apenas tecnológicas, mas impactavam diretamente a experiência do usuário. A solução adotada, portanto, foi a criação de um proxy que centralizasse e simplificasse o acesso aos clusters Redis, permitindo que a equipe se concentrasse na construção de novas funcionalidades.

A arquitertura do FigCache

O FigCache é um serviço stateless que funciona como um intermediário entre as aplicações clientes e os clusters Redis na AWS. A equipe desenvolveu uma biblioteca chamada ResPC, que oferece um framework RPC sobre o Redis Serialization Protocol (RESP). O design é inteligente: separa a camada de frontend, que cuida do gerenciamento de conexões e do parsing de comandos, da camada de backend, que gerencia a execução dos comandos nos clusters. Essa separação não apenas melhora a extensibilidade, mas também permite que novas funcionalidades sejam adicionadas sem interromper o funcionamento atual.

Configuração dinâmica e flexibilidade

Uma das inovações mais interessantes do FigCache é o uso de um programa Starlark para configurar a lógica de roteamento e processamento de comandos. Ao invés de depender de arquivos de configuração estáticos, a lógica é avaliada em tempo de execução, permitindo que operadores mudem regras de rejeição e roteamento sem precisar fazer novas implantações de binários. Isso é um divisor de águas para a manutenção e evolução do sistema.

Dicas para arquiteturas de caching

Conclusão

A transformação realizada pela Figma em sua arquitetura de caching com o FigCache é um exemplo claro de como a construção de soluções sob medida pode resolver problemas complexos de escalabilidade e disponibilidade. Esse tipo de abordagem não só melhora a performance, mas também oferece uma visão mais clara e controlável do sistema. Como profissionais de tecnologia, devemos sempre estar abertos a inovar e adaptar nossas arquitecturas às necessidades do negócio e dos usuários. Afinal, a infraestrutura, muitas vezes, se torna o produto principal.

Refletindo sobre isso, não posso deixar de pensar na importância de estarmos sempre atualizados e prontos para adotar novas tecnologias que nos ajudem a resolver desafios antigos. A experiência da Figma é uma lição que vale a pena ser estudada e, quem sabe, aplicada em nossos próprios projetos.