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

No Comments