Aplicações na nuvem : um estudo de caso para Aplicações Web Colaborativas.
Olá pessoal, tudo certo?
Esses últimos dias falamos de alguns assuntos interessantes: Começamos com o lançamento do Composite Application Guidance for WPF and Silvelight, o PRISM v2.0 que foi lançado agora em fevereiro. Depois passamos pelas atualizações do Training Kit do Windows Azure, com uma série de laboratórios e exemplos de código. E na sequência, voltamos ao mundo das interfaces e falamos do Sculpture v1.0, um pacote muito interessante no Codeplex para a construção de interfaces e aplicações com WPF, ASP.NET, MVC, etc.
O que todas essas tecnologias têm em comum? São ferramentas interessantes para a construção de aplicações na nuvem. Como assim? :)
Podemos destacar 3 tipos de cenários de aplicações na nuvem:
- SaaS LOB Applications, ou aplicações de linhas de negócio que disponibilizadas como serviço (por exemplo CRM SAAS, HR SAAS, ERP SAAS, etc.), podendo persistir seus dados na nuvem, oferecendo interfaces de operação Web para seus usuários;
- Aplicações web colaborativas, onde diversos tipos de usuários colaboram com a troca de dados de diferentes formatos e com um grande volume de requisições;
- Hub de dados compartilhado, onde participantes compartilham dados e mensagens de forma integrada, através de interfaces padronizadas via HTTP/REST/SOAP e a partir de um ponto central de mensagens na nuvem, um Internet Service Bus, por exemplo.
A seguir, temos um diagrama exemplo para o cenário de Aplicações Web Colaborativas, veja:
A solução acima representa um bureau de imagens e notícias, onde diferentes usuários e dispositivos operam informações de diversos formatos. Temos clientes de mídia consumindo informações em XML e imagens para pautas, fotógrafos adicionando novas imagens a partir de câmeras ou dispositivos móveis, usuários administrativos sincronizando informações de forma ocasional, a partir de bancos de imagens locais e usuários executivos, consumindo portais de análise e gerenciamento, acompanhando a evolução dos diferentes tipos de dados, contas e usuários envolvidos. Um cenário típico na indústria de mídia e informações.
Podemos destacar dois aspectos importantes em arquitetura de soluções:
- Provisionamento e escalabilidade da solução;
- Consumo de serviços e funcionalidades das interfaces de aplicações;
Provisionamento e escalabilidade da solução
Quando falamos em escalabilidade, pense na evolução da infra-estrutura aplicada para esse projeto. Ao longo do tempo, espera-se um crescente volume de dados sendo persistido no sistema, seja através de imagens, fotos, vídeos, áudios e nóticias, ou mesmo pelo crescente volume de requisições feitas online para seus dados pelos usuários. Ainda, um bureau de serviços típico tende a utilizar o modelo de negócios SAAS – Software as a Service – onde diferentes empresas de notícias e mídias podem contratar a infra-estrutura e solução de gerenciamento do bureau para suas operações. Desse modo, surge o conceito de uma infra-estrutura como serviço, escalável e com alta disponibilidade, que atenda os diversos usuários e potenciais clientes no mercado. Ao mesmo tempo, a opção de subscrição, de provisionamento dinâmico de serviços e mesmo contratação de infra-estrutura ao longo da operação do sistema são características do modelo elástico de computação, obtido com o cloud computing ou computação na nuvem. Cada empresa contrata mais infra-estrutura do bureau de acordo com suas necessidades, pagando pelo uso e provisionando mais ou menos infra-estrutura de forma dinâmica.
Assim, o cenário seria um excelente candidato para um ambiente na nuvem, executando suas aplicações e persistindo seus dados numa infra-estrutura elástica. Vemos aqui o Windows Azure, com suas capacidades de dados na nuvem via o SQL Data Services um exemplo de aplicação direta para a solução. Da mesma forma, podemos publicar nossas interfaces de aplicação também na nuvem, ganhando a escalabilidade e disponibilidade que o ambiente oferece.
Consumo de serviços e funcionalidades em interfaces de aplicações
Quando falamos em interfaces e consumo de serviços, uma grande preocupação está em relação aos diferentes dispositivos utilizados pelo usuário. Da mesma forma, aspectos de RIA – Rich Internet Application – estão presentes e fornecem recursos adicionais para uma maior usabilidade. Interfaces de composição são combinações de patterns que permitem a construção de telas leves, flexíveis, que permitem o desenvolvimendo simultâneo e a personalização da interface de acordo com o desejo do usuário. Como uma tendência do Web 2.0, mashups de composição são opções interessantes de se avaliar.
Assim, o cenário também é candidato para a construção de suas interfaces usando pacotes como o Prism v2.0 ou o próprio Sculpture v1.0. Pensando no Prism, o desenvolvimento de cada módulo ou componente de tela pode ser feito de forma simultânea, por equipes ou desenvolvedores trabalhando em paralelo. Ao mesmo tempo, cada módulo pode ser concebido para o consumo de uma funcionalidade ou serviços afins, permitindo uma modularidade na arquitetura também visível a partir da interface da solução.
Finalmente, não podemos esquecer que nosso projeto do bureau de imagens pode aproveitar ainda os recursos das demais caixas de capacidades da plataforma de serviços do Windows Azure. Para lembrar os componentes do .NET Services, do SQL Services e do Live Services, confira o desenho abaixo:
Em posts futuros, vamos exercitar de forma prática os cenários de aplicações aderentes ao modelo de computação na nuvem. Um pouquinho de código é sempre bom, não acha?
Por enquanto é só! Até o próximo post :)
Waldemir.