Como Economizei 50 mil dólares com DynamoDB!
Eu já consegui economizar 50 mil dólares, só mudando o tipo de leitura no DynamoDB. Mas antes de explicar como eu fiz isso, vamos aos conceitos!
Conteúdo:
- O que é um DynamoDB?
- Query: Procurando um Problema em um Servidor Específico
- Scan: Procurando Problemas em Todos os Servidores?
- Tipos de Leitura no DynamoDB
- Custo de Leitura no DynamoDB
- Resumo
O que é um DynamoDB?
O DynamoDB é um banco de dados NoSQL (chave-valor) da AWS. Quando você precisa buscar informações nele, existem duas maneiras principais de fazer isso: Query e Scan.
Imagine que sua empresa está usando o DynamoDB para armazenar informações de eventos de monitoramento dos servidores. Cada evento contém um ID de servidor, um timestamp e mensagens de log.
Query: Procurando um Problema em um Servidor Específico
O que é?
O Query funciona como uma busca direcionada. Você já sabe qual servidor e qual período precisa analisar, então faz uma busca direta por esses critérios.
Características:
- Rápido e eficiente para buscas específicas.
- Precisa de um ID de servidor (chave primária) e pode filtrar por timestamp (chave de classificação).
Exemplo de Query:
Imagine que você precisa verificar erros ocorridos no servidor ID_123 na última hora. Você faz a seguinte consulta:
Servidor: ID_123
Horário: Entre 10:00 e 11:00
O DynamoDB retorna apenas os eventos para o servidor específico no intervalo de tempo definido. Você lê apenas as linhas que interessam.
Scan: Procurando Problemas em Todos os Servidores
O que é?
O Scan é como uma varredura completa de todos os eventos. Se você quer procurar problemas gerais ou eventos de todos os servidores, precisa varrer a tabela inteira.
Características:
- Lento e consome mais recursos, pois lê toda a tabela.
- Ideal para buscas gerais, onde você não tem um ID específico.
Exemplo de Scan:
Agora, imagine que você precisa buscar erros de alta gravidade em todos os servidores ocorridos nas últimas 24 horas. Como não tem um ID de servidor específico, é necessário fazer um Scan com filtro:
Filtro: Gravidade do erro >= "Alto" e Horário >= "10:00 de ontem"
O DynamoDB varre todos os eventos de um em um de todos os servidores para aplicar o filtro e trazer os resultados.
Tipos de Leitura no DynamoDB
O DynamoDB cobra com base em unidades de leitura (RCU) e unidades de escrita (WCU) que você usa. Para entender os custos, é preciso conhecer:
RCU (Read Capacity Unit): Medida de capacidade de leitura. 1 RCU = 1 leitura eventual de até 4 KB por segundo.
Leitura Consistente:
1 unidade de leitura é suficiente para ler até 4 KB de dados com total precisão.
Sempre retorna dados mais recentes, bom para aplicações que não podem tolerar inconsistência.Leitura Eventual:
1 unidade de leitura pode cobrir até 8 KB de dados, mas com uma chance de a informação estar ligeiramente desatualizada, o que consome menos RCU.
Custo de Leitura no DynamoDB
Agora a parte legal! 🎉
Obs: Os valores e informações a seguir são fictícios! 🚨
Observando o cenário da imagem abaixo:
Cenário Atual: Scan Completo
- Quantidade de Itens na Tabela: 200.547 itens armazenados.
- Tamanho da Tabela: 254,1 MB (convertido para 254.100 KB).
- RCU (Unidade de Capacidade de Leitura): Cada unidade de leitura consegue processar 4 KB de dados.
- ReadRequestUnits (Solicitações de Leitura): 64.483.473.398,00, que representa a quantidade de unidades de leitura necessárias. OBS: A cada 1 milhão de RRU's é consumida 1 RCU.
Resultado:
O custo total de leitura de toda a tabela foi de $15.650,87 no mês!
Mudança para Query: Cenário Otimizado
Antes, toda vez que a aplicação precisava consultar algo, ela consultava 100% da tabela usando Scan, percorrendo todos os itens até encontrar o que precisava.
Quando mudamos para Query, o cenário mudou. Agora, veja na tabela abaixo o impacto:
Se a consulta for feita em 10% da tabela, já há uma economia de $14.085,78.
Agora, imagine cenários em que as consultas são feitas em 1% da tabela ou até menos! É babado!
Resumo:
Query é como pedir uma lista específica de itens. Você paga apenas pelos dados que realmente lê.
Scan é como vasculhar uma caixa inteira para encontrar itens específicos. Você paga por todo o conteúdo da caixa, mesmo que precise de apenas algumas coisas.
Então, foi assim que consegui economizar 50 mil dólares mudando apenas a estratégia de leitura no DynamoDB! 😎
E aí, o que achou?