Estamos usando o DynamoDB e o ElastiCache Redis por diferentes motivos.
DynamoDB:
- Possui uma linguagem de consulta que é capaz de fazer coisas mais complexas (maior que, entre, etc.)
- É acessível por meio de uma API externa voltada para a Internet (diferentes regiões podem ser acessadas sem qualquer alteração ou infraestrutura própria)
- Permissões com base em tabelas ou até linhas são possíveis
- Escala em termos de tamanho de dados ao infinito
- Você paga por solicitação - > números de pedidos baixos significam fatura menor, números de solicitações altas significam fatura maior
- As leituras e gravações são diferentes nos custos
- Os dados são salvos como redundantes pela AWS em várias instalações
- O DynamoDB é altamente disponível e pronto para uso
- O escalonamento automático está disponível no próprio serviço
ElastiCache Redis:
- Linguagem de consulta simples - sem recursos complexos
- É (fora da caixa) não acessível de outras regiões.
- Você está sempre limitado à quantidade de memória (ou a soma de todas as instâncias primárias em um cluster)
- A exclusão de várias instâncias só é possível em seu aplicativo - o Redis não faz nada aqui (o cluster Redis ajuda aqui, mas a lógica de fragmentação ainda está dentro do driver / sdk que você está usando em seu aplicativo) e scale-out não é possível sem tempo de inatividade no momento
- Você paga por instância, independentemente da carga ou do número de solicitações.
- Se você deseja redundância dos dados, é necessário configurar a replicação (não é possível entre diferentes regiões)
- Você precisa usar réplicas para alta disponibilidade
- Não há escalonamento automático disponível (veja a parte sobre sem escala acima)
Portanto, nossa configuração na maior parte do tempo é: caches simples com alto volume de solicitações no Redis com suporte do DynamoDB como armazenamento permanente e de longa duração. Com isso, limitamos os custos, pois obtemos um desconto implícito para nossas leituras pelo modelo pay-per-instance do Redis, mas também obtemos o benefício da redundância do DynamoDB e podemos até usar a linguagem de consulta do DynamoDB para coisas mais complexas ( se precisarmos disso.
Espero que ajude!
Atualização: com o anúncio do Acelerador do Amazon DynamoDB ( link ), estamos mudando para usar o DAX como é (no final) exatamente o que estávamos fazendo com a combinação do DynamoDB e do Redis. Como o DAX é totalmente gerenciado pela AWS e nos dá a chance de sempre usar a linguagem do DynamoDB em nosso aplicativo, mas também obtém os benefícios de um cache write-through como o Redis.