Windows Azure: Migrando infraestrutura de aplicações Web

Olá pessoal, tudo certo?

Dando início a série de migração para a nuvem, vamos começar com um cenário de infraestrutura de aplicações Web. Imagine os seguintes componentes abaixo:

image

Já vimos esse tipo de cenário em posts passados, onde escalamos as várias camadas através de um crescimento de hardware para a camada Web e a camada de negócios, além do particionamento da base de dados, como vemos a seguir:

image

Também notamos a presença do banco de dados corporativo e do repositório de objetos do AD, onde temos os recursos de autenticação, autorização, perfis de usuário, administração, etc.

Entre os principais pontos de atenção que destacamos durante um processo de migração para a nuvem temos:

  • autenticação
  • autorização
  • sincronização de dados
  • segurança de dados
  • integração de aplicações no ambiente on-premise
  • gerenciamento e operação
  • escalabilidade e investimentos para o crescimento da infraestrutura

Como seria um cenário aproveitando a infraestrutura do Windows Azure, integrando com o ambiente on-premise?

O desenho a seguir ilustra uma arquitetura proposta considerando os recursos do Windows Azure:

image

Acima, estou dando destaque para a integração do ambiente on-premise com a nuvem, onde temos as interfaces Web implementadas via Web Roles, assim como dados persistidos sobre o SQL Azure Database.

Vejamos então alguns pontos importantes para considerar sobre essa migração:

Autenticação – no desenho acima destaquei um servidor ADFS no ambiente corporativo, integrado ao AD original. Isso oferece os recursos de um modelo CBA – Claim-based autenthication, que oferece um bom desacoplamento em relação ao provedor de identidades na solução. Falamos sobre CBA um tempo atrás, neste post;

Autorização - da mesma forma, podemos trabalhar com declarações customizadas sobre o ADFS - Active Directory Federation Services, para a tomada de decisões e implementação de autorização nas funcionalidades da aplicação e serviços existentes;

Sincronização de Dados - uma recomendação aqui é utilizar o SSIS - SQL Server Integration Services, que permite a sincronização de porções de linhas e colunas entre o SQL Server on-premise e o SQL Azure Database. Sobre o SSIS, veja mais nos links abaixo:

Ref.: https://www.microsoft.com/sqlserver/2008/en/us/integration.aspx

Ref.: https://www.microsoft.com/sqlserver/2008/en/us/wp-sql-2008-integration-services.aspx

Segurança e Auditoria - aspectos de segurança e auditoria são muitas vezes específicos de cada indústria ou empresa. Operações e dados podem exigir níveis diferentes de segurança, conforme a orientação da empresa. Porém devido a integração entre on-premise e nuvem, recomenda-se uma atenção especial para uma visão unificada em toda a solução;

Integração de Aplicação - uma alternativa interessante para a integração entre aplicações de diferentes domínios ou localidades é usar o ADFS Passive Fed, suportado através do padrão WS-Federation Passive Requestor Profile (WS-F PRP), que permite um modelo de Single Sign-On via Web, para essas aplicações. Veja mais no link abaixo:

Ref.: https://www.microsoft.com/downloads/details.aspx?familyid=921379CA-BBB0-4E9A-A0D4-495D620832F6&displaylang=en

Operação/Gerenciamento - outro ponto de atenção nessa integração é não se basear apenas no modelo de Windows Event Log e SCOM (famílía System Center). De fato, vamos combinar a monitoração SCOM no ambiente on-premise, com a monitoração via logs e estatísticas do ambiente na nuvem. Por enquanto, não temos pacotes de gerenciamento (Management Packs) para o Windows Azure integrado ao SCOM, que deve aumentar a visibilidade de eventos e ações nesse tipo de solução integrada. Enquanto isso não vem, devemos usar os recursos da Management API para o Windows Azure. Veja mais a seguir:

Windows Azure Monitoring, Logging, and Management APIs
Ref.: https://microsoftpdc.com/Sessions/SVC15

Um exemplo de monitoração em aplicação no Azure
Ref.: https://diags.cloudapp.net/

Migração de interface Web - em cenários de aplicações Web, o suporte do Azure aos componentes ASP.NET, MVC, AJAX e Silverlight torna o processo de migração bem simples e rápido. \Um cuidado maior deve ser observado com o tratamento das regras de negócios e serviços existentes. Avalie a necessidade de migração dessas regras para modelos como Worker Roles ou WCF Web Roles.

Já deu para perceber que são vários os aspectos que podemos tratar num processo de migração e integração entre aplicações on-premise e cloud. Procurei enriquecer o cenário, para provocar novos pontos de atenção e cuidados que normalmente não são tratados.

Cenários mais simples ou de presença apenas na cloud são muito mais fáceis de migração para o Azure. Vale experimentar!

Como última dica do post, vale acompanhar o blog do time de Azure, a seguir:

Ref.: https://blogs.msdn.com/windowsazure/

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

Waldemir.