Windows Azure: Migrando Web Services de aplicações departamentais para a nuvem

Olá pessoal, tudo certo?

Vejamos mais um cenário que pode aproveitar os benefícios de um ambiente na nuvem.

Imagine uma solução baseada em Web Services, que oferecem recursos de CRUD e regras de negócio operando sobre um banco de dados. Ao mesmo tempo, a solução prevê usuários administrativos, que consomem regras de negócio em bibliotecas como serviços, que também operam sobre o modelo de dados da solução. Assim, através de clientes Web os usuários navegam as funcionalidades da aplicação, enquanto que usuários administrativos usam um cliente consumindo recursos de um App Server, para tarefas de configuração, monitoração de negócio, customização, administração, etc.

A figura a seguir ilustra o cenário, que é muito comum em aplicações Web departamentais:

Web Services on-premise

Desafios

Um dos aspectos importantes nesse tipo de arquitetura é o plano de capacidades sobre os Web Services da solução. É comum aplicações departamentais lançarem serviços que rapidamente são bons candidatos para reuso por outros departamentos. Já vi empresas que criaram baterias de Web Services para um departamento, oferecendo rapidamente esses serviços para outros grupos internos da empresa, aumentando o volume de usuários do sistema.

Nesse caso, surge o velho problema de escalabilidade crescente sobre esses Web Services. Em casos mais sofisticados, alguns desses serviços podem fazer parte de novas ofertas de negócio para o público externo, além de clientes e potenciais consumidores. Esse tipo de aspiração também é interessante e muito comum, quase um mantra em algumas empresas: gostaria de aproveitar meus Web Services internos em novos produtos para sistemas comerciais externos, que devo oferecer para o mercado.

Atacando esses Web Services criados pela empresa, podemos aproveitar um cenário de nuvem como o Windows Azure, hospedando esses serviços na nuvem. Veja o desenho abaixo:

Microsoft Windows Azure platform AppFabric

De modo simplificado, a escalabilidade dos Web Services agora é garantida através de WCF Service Web Roles, que podem ser escalados conforme a necessidade do negócio. Ao mesmo tempo, o banco de dados da solução pode ser migrado para o SQL Azure Database, tornando o acesso a dados mais direto no ambiente no Azure.

Quais são os principais desafios nesse tipo de migração:

  • Gerenciamento de estados
  • Performance
  • Segurança
  • Migração da base de dados para a nuvem
  • Particionamento da base de dados (Sharding)

Um dos grandes componentes desta solução é o AppFabric no Azure, que oferece os recursos para hosting de serviços na nuvem. Veja o portal que consolida as principais informações sobre o AppFabric na nuvem a seguir:

Microsoft Windows Azure platform AppFabric
Ref.: https://msdn.microsoft.com/en-us/azure/netservices.aspx

Alguns pontos de atenção

Para aproveitar o post, vejamos alguns pontos de atenção para projetos na nuvem:

  • Esteja preparado para sacrificar o controle de hardware e de software em troca de um custo de gerenciamento menor;
  • Nessa combinação de ambientes, manter uma disciplina de log e instrumentação será garantia de um processo de troubleshooting mais eficiente;
  • Projete seu sistema e web services para a escalabilidade horizontal (scale-out) e não vertical (scale-up). Nesse processo, algum refactoring de sistemas legados existentes pode acontecer, fique preparado;
  • Utilize técnicas de particionamento de bases de dados, já que o SQL Azure Database possui o limite de bases de até 10 GB, não havendo particionamento automático na nuvem;
  • Muito importante: faça um plano detalhado para a migração de dados. Dependendo do cenário de negócio, mantenha on-premise (localmente) os dados críticos de clientes na aplicação. Regulation ou políticas de risco e segurança podem ser motivadores para essa persistência local de dados;
  • Finalmente, pense sempre em serviços sem manutenção de estado, "Stateless". Isso garante a alta escalabilidade de processos e serviços colocados na nuvem, sem risco de afinidade.

Vimos assim mais um cenário interessante de migração para a nuvem. Claro, essa análise não é extensiva e muitos outros aspectos existem. Semana que vem tem mais.

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

Waldemir.