Arquitetura de aplicações para o Windows Azure e estimativas de custos

Olá pessoal, tudo certo?

No post anterior, falei de exemplos de arquiteturas de aplicações, baseado no Application Architecture Guide 2.0.

Seguindo essa linha, veja um desenho básico de componentes para uma aplicação no Windows Azure:

image

Até aqui, nada de novo. Você já sabe que podemos utilizar uma camada de atendimento Web através de Web Roles do Windows Azure, assim como uma camada de serviços ou regras de negócios implementadas em Worker Roles. Essas roles podem se comunicar através de tipos do Azure Storage, como blobs, tables e filas.

A partir desse desenho, uma pergunta frequente é sobre como implementar uma arquitetura tradicional em camadas através desses componentes.

A figura abaixo ilustra um exemplo para o Windows Azure.

image

No desenho acima, vemos uma camada cliente formada por diferentes tipos de interfaces, como front-end mobile, desktop e web. Essa camada pode ser implementada através de tecnologias como ASP.NET WEB FORMS, ASP.NET AJAX, ASPE.NET MVC, SILVERLIGHT, etc.

No ambiente Windows Azure, a aplicação é hospedada através de 3 componentes importantes:

- uma camada de atendimento de requisições, formada por WEB ROLES e WCF WEB ROLES;

- uma camada de regras de negócios formada por WORKER ROLES, consolidando as camadas de negócio e acesso a dados;

- uma camada de dados, baseada em WINDOWS AZURE STORAGE e / ou SQL AZURE.

 

Se você usar esse modelo básico de implementação, podemos até calcular o custo de instâncias mensal, através da Calculadora do Windows Azure.

Vamos considerar os seguintes componentes:

  • 2 web roles + 2 web wcf roles + 1 worker role = 5 instâncias de Azure Roles do tipo Small Instance;
  • uma base de dados SQL Azure de 5 GB;
  • Azure Storage de 10 GB;
  • Data Transfer de 100 GB;
  • 20 K transações de autenticação no Access Control;
  • 20 conexões de Service Bus, pensando em serivços publicados no Azure AppFabric;

Claro, usei os valores acima como uma estimativa básica, a partir de uma aplicação que acompanhei recentemente, com alguns arredondamentos. Veja como ficou a estimativa de custo na calculadora Windows Azure Pricing Calculator:

image

Windows Azure Princing Calculator
Ref.: https://www.microsoft.com/windowsazure/pricing-calculator/ 

No final, além de recomendar a contratação do tipo PAY-AS-YOU-GO, a calculadora fornece uma estimativa de custo
de US 548.61 / mês, algo em torno de R$ 858,80 / mês, considerando o câmbio de R$ 1.5654 o dolar em 06 de Julho.

O que isso significa? Por menos de R$ 900,00 por mês, temos uma infraestrutura de 5 máquinas (tipo Small = 1 CPU 1.6 GHz, 1.75 GB RAM, 225 GB HD) com alta disponibilidade, balanceamento de carga automática e nível de serviço (SLA) de 99.9% pronta para uso. Ainda, é possível desmobilizar toda essa infraestrutura a qualquer momento, quando o cenário não for mais necessário. Da mesma forma, poderemos expandir sua capacidade, aumentando dinamicamente o número de instâncias ou capacidades de armazenamento, se a aplicação exigir.

No cálculo acima, estamos considerando cada instância ligada por 750 horas por mês, ou seja, estamos considerando cada instância ligada 24 horas por dia, os 30 dias do mês. Se essa solução não precisar de 750 horas por mês de UP TIME, o custo será bem menor.

Considere agora os custos não contemplados de manutenção, gerenciamento, hardware, conectividade, licenciamentos, etc. no ambiente local (on-premise).

Veja os tipos de instâncias disponíveis na plataforma Windows Azure, para lembrar:

image

Ref.: https://www.microsoft.com/windowsazure/compute/

Interessante, não?

Tenho falado com alguns arquitetos e muitas vezes ficamos em dúvida sobre comparação de custos on-premise e nuvem. Por isso, parar um pouco e fazer algumas contas pode ser importante para fundamentar a discussão.

Não deixer de separar um tempinho para detalhar ainda mais essa análise, considerando sua carga transacional, o volume de dados de entrada e saída, número de conexões de serviços e número de transações no Access Control.

Alguns links importantes são:

Windows Azure Guidance
Ref.: https://wag.codeplex.com/

Windows Azure Security Guidance
Ref.: https://azuresecurity.codeplex.com/

Now Available: Windows Azure Security Notes PDF
Ref.: https://blogs.msdn.com/b/jmeier/archive/2010/08/03/now-available-azure-security-notes-pdf.aspx

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

Waldemir.