terça-feira, 19 de maio de 2009

A Computação nas "Nuvem"

É fácil se perder numa conversa sobre computação em nuvem. Todos parecem ter uma nuvem, estar conectados à nuvem, estar preparados para a nuvem ou, pelo menos, estar prontos para a nuvem.

Há vários jargões, mas nem tudo é papo furado. Por trás do jargão estão alguns negócios muito reais e benefícios tecnológicos, não menos que minimizar custos e maximizar o ROI (não sei porque ROI me lembra rato...).

A ideia da Nuvem, é juntar todos os recursos de hardware disponivel e colocar numa sacola, sacolejar e, depois, tem-se incrementado massivamente sua capacidade em um instante... parece coisa de Mandrake! E sem gasto nenhum, apenas a energia gasta para sacolejar a sacola. Ah, mas também cria novas oportunidades, mesmo porque agora precisamos de gente com a cabeça nas Nuvens. Ele precisa "entender", que depois da socalejada, cada CPU agora processa outras tantas CPU de sistemas virtualizados, que foi a última grande buzzword, ou seja, a virtualização foi uma evaporação necessária para que se formasse a Nuvem. Mas não pense que Nuvem é um monte de imagens Xen, VirtualBox, VmWare, etc., ela é também um ecosistema emergente

Para quem pensa que Nuvem é brincadeira, podem procurar em todos os "buracos" que ofertam tecnologias, e, vejam: lá estão, oferecendo "Nuvens", e mesmo que não queira, você já está envolvido na neblina, pois duvido que o onipresente Google não seja a "Home Page" da maioria; basta abrir o navegador e lá está... o Google nas Nuvens. Tem Amazon.com; agora quando se fala em web 2.x, implica falar também em Nuvem.

Agora o melhor para quem pensa que Nuvem é coisa de hardware, coisa nenhuma, ela também é uma revolução na programação. O impacto imediato será uma flexibilidade sem precedentes na criação de serviços e aceleração do ciclo de desenvolvimento. Acontece que, flexibilidade em desenvolvimento pode se tornar "apertado" pelas APIs, se elas não se tornarem verdadeiramente abertas. Essa coisa de Nuvem e desenvolvimento vem-me à mente um projeto do Eclipse, chamado Buckminster, verdadeiramente desenvolvimento em Nuvem, bem antes até desse conceito de Nuvem virar buzzword (procurem sobre Buckminster na Nuvem: www.google.com).


Em resumo, Computação em Nuvem quer dizer que os recursos de TI são disponibilizados como um serviço: escalado massivamente, recursos de sistemas distribuídos horizontalmente, abstraído como serviços de IT virtual e gerenciado e configurado continuamente. Que isso, um Grid? Sim, mas um grid de serviços pra Internet, ou seja, Nuvem é um modelo arquitetural de grid pra Internet; sua tabela agora tem tuplas na China e no Hawai, mas isso não interessa, não me pertence, tá tudo na nuvem. Aliás, Nuvem não tem dono.

"In this architecture, the data is mostly resident on servers
'somewhere on the Internet' and the application runs on
both the 'cloud servers' and the user's browser."

—Eric Schmidt in ‘Information Factories’ by G. Gilder

Computação em Nuvem definido:

"It's one of the foundations of the next generation of
computing. . .. It's a world where the network is the plat-
form for all computing, where everything we think of as
a computer today is just a device that connects to the big
computer we're building. Cloud computing is a great way
to think about how we'll deliver computing services in the
future."

—Tim O’Reilly, CEO, O’Reilly Media

Agora, nós desenvolvedores, podemos dizer sem medo: Trabalho nas Nuvens! Sem analogias, pois se as fizermos, poderemos colher tempestades, raios e trovoadas, não é não?!