Windows Azure : Uma questão sobre patterns e cenários de aplicações.

Olá pessoal, tudo certo?

image Estive conversando com outros arquitetos do Brasil (Selonke, Christen e Otávio) aqui no PDC e uma questão interessante que apareceu foi sobre patterns e considerações de design para aplicações sobre o Windows Azure. Tá bom, é cedo, acabamos de ver a plataforma, mas já surge o assunto.

Conhecemos diversos patterns aplicáveis para a construção de aplicações, como Abstract Factory, Command, Composite, Observer, Singleton, entre tantos outros. Alguns desses patterns são bem agnósticos sobre a composição entre enterprise e nuvem. Mas alguns cenários exigirão adaptações ou boas práticas mais específicas.

Para as novas aplicações que utilizam um modelo irrestrito de dados, não estruturados, blobs ou registros relacionais que serão persistidos na nuvem, quais serão os patterns mais aplicáveis? Como serão tratadas questões como ACID, processos envolvendo múltiplos serviços na nuvem, sincronização, workflows, etc.? Como será a composição entre EAI no enterprise com processos publicados na nuvem através do Service Bus Services do Azure? Quais serão os patterns para desfazimento, compensação, tratamento de exceções pela aplicação, etc.?

Durante o PDC tivemos alguns painéis de discussões e simpósios, onde muitas dessas questões foram tratadas. Entre os cenários que deveremos considerar temos:

  • Poderemos consumir serviços WCF e WF hosteados em servidores de aplicação no enterprise (sobre Windows 2003, 2008, etc.), assim como serviços WCF e WF publicados no Service Bus Services, autenticados através do .NET Services Access Control, na nuvem, ou seja, na plataforma Azure;
  • Nossas aplicações poderão ser autenticadas no enterprise, através do AD ou do Geneva Server, utilizando o Geneva Framework para esse processo. Através do Geneva Server, também poderemos conversar com serviços publicados na plataforma Azure, de forma transparente para a aplicação;
  • Através dos serviços do Live Services, poderemos integrar recursos como Mesh, Sincronização, Application Mesh, Device Mesh, etc., com aplicações locais parcialmente conectadas, realizando eventos de sincronização totalmente transparentes para o usuário. Os pimeiros exemplos de Mesh integrando smartphones, notebooks, desktops remotos e dispositivos móveis diversos começam a aparecer, inclusive consumindo workflows publicados na plataforma Azure;
  • Através do SQL Services, poderemos criar aplicações que suportam uma grande massa de dados persistidas na nuvem, trabalhando dados flexíveis, entidades e containers de dados, enquanto utiliza providers de sincronização do Sync Framework para manter a sincronização dos dados na nuvem com folders, bancos de dados corporativos ou estuturas em cache persistidas no Velocity (não esqueça dele);
  • Finalmente, nossas aplicações na Web poderão aproveitar todos os recursos do Silverlight API's, JavaScripts API's, Controles Cliente e Web, além do suporte a protocolos como ATOM, JSON, POX, RSS, Binary XML para consumir os serviços locais ou nuvem.

Enfim, uma série de novas combinações criativas e aplicações será possível, mas exigirá boas práticas e recomendações para aproveitarmos o melhor de cada framework, serviço ou recurso, seja local ou remoto.

imageFiquem de olho no Channel9, que já começa a publicar algumas dessas discussões. Aliás, a foto ao lado consegui com a ajuda do Godinho, que cercou o bonequinho do Channel9 para uma foto do fan clube :)

E para quem deseja ler um texto oficial sobre o anúncio da plataforma Azure, segue aqui um link interessante:

Windows Azure and the Azure Services Platform: Making Microsoft’s Software-plus-Services Vision a Reality
Ref.: https://www.microsoft.com/presspass/features/2008/oct08/10-27pdcfeature1.mspx

Como já disse, uma nova onda de aplicações está nascendo! Aguardem as demos...

Por enquanto é só! Até o próximo post :)

Waldemir.