Grid computing /ou: Ok, por enquanto.

Posted: 10 de set. de 2007 | . David Lojudice Sobrinho | tags: , , ,

Voce sabia que o Google usa uma mega ultra estrutura de computacao em Grid de forma que o processamento e o armazenamento dos dados eh totalmente distribuida? Eles chamam essa estrutura de "cloud" (nuvem). Diz a lenda que eh formado por um monte (milhares) de desktop barato, onde ateh a BIOS das maquinas eh alterada para conseguir melhor desempenho em Grid. Parece que se troca centenas de "nodes" por dia. (Mais informacoes use a nuvem do google e procure por MapReduce e BigTable)


Nao seria otimo ter esse poder de escalabilidade? Compra-se um monte de desktop a dois mil reais cada um, cada um com um incrivel poder de processamento (2 x 2.5GHz) e armazenamento (200Gb) e com doze mil reais voce tem um mini-super-computador. (Dois mil e seissentos reais na Sta. Efigenia, com 2Gb de Ram.)


Como Microsoftinianos, o que podemos fazer para obter tal escalabilidade por um preco tao acessivel? Infelizmente, caro colega desenvolvedor, nao muito.


Como bons desenvolvedores .Net, recorreremos primeiramente a propria Microsoft para nos dar a solucao. O que encontramos eh um tal de Windows Computer Cluster Server que nao eh bem o que procuramos. O Cluster Sever ainda pensa que super computadores é coisa pra gente grande. Ou seja, se voce trabalha na Petrobras e quer fazer aqueles calculos ziper complicados que demoram uma decada para encontrar onde extrair petroleo, o Cluster Server seria uma solucao. APIs em C/C++, soh roda em hardware licenciado, etc. Mas sera que precisa de tudo isso? Sera que o nosso mini-super-computer nao seria tambem uma solucao?


Antes de responder, vamos dar uma olhada do outro lado do muro e ver o que nossos amigos do mundo Java andam fazendo. Aqui a coisa parece bem mais evoluida, com diferentes solucoes para diferentes gostos.


Java Parallel Processing Framework - http://www.jppf.org/index.php - Framework que permite distribuir o processamento em varios nodes no cluster. Seria o fusca do Grids - O basico, mas funciona.


Terracotta - http://www.terracotta.org/ - Virtualiza o JVM, ou seja, os objetos moram na Grid e nao mais em apenas um computador/node. Ex: um lock num objeto é um lock no objeto na GRID e nao apenas no computador local. Grid de processamento e de armazenamento, com failover e tudo mais. Fantastico. Vale perder 3 min vendo a apresentacao no site.


Hadoop - http://lucene.apache.org/hadoop/ - Aqui a coisa fica preta. Os caras querem implementar o MapReduce e o BigTable do Google, sendo possivel processar e armazenar pentabytes apenas colocando mais nodes ao cluster sem medo. Os caras agora sao patrocinados pelo Yahoo.


Tenho certeza que existe outros projetos em Java para o mesmo proposito, mas esses aqui ja dao uma dimensao de como nossos amigos do mundo Java ja contam com possibilidades (e a custo zero, pois todos os projetos sao free).


Voltando ao mundo .Net, encontramos alguns projetos interessantes:


Alchemi - http://www.alchemi.net/ - Parecido com o JPPF. Basicamente um framework que facilita a distribuicao e divisao de processamento em varios nodes. Open e Free.


Digipede - http://www.digipede.net/ - A ideia identica ao Alchemi, mas pago.


O Alchemi é interessante, mas ainda muito cru perto dos outros projetos em Java que mostrei.


O potencial da computacao distribuida esta muito mal aproveitada no mundo Microsoft. Ou seja, voce pode comprar um monte de computador barato, mas nao vai conseguir faze-los trabalhar em conjunto. Se voce quiser fazer isso em .Net, nao existe uma camada de abstracao que esconde os detalhes do Grid (nodes, masters, etc) para o desenvolvedor.


Mas voce, meu caro colega desenvolvedor, compraria ou recomendaria para sua empresa um monte de hardware barato (porem extremamente poderoso) sem um software para lhe dar suporte? Se nao, vai ver que por essa razao o lobby das empresas de hardware faz com que a MS nao crie produtos para atender essa necessidade. Enquanto o hardware vai virando commodity, vamos vendo o mundo Java usando esse recurso da melhor maneira possivel. E nos, .Net developers, preocupados em montar Web Farms!


Mas tudo bem. Ninguem precisa disso por enquanto. Por enquanto!

0 comentários: