Tornar o uso do Redis mais enxuto
(engineering.ab180.co)Relato de engenharia sobre um trabalho para reduzir custos causados pelo armazenamento, no Redis, de grandes volumes de dados em formato JSON sem compressão e pela falta de compartilhamento de modelos entre serviços Redis
- Ao mudar a forma de armazenar os mesmos dados de origem, foi possível economizar 52% do uso de memória no ElastiCache e 66% dos custos
- Em vez de JSON, foi usado Protobuf para explicitar a especificação dos dados e, ao mesmo tempo, padronizar a forma de leitura/escrita de dados entre os serviços
- Na comparação com o brotli, o brotli apresentou a maior taxa de compressão. Foram comparados o tempo gasto e a taxa de compressão conforme o tamanho da window e o nível de compressão, encontrando e aplicando o valor ideal
- Ao usar UUID como chave do Redis, foi possível economizar um pouco de memória usando ascii85
- Reconhecendo que a dívida técnica relacionada ao domínio pode ser um obstáculo para o trabalho de redução de custos de infraestrutura, isso foi saneado com um schema explícito
4 comentários
Com as especificações dos servidores ficando cada vez melhores, eu estava mais focado em criar o produto rapidamente do que em me preocupar com otimização, então faz tempo que não via um conteúdo tão bom que me fizesse pensar em otimização de novo!!
Isso mesmo, na prática o JSON é mais usado pela vantagem de ser fácil de ler e de estruturar de forma flexível, mas em termos de tamanho é mais conveniente usar um protocolo binário como protobuf, e, indo ao extremo, algo como estruturas PE tradicionais ou protocolos como o TCP, que são protocolos binários extremamente otimizados, acaba sendo melhor. Acho que a expressão "dívida técnica relacionada ao domínio" descreve isso perfeitamente.
Muito legal.
Chefe! Aumente muito o salário dessa pessoa!!