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