Foi anunciado hoje mais um serviço dentro da plataforma de cloud computing da Amazon também conhecido por AWS. O serviço ElastiCache provê uma uma forma robusta e escalável de adicionar caches distribuídos em aplicações na nuvem.
No desenvolvimento de aplicações web, é comum reduzir o processamento e o acesso do banco de dados, direcionando para algum cache em memória, eliminando a carga adicional imposta por operações de acesso ao banco de dados (abrir conexão, enviar instruções, receber resultados etc.).
Lembrando que o cache em memória, que usa geralmente uma estrutura de armazenamento chave-valor, funciona como um repositório de dados de acesso muito mais rápido que um banco de dados relacional. Em uma aplicação web convencional, a lógica de acesso a dados poderia ficar desta forma:
1 - A aplicação verifica se determinada informação está armazenada no cache
2 - Caso o cache não possua tal entrada, é feita uma busca no banco de dados e posteriormente populado o cache com o retorno do banco de dados
3 - Em um próximo acesso, a aplicação retorna a informação anterior diretamente do cache, sem a necessidade de uma busca no banco de dados.
4 - O tempo que será armazenada uma determinada informação, ou a quantidade armazenada, devem ser implementados utilizando algum algoritmo de cache de acordo com o contexto da aplicação. (Outras técnicas para invalidação de cache, ou de sincronismo com as informações com o banco de dados podem ser utilizadas em processos em paralelo.)
O Amazon ElastiCache implementa um dos sistemas de cache mais utilizados, o Memcached. Com ele, é possível criar clusters de caches, para que sejam replicáveis entre os diversos servidores da Amazon, além de criar nós com tamanhos variáveis, de até 68 Gigabytes que representam sua estrutura de cache. A lógica de acesso no AWS poderia ficar como a seguir:
1 - A aplicação verifica se determinada informação está armazenada em um nó específico do cache dentro de um cluster
2 - Caso o cache não possua tal entrada, é feita uma busca no banco de dados e posteriormente populado os nós do cache nas diferentes localidades da Amazon, com o dados obtidos do banco de dados. A replicação entre os diferentes nós pode ser feita de forma assíncrona com os serviços Simple Notification Service ou Simple Queue Service.
Aqui, a detecção de falhas e a recuperação dos nós são feitas de forma automática. E é possível aumentar ou diminuir a quantidade de nós do cache automaticamente, conforme a necessidade da aplicação. Pode-se ainda restringir acesso aos clusters de cache através de um firewall, além de fazer o monitoramento detalhado de métricas, como memória e processamento utilizados, número de acessos ao cache, elementos não encontrados ou adicionados, e o número de conexões – usando a ferramenta CloudWatch.