Archives

Archives / 2008 / June
  • 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

    Read more...

  • Sai uma moda, entra outra

    Até pouco tempo, a moda no mundo do desenvolvimento era apenas desenvolver. Tudo que todos faziam era simplesmente escrever linhas de código, e se virar depois para garantir seu funcionamento, documentação, etc.

    Read more...