Papo de Arquiteto: construindo aplicações de MapReduce no Windows Azure
Olá pessoal, tudo certo?
Imagine o seguinte cenário: você precisa submeter 100 mil e-mails em 1 hora, para uma campanha de Marketing bem agressiva. Para esse envio, cada e-mail ainda exige um pequeno processamento ou cálculo, antes de submeter a mensagem. A lista de e-mails lhe foi dada em formato texto, com 1 coluna apenas com os diversos e-mails para destino. Você está considerando que todos os e-mails são válidos, não precisando fazer qualquer checagem.
O que você faria?
Podemos pensar em algumas soluções como o uso de LINQ to HPC, já ouviu falar?
Fonte: INTRODUCING LINQ TO HPC - PROCESSING BIG DATA ON WINDOWS, DAVID CHAPPELL, MAY 2011
Introducing LINQ to HPC: Processing Big Data on Windows
Ref.: https://www.microsoft.com/download/en/details.aspx?id=13615
Claro, podemos usar outras soluções para o envio de tantos e-mails em pouco tempo, mas a ideia de usar MapReduce é tentadora.
O LINQ to HPC é bem explicado no documento acima, escrito por David Chappell. Em resumo, o modelo de MapReduce é utilizado e pode ser uma alternativa para nosso caso, onde um Job Scheduler é chamado, recebendo a lista de e-mails para processamento. Na sequencia, a lista é quebrada em blocos de processamento, cada um enviado para um novo Nó de Processamento ou Lógica. Esses nós irão demandar o uso de nós computacionais para o processamento. Para cenários de processamento mais intensos que apenas mandar e-mails, com certeza o modelo de HPC é obrigatório. No final, uma Role de consolidação monitora o encerramento de todos os processamentos.
A solução acima é baseada em Windows Server 2008 local, com o HPC em ambiente on-premise.
Agora, pensando essa solução sobre a plataforma Windows Azure, essa semana tivemos uma atualização no projeto Daytona, que permite a construção de soluções de MapReduce sobre a plataforma na nuvem, veja:
Project Daytona: Iterative MapReduce on Windows Azure – CTP Refresh (July 26, 2011)
Ref.: https://research.microsoft.com/en-us/downloads/cecba376-3d3f-4eaf-bf01-20983857c2b1/
A solução respeita o modelo de MapReduce, onde uma entidade Mestre distribui as Tarefas para entidades Escravas, que fazem o processamento em blocos. Ao final, os resuldados são consolidados por uma entidade de fechamento ou simplesmente o processo é terminado pelas entidades escravas.
O grande interesse aqui está na possibilidade de contratação de máquinas escravas de forma dinâmica, conforme a necessidade, com o poder de processamento oferecido pelos datacenters da plataforma Windows Azure (que em muitos casos é bem maior que o poder de processamento de nossos datacenters corporativos locais).
Esse modeo é muito interessante para diversos cenários de aplicações que exigem o processamento de grandes quantidades de dados. Vale a pena estudar e acompanhar o projeto Daytona, que ainda está em CTP para o Windows Azure.
Por enquanto é só! Até o próximo post :)
Waldemir.
Comments
Anonymous
June 27, 2012
Waldemir, e ai, mais alguma noticia sobre o Azure? Como anda a plataforma de desenvolvimento? Não tenho visto muita coisa por aí, pessoal falando aqui no Brasil, etc, etc. Mesmo este post tem uns 11 meses. Será que daqui a 10 anos o Azure continua?Anonymous
July 05, 2012
Olá Marcio, tudo bom? A plataforma Azure continua firme e forte. As últimas atualizações foram intensas, com adições tanto para desenvolvimento como para infraestrutura. A integração de VM's de Azure com sistemas de gerenciamento como System Center 2012 também está muito forte. E a adição de ofertas de IAAS - Infrastructure as a Service garante o modelo de Hybrid Cloud que muitas empresas estão buscando. Em 2022 o mapa de TI nas empresas com certeza vai contemplar um percentual muito maior de Public Cloud do que hoje em dia. E com certeza Windows Azure estará nesse mapa! :) Abraço grande e obrigado pelo comentário no blog! Waldemir.