Dúvidas sobre custos da Plataforma Windows Azure
Olá pessoal,
Resolvi escrever este post porque muitas pessoas tem dúvidas sobre o funcionamento do modelo de cobrança da Plataforma Windows Azure, muitos acabam tomando um susto no recebimento da conta de uso da plataforma e acabam reclamando que existem custos “escondidos” no seu uso e acabam criando alguns mitos. Notem que coloquei o “escondido” entre aspas, pelo fato de na verdade não termos nada escondido, tudo está definido no modelo de consumo (usei como exemplo o modelo de pague pelo uso, mas também existe modelo de assinatura pré-definida, da plataforma.
Windows Azure Computing
O primeiro ponto está no modelo de custo das horas computacionais. As horas nos serviços de computação do Windows Azure são computadas por core alocado por intervalos de hora de relógio e NÃO, favor notar a ênfase, no percentual do uso das CPUs. No Windows Azure, os cores são dedicados para o seu uso e não importa o quanto ele está sendo utilizado de CPU que o preço será o mesmo. Na verdade, o seu ambiente pode até estar desligado que o preço será o mesmo. Quando um ambiente é desligado, a console de gerenciamento exibe a mensagem de aviso abaixo:
Logo, quando você subir várias instâncias para testar a escalabilidade da sua solução no Windows Azure, lembre-se de reduzir a quantidade das instâncias assim que terminar os testes, ou então elas continuarão sendo computadas no uso da plataforma.
Dica: existe uma ferramenta no Codeplex chamada Greybox que permite monitorar e remover deployments no Windows Azure. Muito útil na fase de desenvolvimento, evitando que um ambiente fique simplesmente esquecido de um dia para o outro sem ninguém utilizar.
Windows Azure Storage
O segundo ponto de atenção está na questão das transações do Windows Azure Storage. Elas custam US$ 0,01 (um centavo de dólar) por 10.000 transações. Analisado individualmente, é um custo relativamente baixo, mas se a aplicação não for escrita com isso em mente pode representar problemas no longo prazo. Um cenário bastante comum de uso do Windows Azure Storage é o uso de Queues em uma Worker Role. As Worker Roles são implementadas com um loop infinito para fazer o processamento da aplicação, no longo prazo a conta deste tipo de aplicação fica grande.
Uma sugestão para aplicações que fazem uso de Queues é utilizar um Thread.Sleep(intervalo) nos momentos que as filas ficam vazias. Recomendo fortemente a leitura do artigo Best Practices for Maximizing Scalability and Cost Effectiveness of Queue-Based Messaging Solutions on Windows Azure, que explica como organizar suas Worker Roles sobre o ponto de vista de custo e traz até um exemplo de uso bastante completo.
Espero que o post tenha ajudado à esclarecer um pouco o modelo de cobrança de alguns dos componentes do Windows Azure, qualquer dúvida comente no post e até a próxima.
RG