Mostrando postagens com marcador cloud computing. Mostrar todas as postagens
Mostrando postagens com marcador cloud computing. Mostrar todas as postagens

Distribuindo Processamento 2 /ou: Mais um pra lista de estudos...

Posted: 16 de jun. de 2009 | . David Lojudice Sobrinho | tags: , 0 comentários

Hoje assisti o video Functions + Messages + Concurrency = Erlang. Eu sabia que Erlang era uma linguagem desenvolvida para processamento paralelo (entre outras coisas). Mas o que eu não sabia era que é possível ter também processamento distribuído! Fazendo download do último release agora!

Distribuindo Processamento /ou: fica ai a dica…

Posted: 11 de jun. de 2009 | . David Lojudice Sobrinho | tags: , 0 comentários

Tenho acompanhado com certo afinco três tecnologias: PLINQ, CUDA e HADOOP. O meu interesse existe pois todas essas tecnologias são de alguma forma uma solução para o processamento paralelo. Afinal, como processar toda a montanha de dados que nos circula (tema mais do que recorrente neste blog)?

Essas tecnologias usam abordagens diferentes para distribuir o processamento: PLINQ: CPUs locais; CUDA: GPUs; e HADOOP: SERVERs (CPUs distribuídas).

O PLINQ (e sua infra-estrutura) tenta usar os processadores disponíveis em uma CPU (normalmente de 2 a 8) para realizar o processamento paralelo.

Outra forma de processar dados é utilizando a GPU do seu computador (e você pensou que ela servia só para games?). CUDA é a arquitetura criada pela NVidia que auxilia a distribuição do processamento entre esses pequenos processadores (norma lmente 128!).


Já o Hadoop auxilia distribuir o processamento entre muitos computadores. E eles podem ser muitos!


O interessante em estudar essas tecnologias é que os conceitos (particionamento, shared resources, locks, etc.) são válidos para os três cenários. E muito dos problemas também são os mesmos. Acho que o principal é a dificuldade em abstrair o fato de existir o processamento paralelo.

Bom, para os interessados em processamento distribuído, paralelo, cloud, grid e afins, fica ai a dica de estudo.

Cloud Computing /ou: Monopolizando a nuvem

Posted: 27 de mar. de 2008 | . David Lojudice Sobrinho | tags: , , 0 comentários

Você começa a perceber que esse negócio de nuvem é verdade quando, mesmo sem navegar, seu browser é a aplicação que fica aberta mais tempo.

Mas, apesar da liberdade de escolha que o tal nuvem poderia dar, parece que ela já foi monopolizada.... pelo menos aqui:

The IT department is dead /ou: Bala nele!

Posted: 8 de jan. de 2008 | . David Lojudice Sobrinho | tags: , 0 comentários

"In the long run, the IT department is unlikely to survive, at least not in its familiar form," Carr writes. "It will have little left to do once the bulk of business computing shifts out of private data centers and into the cloud. Business units and even individual employees will be able to control the processing of information directly, without the need for legions of technical people." - Nicholas Carr

Eu até gosto desse cara, pelo primeiro rebuliço que ele criou, colocando boa parte de IT como commodity. Mas falar que os usuários vão "controlar o processamento da informação diretamente" é um tanto ingênuo. Se fossem capazes disso, já teriam feito, não importaria se eles usassem cloud computing (Google Apps) ou Office. Com raras exceções, eles até fazem, mas no geral esperam pela mão abençoada do pessoal de IT. Apesar das reclamações, eles nos amam.

Caro Nicholas, você esqueceu de ler um dos principais paper sobre software. Lá, você iria encontrar porque o usuário não vai, não quer e não consegue fazer o trabalho sujo. Bala nele!

Grid computing /ou: Ok, por enquanto.

Posted: 10 de set. de 2007 | . David Lojudice Sobrinho | tags: , , , 0 comentários

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!