Como a computação em grade transforma máquinas diferentes em um supercomputador

7

Um pesquisador precisa simular o enovelamento de proteínas. Ela se conecta a um terminal, não para usar uma máquina, mas para acessar uma ampla rede que lida com a carga. Um trader precisa prever os movimentos das ações. Ele coleta dados em um PDA portátil, extraindo energia da infraestrutura de back-end de sua empresa. Um comandante militar está coordenando um ataque. Ele não depende de um único farm de servidores; ele acessa recursos através de três redes militares distintas e segregadas para formular uma estratégia.

Esses cenários parecem ficção científica ou fantasia de nível empresarial, mas todos apontam para a mesma arquitetura subjacente: computação em grade.

É o equivalente digital de reunir recursos. Em uma rede, você não tem apenas a energia do seu próprio computador. Você tem acesso aos núcleos de processamento, memória e armazenamento de todas as máquinas autorizadas no sistema. É computação distribuída com esteróides. O objetivo? Fazer com que uma rede de computadores distintos atue como um supercomputador massivo e unificado.

O Mito da Máquina Única

Historicamente, se você precisasse de mais energia, você comprava um computador mais rápido. Você adicionou mais RAM. Você colocou um disco rígido maior. Havia um limite para o que uma única caixa poderia fazer, não importa quanto dinheiro você investisse nela. A computação em grade destrói esse teto.

Pense nisso como uma viagem de acampamento. Você está indo sozinho. Você tem uma barraca. Seu amigo tem outro. Um traz a comida. Um traz o SUV. Se você for sozinho, terá que carregar tudo. Você está limitado por sua própria força e seu próprio equipamento. Se vocês viajam juntos, vocês compartilham a carga. Vocês usam as habilidades um do outro. A viagem se torna mais fácil, rápida e eficiente porque nenhuma pessoa carrega todo o fardo.

A computação em grade aplica essa lógica aos dados.

Um computador padrão depende de sua própria Unidade Central de Processamento (CPU). Este microprocessador processa números e direciona dados. Ele também depende de memória (RAM), que é um armazenamento temporário de alta velocidade próximo à CPU, e de armazenamento (discos rígidos ou bancos de dados), que é permanente, mas mais lento. Por padrão, um usuário fica preso dentro dos limites de seu próprio hardware.

Numa grelha, esses limites desaparecem. O sistema vincula esses recursos. Quando você executa uma consulta, a grade não usa apenas sua CPU. Ele roteia partes da tarefa para milhares de outras máquinas na rede. Para o usuário, parece mágica. Você está acessando o poder coletivo de toda a rede, não apenas o silício à sua frente.

Não é novo, mas não está pronto

Aqui está o problema: a computação em grade não é uma ideia nova. É um tipo específico de computação distribuída. A computação distribuída existe há décadas, com diferentes computadores compartilhando recursos em uma rede. Mas a verdadeira computação em grade vai além. No estado ideal, todos os recursos são compartilhados. Cada ciclo do processador e cada byte de armazenamento tornam-se um bem da comunidade.

O acesso deve ser tranquilo. A interface não deve parecer que você está invadindo um mainframe. Deve parecer que você está trabalhando em sua própria área de trabalho. A diferença é a escala invisível de potência nos bastidores.

No entanto, a tecnologia está longe de ser aperfeiçoada. Ainda estamos no meio confuso. Cientistas e engenheiros da computação estão atualmente lutando com padrões e protocolos. Atualmente, muitos sistemas de rede dependem de software proprietário. Eles estão isolados. Se você quiser ingressar na grade, geralmente precisará de ferramentas específicas e exclusivas do fornecedor. Até que a indústria concorde com um conjunto universal de regras, a adoção será complicada. As organizações hesitam em investir em infraestruturas que podem não funcionar bem com outras.

A armadilha do jargão

Se você mergulhar na documentação da computação em grade, você se afogará em siglas. O campo toma emprestado pesadamente de outros setores de tecnologia. Para entender como funciona, é necessário separar o sinal do ruído.

A computação em grade está relacionada a vários outros modelos, e os limites costumam ser confusos:

  • Computação Compartilhada: Esta é a categoria ampla. Refere-se a qualquer conjunto de computadores que compartilham poder de processamento para concluir uma tarefa. É um pouco genérico.
  • Computação utilitária: geralmente é fornecida por meio de Software como serviço (SaaS). Pense nisso como eletricidade. Você não constrói uma usina; você se conecta à rede e paga pelo que usa. As empresas oferecem capacidade de armazenamento ou processamento de forma medida.
  • Computação em nuvem: Este é o termo mais familiar atualmente. Na computação em nuvem, aplicativos e armazenamento “ao vivo” na web. Você não possui o hardware; você aluga acesso a ele. Embora a nuvem e a rede compartilhem raízes, a rede se concentra mais no agrupamento de recursos ociosos para tarefas computacionais massivas, enquanto a nuvem geralmente se concentra na entrega de serviços pela Internet.

Para navegar nesses conceitos, você precisa conhecer o léxico. Aqui estão os princípios básicos:

  • Cluster: Um grupo de computadores em rede que compartilham recursos. Eles trabalham juntos como uma única unidade.
  • Nó: Qualquer dispositivo em uma rede que pode transmitir, receber ou redirecionar dados. Os nós de controle gerenciam o fluxo.
  • XML (Extensible Markup Language): Uma linguagem de codificação que descreve dados. É legível por humanos e por máquina. Os nós de controle usam derivados XML como WSDL (Web Services Description Language) para entender como lidar com aplicativos e tipos de dados específicos.
  • Hub: Um ponto central em uma rede onde vários dispositivos se conectam.
  • IDE (Ambiente de Desenvolvimento Integrado): O kit de ferramentas que os programadores usam para criar aplicativos.
  • Sandbox: Um ambiente isolado usado para testar aplicativos sem arriscar o sistema principal.

A tecnologia funciona. O conceito é sólido. Mas a fragmentação das normas continua a ser o maior obstáculo. Até que a “canalização” da rede seja padronizada, continuaremos a ver ilhas isoladas de poder, em vez de um supercomputador global verdadeiramente unificado.

O vocabulário técnico

Para entender a computação em grade, você precisa falar a língua. Não são apenas chavões; é a mecânica de como máquinas diferentes conversam entre si.

Interoperabilidade é a base. Sem ele, seu PC e Macintosh são ilhas. Eles têm sistemas operacionais diferentes, arquiteturas diferentes. Eles não podem trabalhar juntos a menos que o software preencha essa lacuna.

Depois, há padrões abertos. Os padrões proprietários prendem você ao ecossistema de um único fornecedor. Os padrões abertos são públicos. Qualquer pessoa pode adotá-los. Isso torna a integração muito mais fácil porque todos seguem o mesmo livro de regras.

Também estamos falando sobre processamento paralelo. Isto não é apenas multitarefa em um chip. Está usando várias CPUs para resolver um único problema computacional. Está intimamente ligado à computação compartilhada, que drena recursos inexplorados de uma rede para realizar o trabalho.

Uma plataforma é apenas a base. Pode ser um sistema operacional, uma arquitetura, uma linguagem ou até mesmo um site. Os desenvolvedores constroem sobre isso.

Quando um servidor não é suficiente, você precisa de um farm de servidores. Um cluster de servidores trabalhando juntos em tarefas complexas demais para uma única máquina.

Mas comprar mais hardware é caro. Digite virtualização de servidor. Esta técnica utiliza software para dividir um único servidor físico em múltiplas plataformas virtuais exclusivas. Cada servidor virtual executa seu próprio sistema operacional de forma independente. Uma caixa pode hospedar um servidor Linux e um servidor Windows simultaneamente. Isso funciona porque a maioria dos servidores fica ociosa a maior parte do tempo. A virtualização reduz os custos de hardware para sistemas de grade que precisam de dezenas de nós.

Nesse ambiente, um serviço é qualquer sistema de software que permite a interação de computadores pela rede.

A comunicação geralmente depende do SOAP (Simple Object Access Protocol). Um conjunto de regras para troca de mensagens XML em uma rede. A Microsoft o desenvolveu. É a sintaxe da conversa.

O gerenciamento de dados nos leva ao estado. Em TI, estado é qualquer dado persistente. Ele sobrevive ao ciclo de vida do aplicativo. Quando você coloca livros em um carrinho da Amazon, isso representa dados com estado. A Amazon rastreia sua seleção enquanto você navega. Os serviços com estado permitem aplicativos de várias etapas que dependem de dados principais consistentes.

E finalmente, transiência. A capacidade de ativar ou desativar um serviço na rede sem travar toda a operação.

Compartilhando recursos

Então, como essas peças se conectam?

Várias organizações estão correndo para criar protocolos padronizados. O objetivo? Torne os ambientes de computação em grade plug-and-play.

Os sistemas de grade existem hoje. Mas a compatibilidade é imprevisível. Por que? Porque cada sistema geralmente usa um conjunto exclusivo de protocolos e ferramentas. Duas grades podem não se comunicar. Essa falta de acordo é o gargalo.

Um sistema de computação em grade funcional geralmente requer três coisas:

  1. Um nó de controle. Geralmente um servidor que cuida de tarefas administrativas. É o despachante.
  2. Uma rede. Computadores executando software de grade especial. Eles atuam como interfaces de usuário e pools de recursos. A rede pode ser homogênea (mesmo sistema operacional, mesmo hardware) ou heterogênea (uma mistura de tudo). Pode ser conectado fisicamente ou pela Internet aberta.
  3. Middleware. O burro de carga. Software que permite que diferentes computadores executem um processo na rede. Sem middleware, a comunicação é impossível. Não existe um formato único para middleware, o que aumenta o problema de fragmentação.

O nó de controle está ocupado. Ele prioriza tarefas. Ele agenda o trabalho em toda a rede. Ele decide quais recursos cada tarefa recebe. Ele monitora sobrecarga. Fundamentalmente, deve garantir que a máquina local do usuário não fique lenta. A grade deve explorar recursos não utilizados. Se o seu computador atrasar quando a grade for executada, o sistema está falhando.

O problema da padronização

O potencial é ilimitado. Mas somente se todos concordarem com protocolos e ferramentas.

Sem um formato padrão, os desenvolvedores terceirizados ficam presos. Os programadores independentes querem criar aplicativos na rede, mas não podem garantir a compatibilidade. Talvez eles precisem criar versões diferentes do mesmo aplicativo para sistemas diferentes. Isso é demorado. Os desenvolvedores não querem fazer o mesmo trabalho duas vezes.

Um conjunto de protocolos padronizado permitiria que os desenvolvedores se concentrassem em um formato. Uma base de código. Uma grade.

Até então, estamos presos a uma paisagem fragmentada. Poderoso, sim. Mas bagunçado.

O que nos traz de volta à questão: se o hardware existe e o software existe, por que nem toda rede é uma grade?

O paradoxo da segurança da energia distribuída

Vincular máquinas diferentes em uma única estrutura computacional parece uma solução utópica para o poder de processamento. Não é. É uma dor de cabeça logística envolvida em riscos de segurança. Ao conectar dois computadores, quanto mais milhares, você levanta questões sobre privacidade, controle de acesso e consumo excessivo de recursos.

Middleware é a resposta, ou pelo menos o curativo atual. Os protocolos de grade não resolvem inerentemente esses problemas; eles apenas tornam mais fácil para os desenvolvedores construir as ferramentas que o fazem. A grande preocupação? Criptografia.

A maioria dos engenheiros depende da criptografia para manter os dados seguros. Você codifica as informações para que apenas aqueles que possuem a chave possam lê-las. Quebrar esse código geralmente requer a fatoração de números enormes em seus divisores principais – uma tarefa que leva anos para um supercomputador normal. Mas aqui está a ironia: um sistema de computação em grade pode ser transformado em arma para decifrar esses mesmos códigos. Se um número suficiente de processadores ociosos estiver vinculado, o tempo necessário para quebrar a criptografia forte cai de anos para dias.

“Um hacker poderia criar um sistema de computação em grade com o propósito de quebrar informações criptografadas.”

O software proprietário pode oferecer uma pequena proteção, mas os padrões abertos – essenciais para o funcionamento das redes – deixam as portas bem abertas. Cada nó precisa de um software específico para interagir com o todo. Se esse software tiver uma vulnerabilidade, toda a rede sangrará.

Depois, há a questão do acesso. Você não pode simplesmente deixar todo mundo correr solto. Se um usuário ocupar todos os recursos, você chegará a um impasse. O nó de controle congela. Nada acontece. Assim, os protocolos de autorização e autenticação tornam-se inegociáveis. Apenas usuários selecionados obtêm acesso total à rede. Todos os outros? Eles recuperam sua própria máquina, sem a potência extra.

Quem está de olho na vitrine?

O middleware e o nó de controle atuam como seguranças da grade. Eles gerenciam o fluxo. Eles garantem que nenhum computador domine a rede e, inversamente, garantem que a rede não destrua o computador pessoal de um usuário até a última gota de ciclos de CPU. Se o sistema roubar seus próprios recursos computacionais, ele não será eficiente. É hostil.

Da ficção científica à bancada de laboratório

Então, para onde esse poder realmente está indo? Não em seus videogames. Não em suas planilhas.

A maioria das redes operacionais hoje pertence à academia e à pesquisa. Eles são tecnicamente “sistemas de computação compartilhados”, em vez de grades empresariais verdadeiras e persistentes. Eles colhem ciclos não utilizados. E eles estão fazendo um trabalho pesado.

SETI@home: Ouvindo o Vazio

O projeto Search for Extraterrestrial Intelligence (SETI) colocou a computação em grade no mapa. Os radiotelescópios coletam terabytes de ruído cósmico. Um único computador não consegue vasculhar aquele palheiro em busca de uma agulha. SETI@home criou um programa que transforma milhões de PCs domésticos em um supercomputador virtual. Você instala. Ele fica em segundo plano. Ele analisa dados em busca de sinais alienígenas. Se você quiser jogar Call of Duty, o software cede. Quando você faz logoff, ele é retomado.

Folding@home: Resolvendo o quebra-cabeça das proteínas

Depois, há o Grupo Pande em Stanford. Eles não estão procurando alienígenas; eles estão procurando as causas do Parkinson e do Alzheimer. A chave é o enovelamento de proteínas. As proteínas assumem formas específicas para funcionar. Quando eles se desdobram mal, surgem doenças.

Folding@home simula como as proteínas se dobram. É um enorme problema computacional. O Grupo Pande espera que, ao compreender a física do dobramento incorreto, possam encontrar novos tratamentos. O processo é idêntico ao SETI: baixe o aplicativo, deixe sua CPU ociosa durante a noite e contribua para a ciência médica.

A natureza efêmera da computação voluntária

Existem dezenas desses projetos. Muitos não são permanentes. Uma vez atingido o objetivo da pesquisa, a grade se dissolve. Às vezes, um novo projeto substitui o antigo. Às vezes simplesmente desaparece.

É um modelo fascinante. Você empresta seus ciclos ociosos à ciência. Você não recebe nada em troca, exceto a sensação calorosa de contribuir para o SETI ou para a pesquisa médica. O software foi projetado com baixa prioridade. Respeita a sua máquina. Ele desliga quando você precisa. Ele acorda quando você não acorda.

Mas isso importa? Se a rede puder ser usada para quebrar a criptografia, se os controles de acesso forem frágeis, se os projetos forem temporários… vale a pena o risco? O código está aí. Os processadores estão online. A questão é se estamos construindo uma ferramenta de descoberta ou uma botnet esperando para acontecer.

Assim que o computador termina de processar os números, o software do projeto envia esses dados de volta ao nó de controle. O nó classifica e coloca os resultados no banco de dados correto. Em seguida, ele envia um novo bloco de dados para sua máquina. O ciclo se repete até que o trabalho seja concluído. Se você tiver um número suficiente de pessoas participando, metas ambiciosas serão destruídas em um tempo surpreendentemente curto.

À medida que esses sistemas de computação em grade se tornam mais inteligentes, veremos mais organizações construindo redes versáteis. Pode até chegar o dia em que as empresas se conectem diretamente entre si. Naquele mundo, problemas computacionais que hoje parecem impossíveis poderiam reduzir-se a algumas horas de processamento. Teremos apenas que esperar para ver.

Sucesso no mundo real: o projeto de comparação de genomas

A teoria é boa, mas os resultados são melhores. Considere o Projeto de Comparação de Genomas como prova. Este esforço de pesquisa teve como objetivo comparar sequências de proteínas em mais de 3.500 organismos. Tudo começou em 20 de dezembro de 2006.

Em 21 de julho de 2007, o projeto já havia atingido todas as suas metas. Não era necessário um único farm de supercomputadores. Ele usou um sistema de computação em grade para alimentar o trabalho pesado. Esse é o poder dos recursos distribuídos.

O que exatamente é computação em grade?

Muitas vezes as pessoas confundem isso com computação em nuvem padrão. A diferença está no escopo e no propósito. Uma grade é uma rede de computadores que compartilham recursos para resolver problemas grandes e complexos. Ele atua como um supercomputador virtual.

Você pode pensar na computação em grade como o aproveitamento de recursos de vários domínios administrativos para resolver um único problema. Ele combina o poder de muitos computadores individuais espalhados por uma rede, geralmente a Internet pública. Isso o diferencia de um cluster simples, que geralmente fica dentro de uma organização.

Exemplos populares de projetos de grade

Por que isso é importante para você? Porque estas redes estão a resolver crises do mundo real. Aqui estão alguns exemplos notáveis:

  • SETI@home : Usa poder de processamento extra de milhões de computadores pessoais para procurar vida extraterrestre. Ele transforma CPUs ociosas em postos de escuta no espaço profundo.
  • Folding@home : concentra-se no dobramento de proteínas. Ao estudar como as proteínas se dobram, os investigadores esperam compreender melhor doenças como a doença de Alzheimer e a doença de Parkinson.
  • World Community Grid : Enfrenta desafios humanitários. Isto inclui investigação sobre o cancro, estudos sobre VIH/SIDA e iniciativas de energia limpa.

Esses projetos mostram como a computação em grade transforma hardware ocioso em uma força para o bem científico. Você não precisa ser um cientista para ajudar. Você só precisa de uma conexão com a internet e um pouco de tempo livre.

Por que isso é importante agora

A sofisticação destes sistemas está aumentando. É provável que mais empresas criem redes versáteis em breve. Estamos caminhando para uma era em que os problemas computacionais são reduzidos a pedaços gerenciáveis. Isso democratiza a computação de alto desempenho. Isso significa que você não precisa de uma sala de servidores de um milhão de dólares para executar simulações.

A infraestrutura já existe. A Globus Alliance e o Open Grid Forum continuam a refinar os padrões. Empresas como a IBM há muito investem em tornar a computação em grade acessível. As ferramentas estão facilitando a colaboração na Internet para essas tarefas massivas.

Olhando para o futuro

Na próxima vez que você vir seu computador ocioso, lembre-se de que ele pode fazer parte de algo maior. Poderia ser a análise de sequências de proteínas ou a varredura das estrelas. A tecnologia está madura. As aplicações estão crescendo. E o impacto é real.

“A computação em grade expande seu alcance.”

As peças estão no lugar. A questão é se iremos utilizá-los com rapidez suficiente. O futuro do trabalho distribuído não está chegando. Já está aqui, em segundo plano no nosso dia a dia.