Projeto Velocity: Introdução
Mantenha em qualquer lugar, acesse de qualquer lugar.
Este é o paradigma das aplicações atuais. Ter a possibilidade de manter os dados onde for possível e poder acessá-los de onde quiser tornou-se uma obrigação entre as organizações, impulsionadas pela necessidade de alta performance e alta disponibilidade. Em virtude disto, aplicações distribuídas se tornaram básicas, onde diversos recursos computacionais são organizados para que forneçam a aplicação a todos os usuários de forma rápida e funcional, quando eles quiserem e como eles quiserem.
Para possibilitar esta estrutura, fabricantes de software estão buscando soluções baratas e rápidas, visando escalabilidade, disponibilidade e alta performance.
Cache Distribuído fornece recursos para acesso a dados em alta performance, contando com escalabilidade e portanto disponibilidade, já que é possível manter os dados em diversos nós através da infra-estrutura. O Cache conhecido atualmente possibilita apenas alta performance, deixando de lado outros itens fundamentais para aplicações atuais.
De acordo com a Microsoft, cache distribuído é ideal para as seguintes caracterísicas:
- Existe um número considerável de acesso aos dados (ex.: catálogo de produtos)
- Um grande número de acessos concorrentes para estas informações pode ser disponibilizado através de vários nós de cache. Como estas informações não são atualizadas frequentemente, manter a consistência destes dados tem um baixo custo;
- Aplicações que toleram dados sem estados
- Algumas aplicações podem ter a performance melhorada a partir de dados que não requerem atualizações imediatas e atualizações do cache;
- Aplicações que podem trabalhar com dados particionados
- Escalabilidade e performance podem ser suportadas particionando os dados em diversos servidores, garantindo também a divisão do processamento;
Em arquitetura de software, camadas de cache (ou Cache Layer) já estão presentes em diversos projetos.
A questão agora é que estas informações estão armazenadas em diversos nós, permitindo a inserção de mais recursos on-the-fly e disponibilidade maior, além da alta performance já utilizada aplamente.
Afinal, o que é Velocity?
An explicit, distributed, in-memory application cache for all kinds of data (CLR objects, rows, XML, Binary data etc.)
Velocity é o novo projeto da Microsoft para fornecer cache distribuído (in memory). É importante ressaltar que este tipo de recurso já existe há alguns anos. Porém, é extremamente importante ter a possibilidade de manter este recurso de forma rápida e barata, através da inclusão de novos nós e fácil administração, e de utilizar este recurso também de forma barata e rápida, através de uma API simples e transparente para os desenvolvedores.
Onde o Velocity entra na arquitetura?
Em termos arquiteturais, é muito importante manter os dados o mais próximo possível da camada de negócios. Eliminar ou diminuir as barreiras entre a aplicação, respeitando o baixo acoplamento, diminui a latência, aumentando a performance e fornecendo uma experiência mais agradável ao usuário.
Utilização do Velocity
É possível utilizar os recursos do cache distribuído através de algumas linhas de código, como o exemplo abaixo:
Alguns conceitos utilizados neste código estão além do objetivo deste post.
E a performance?
Claro, a performance é um fator muito importante em aplicações que exigem este cenário. De nada adiantaria todo este mecanismo se para utilizá-lo fosse necessário recursos inexistentes no mercado.
Através desta imagem é possível observar o andamento dos testes com 1 – 3 servidores e a latência do fluxo dos dados.
Conclusão
Em pouco tempo cache distribuído se tornará básico para qualquer projeto. A necessidade atual de atender a qualquer cenário de crescimento de usuários, concorrência e alta disponibilidade obrigará a aquisição de algum mecanismo que possibilite dados distribuídos através de diversos servidores.
Velocity permite atender esta necessidade no desenvolvimento, administração e escalabilidade, de forma prática, barata e rápida.
Referências
http://msdn.microsoft.com/en-us/data/cc655792.aspx