Windows Azure: Migrando uma solução de e-Commerce com serviços para a nuvem

Olá pessoal, tudo certo?

Enquando avançamos em nossa série sobre migração para o Windows Azure, estou aproveitando para lembrar de alguns cenários e soluções que estive discutindo com empresas do mercado. Por isso, o cenário de hoje envolve uma arquitetura mista, de plataforma .NET e Java, Oracle, Windows Server e Solaris.

Considere o ambiente on-premise, a seguir:

e-Commerce in SOA Java Tomcat and Oracle

Imagine uma solução de e-Commerce, com interface Web e diversas funcionalidades implementadas em uma plataforma de serviços, usando Java sobre Tomcat em sistema operacional Solaris. Para essa solução, ainda temos um banco corporativo em Oracle, que persiste os dados de usuários, fornecedores e empresas parceiras.

Ainda, imagine que fornecedores e empresas parceiras podem consumir serviços através de uma VPN implementada com equipamentos Cisco, sendo o consumo feito através de componentes em VB6 sobre Windows 2000 Server e serviços C# em Windows Server 2003.

Um belo cenário de e-Commerce com serviços internos e externos. Como toda solução de alta demanda com serviços exportados, temos diversos desafios que são comuns em ambas plataforma, .NET ou JAVA. Vejamos alguns:

  • Necessidade de alta escalabilidade para o consumo de serviços por empresas fornecedoras;
  • Administração e manutenção de uma VPN para segurança e provisionamento dos serviços para empresas fornecedoras;
  • Necessidade de alta escalabilidade e controle para o crescimento do banco de dados da solução;
  • etc…

Para essa migração, vamos considerar dois aspectos importantes:

  • maior facilidade para integração entre sua empresa e empresas fornecedoras;
  • maior escalabilidade para serviços e páginas da solução web;

Assim, o desenho abaixo ilustra uma arquitetura proposta sobre o Windows Azure, veja:

e-Commerce in Windows Azure

Na proposta acima, a interface Web é colocada através de Web Roles sobre o Windows Azure, oferecendo alta disponibilidade para os clientes online da solução. Ao mesmo tempo, note que os serviços inicialmente colocados sobre Java / TomCat agora são disponibilizados através de WCF Service Web Roles, que implementam as funcionalidades e serviços antes colocados no ambiente on-premise.

Outro ponto interessante da arquitetura é a utilização do Windows Azure platform AppFabric para exportação de serviços para empresas parceiras na solução. O que antes eram garantido com uma VPN entre sua empresa e empresas externas, agora é obtido através do registro de serviços na infraestrutura de Service Bus (barramento de serviços) do platform AppFabric do Windows Azure, antes chamado .NET Services Service Bus.

Maiores detalhes sobre o processo de registro e exportação de serviços no AppFabric confira nos links abaixo:

Windows Azure platform AppFabric SDK V1.0
Ref.: https://www.microsoft.com/downloads/details.aspx?FamilyID=39856a03-1490-4283-908f-c8bf0bfad8a5&displaylang=en

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

Aproveito esse post também para lembrar que a plataforma Azure oferece uma grande interoperabilidade com outras plataforma, suportando além do .NET Framework, componentes em python, Java, Ruby, php, OpenID e Eclipse. Assim, outra opção para essa arquitetura é o registro de serviços em Java sobre o Services Bus do AppFabric. Veja maiores informações sobre essa funcionalidade no link a seguir:

AppFabric SDK for Java Developers
Ref.: https://www.jdotnetservices.com/

E para desenvolvedores de componentes em Ruby, veja o que existe para a integração com o Windows Azure:

AppFabric SDK for Ruby Developers
Ref.: https://www.dotnetservicesruby.com/

Finalmente, outro componente interessante da solução é o uso do Azure Storage para persistência de dados estruturados e não estruturados da aplicação, garantindo alta escalabilidade e disponibilidade para o ambiente na nuvem. Para os dados relacionais ainda existentes na solução, podemos ainda aplicar um banco SQL Azure Database, com  considerações conhecidas sobre particionamento manual (sharding), instâncias múltiplas e conectividade transparente para componentes sobre o Windows Azure ou a partir do ambiente on-premise.

Em posts futuros, vamos conferir alguns detalhes de migração e hospedagem de serviços Java sobre a plataforma Azure, além dos mecanismos de interoperabilidade e consumo entre as duas plataformas. Maiores detalhes virão… Fique ligado!

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

Waldemir.