Estamos usando o DynamoDB e o ElastiCache Redis por diferentes motivos.
DynamoDB:
- Tem uma linguagem de consulta capaz de fazer coisas mais complexas (maior que, entre etc.)
- É alcançável por meio de uma API externa da Internet (regiões diferentes são alcançáveis sem alterações ou infraestrutura própria)
- Permissões com base em tabelas ou mesmo linhas são possíveis
- Escalas em termos de tamanho de dados até o infinito
- Você paga por solicitação -> números baixos de solicitação significa fatura menor, números altos de solicitação significa fatura mais alta
- Lê e grava são diferentes nos custos
- Os dados são salvos como redundantes pela AWS em vários recursos
- O DynamoDB é altamente disponível imediatamente
- O escalonamento automático está disponível no próprio serviço
ElastiCache Redis:
- Linguagem de consulta simples - sem recursos complexos
- Não está pronto para uso (acessível) de outras regiões.
- Você está sempre limitado à quantidade de memória (ou à soma de todas as instâncias primárias em um cluster)
- O sharding em várias instâncias só é possível no seu aplicativo - o Redis não faz nada aqui (o cluster Redis ajuda aqui, mas a lógica do sharding ainda está dentro do driver / sdk que você está usando no seu aplicativo) - scale-in and scale- 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, precisa configurar a replicação (não é possível entre diferentes regiões)
- Você precisa usar réplicas para alta disponibilidade
- Nenhum dimensionamento automático disponível (consulte a parte sobre o dimensionamento acima)
Portanto, nossa configuração na maioria das vezes é: Caches simples com alto volume de solicitações no Redis, suportadas pelo DynamoDB como armazenamento permanente e durável. Com isso, limitamos os custos à medida que obtemos um desconto implícito para nossas leituras pelo modelo de pagamento por instância do Redis, mas também obtemos o benefício da redundância do DynamoDB e até podemos usar a linguagem de consulta do DynamoDB para coisas mais complexas ( se precisarmos).
Espero que ajude!
Atualização: com o anúncio do Amazon DynamoDB Accelerator ( https://aws.amazon.com/de/dynamodb/dax/ ), passamos a usar o DAX como ele é (no final) exatamente o que estávamos fazendo com o combinação de DynamoDB e Redis. Como o DAX é totalmente gerenciado pela AWS e nos dá a chance de sempre usar a linguagem DynamoDB em nosso aplicativo, mas também obter os benefícios de um cache de gravação como o Redis.