# Computação em grelha

Computação em GRID , computação em grade/grid , ou ainda, grade de cálculo (em inglês, grid computing), é um modelo computacional capaz de alcançar uma alta taxa de processamento dividindo as tarefas entre diversas máquinas, podendo ser em rede local ou rede de longa distância, que formam uma máquina virtual. Esses processos podem ser executados no momento em que as máquinas não estão sendo utilizadas pelo usuário, assim evitando o desperdício de processamento da máquina utilizada.
Na base da atual computação em grelha estão os aglomerado de computadores ou computadores localizados em diferentes centros de cálculo, ligados entre si por uma rede de alto débito (Largura de Banda), em Rede Privada Virtual - (VPN) por questões de segurança.
Concentra-se principalmente no "compartilhamento de recursos entre sites distribuídos geograficamente e no desenvolvimento de aplicações inovadoras e de alto desempenho". A partir da metade da década passada, quando os primeiros projetos de grid foram realizados, a computação em grade avançou bastante, por exemplo, computação em grade, padrões e definições, infra estruturas de grade, virtualização, middleware e aplicações inovadoras. Portanto, é um momento apropriado para concluir esses resultados de pesquisa e analisar a próxima etapa da computação em grade, que enfrenta mais problemas como o gerenciamento de dados em petascale, a oferta de ambiente de computação orientada por Qos, a infraestrutura eletrônica global e os avanços nas tecnologias de virtualização.
A computação em grade é diferenciada dos sistemas de computação convencionais de alto desempenho, como a computação em cluster, uma vez que os computadores em grade têm em cada nó, uma configuração para executar uma tarefa/aplicativo. Os computadores de grade também tendem a ser mais heterogêneos e geograficamente dispersos (portanto, não fisicamente acoplados) do que os computadores em cluster. $^{[1]}$ Embora uma única grade possa ser dedicada a uma aplicação específica, geralmente uma grade é usada para uma variedade de propósitos. As grades geralmente são construídas com bibliotecas de software de middleware de grade de uso geral.Tamanhos de grade podem ser bem grandes. $^{[2]}$
As grades são uma forma de computação distribuída em que um "supercomputador virtual" é composto de muitos computadores fracamente acoplados conectados em rede agindo em conjunto para realizar grandes tarefas.
Para certas aplicações, a computação distribuída ou em grade pode ser vista como um tipo especial de computação paralela que depende de computadores completos (com CPUs, armazenamento, fontes de alimentação, interfaces de rede, etc.) conectados a uma rede de computadores (privada ou pública). uma interface de rede convencional, como a Ethernet .
Uma grade de computação (ou "grade computacional") fornece uma plataforma na qual os recursos computacionais são organizados em um ou mais pools lógicos. Esses pools são coordenados coletivamente para fornecer uma grade distribuída de alto desempenho.

## Visão geral

A computação em grade combina computadores de vários domínios administrativos para alcançar um objetivo comum, $^{[3]}$ para resolver uma única tarefa e pode, então, desaparecer com a mesma rapidez.
O tamanho de uma grade pode variar de pequena - confinada a uma rede de estações de trabalho de computador dentro de uma corporação, por exemplo - para colaborações públicas grandes em muitas empresas e redes. "A noção de uma rede confinada também pode ser conhecida como uma cooperação intra-nós, enquanto a noção de uma grade maior e mais ampla pode, portanto, referir-se a uma cooperação entre nós". $^{[4]}$
As grades são uma forma de computação distribuída na qual um “supercomputador virtual” é composto de muitos computadores fracamente acoplados conectados em rede agindo em conjunto para executar tarefas muito grandes. Essa tecnologia tem sido aplicada a problemas científicos, matemáticos e acadêmicos computacionalmente intensivos por meio da computação voluntária e é usada em empresas comerciais para diversas aplicações, como descoberta de medicamentos, previsão econômica, análise sísmica e processamento de dados de back office em suporte a e-commerces e serviços da Web.
A coordenação de aplicativos em Grids pode ser uma tarefa complexa, especialmente ao coordenar o fluxo de informações entre recursos de computação distribuídos. Os sistemas de fluxo de trabalho de grade foram desenvolvidos como uma forma especializada de um sistema de gerenciamento de fluxo de trabalho projetado especificamente para compor e executar uma série de etapas computacionais ou de manipulação de dados, ou um fluxo de trabalho, no contexto da grade.

## Comparação de grades e Super computadores convencionais

Computação “distribuída” ou “grid” em geral é um tipo especial de computação paralela que depende de computadores completos (com CPUs, armazenamento, fontes de alimentação, interfaces de rede, etc.) conectados a uma rede (privada, pública ou Internet ). por uma interface de rede convencional produzindo hardware de commodity, em comparação com a menor eficiência de projetar e construir um pequeno número de supercomputadores personalizados. A principal desvantagem do desempenho é que os vários processadores e áreas de armazenamento locais não possuem conexões de alta velocidade. Esse arranjo é, portanto, adequado para aplicações nas quais múltiplos cálculos paralelos podem ocorrer independentemente, sem a necessidade de comunicar resultados intermediários entre processadores. $^{[5]}$ A escalabilidade das redes geograficamente dispersas é geralmente favorável, devido à baixa necessidade de conectividade entre nós em relação à capacidade da Internet pública. $^{[citaçãonecessário]}$
Existem também algumas diferenças em programação e MC. Pode ser dispendioso e difícil escrever programas que possam ser executados no ambiente de um supercomputador, que pode ter um sistema operacional personalizado, ou exigir que o programa resolva problemas de simultaneidade . Se um problema puder ser paralelizado adequadamente, uma camada “fina” de infraestrutura de “grade” pode permitir que programas convencionais, independentes, considerando uma parte diferente do mesmo problema, sejam executados em várias máquinas. Isso torna possível escrever e depurar em uma única máquina convencional e elimina complicações devido a várias instâncias do mesmo programa em execução na mesma memória compartilhada e espaço de armazenamento ao mesmo tempo.

## Considerações e variações de design

Um recurso das grades distribuídas é que elas podem ser formadas a partir de recursos computacionais pertencentes a um ou mais indivíduos ou organizações (conhecidos como vários domínios administrativos ). Isso pode facilitar as transações comerciais, como na computação utilitária , ou facilitar a montagem de redes de computação voluntárias .
Uma desvantagem desse recurso é que os computadores que estão realmente realizando os cálculos podem não ser totalmente confiáveis. Os projetistas do sistema devem, portanto, introduzir medidas para evitar que maus funcionamentos ou participantes mal-intencionados produzam resultados falsos, enganosos ou errôneos, além de usar o sistema como um vetor de ataque. Isso geralmente envolve a atribuição aleatória de trabalho a nós diferentes (presumivelmente com proprietários diferentes) e a verificação de que pelo menos dois nós diferentes relatam a mesma resposta para uma determinada unidade de trabalho. Discrepâncias identificariam nós mal-funcionais e maliciosos. No entanto, devido à falta de controle central sobre o hardware, não há como garantir que os nós não caiam fora da rede em momentos aleatórios. Alguns nós (como laptops ou clientes de Internet dial-up ) também podem estar disponíveis para computação, mas não para comunicações de rede por períodos imprevisíveis. Essas variações podem ser acomodadas pela atribuição de grandes unidades de trabalho (reduzindo assim a necessidade de conectividade de rede contínua) e pela reatribuição de unidades de trabalho quando um determinado nó falha ao relatar seus resultados no tempo esperado.
Outro conjunto do que poderia ser chamado de problemas de compatibilidade social nos primórdios da computação em grade relacionado aos objetivos dos desenvolvedores de grade de levar sua inovação para além do campo original da computação de alto desempenho e através de fronteiras disciplinares em novos campos, como o de alta física energética. $^{[6]}$
Os impactos da confiança e da disponibilidade no desempenho e na dificuldade de desenvolvimento podem influenciar a escolha de implantar em um cluster dedicado, em máquinas ociosas internas à organização em desenvolvimento ou em uma rede externa aberta de voluntários ou contratados. Em muitos casos, os nós participantes devem confiar no sistema central para não abusar do acesso que está sendo concedido, interferindo na operação de outros programas, desconfigurando informações armazenadas, transmitindo dados privados ou criando novas falhas de segurança. Outros sistemas empregam medidas para reduzir a quantidade de confiança que os nós "clientes" devem colocar no sistema central, como colocar aplicativos em máquinas virtuais.
Sistemas públicos ou aqueles que atravessam domínios administrativos (incluindo diferentes departamentos na mesma organização) geralmente resultam na necessidade de executar sistemas heterogêneos, usando diferentes sistemas operacionais e arquiteturas de hardware. Com muitas linguagens, existe um trade-off entre o investimento em desenvolvimento de software e o número de plataformas que podem ser suportadas (e, portanto, o tamanho da rede resultante). Linguagens multiplataformas podem reduzir a necessidade de fazer essa troca, embora potencialmente à custa de alto desempenho em qualquer nó (devido à interpretação em tempo de execução ou falta de otimização para a plataforma específica). Vários projetos de middleware criaram infraestrutura genérica para permitir que diversos projetos científicos e comerciais aproveitem uma grade associada específica ou para a finalidade de configurar novas grades. O BOINC é comum para vários projetos acadêmicos que buscam voluntários públicos; mais estão listados no final do artigo .
Na verdade, o middleware pode ser visto como uma camada entre o hardware e o software. No topo do middleware, várias áreas técnicas devem ser consideradas, e estas podem ou não ser middleware independentes. As áreas de exemplo incluem gerenciamento de SLA , confiança e segurança, gerenciamento de organização virtual, gerenciamento de licenças, portais e gerenciamento de dados. Essas áreas técnicas podem ser atendidas em uma solução comercial, embora a ponta de cada área seja freqüentemente encontrada em projetos específicos de pesquisa que examinam o campo.

## Segmentação de mercado do mercado de grid computing

Para a segmentação do mercado de computação em grade, duas perspectivas precisam ser consideradas: o lado do provedor e o lado do usuário:

### O lado do fornecedor

O mercado global de grade compreende vários mercados específicos. Esses são o mercado de middleware de grade, o mercado de aplicativos habilitados para grade, o mercado de computação de utilitários e o mercado de software como serviço (SaaS).
O middleware de grade é um produto de software específico, que permite o compartilhamento de recursos heterogêneos e organizações virtuais. Ele é instalado e integrado à infraestrutura existente da empresa ou empresas envolvidas e fornece uma camada especial colocada entre a infraestrutura heterogênea e as aplicações específicas do usuário. Os principais middlewares de grid são Globus Toolkit , gLite e UNICORE .
A computação de utilitários é referida como o fornecimento de computação em grade e aplicativos como serviço, como um utilitário de grade aberta ou como uma solução de hospedagem para uma organização ou um VO . Os principais players do mercado de computação de utilitários são a Sun Microsystems , IBM e HP .
Aplicativos habilitados para grade são aplicativos de software específicos que podem utilizar a infraestrutura de grade. Isso é possível graças ao uso de middleware de grade, como apontado acima.
Software como serviço (SaaS) é “software que pertence, é entregue e gerenciado remotamente por um ou mais provedores”. ( Gartner 2007) Além disso, os aplicativos SaaS são baseados em um único conjunto de definições comuns de código e dados. Eles são consumidos em um modelo de um para muitos e o SaaS usa um modelo Pay As You Go (PAYG) ou um modelo de assinatura baseado no uso. Os provedores de SaaS não necessariamente possuem os próprios recursos de computação, que são necessários para executar seu SaaS. Portanto, os provedores de SaaS podem recorrer ao mercado de computação de utilitários. O mercado de computação de utilitários fornece recursos de computação para provedores de SaaS.

### O lado do usuário

Para empresas na demanda ou no lado do usuário do mercado de computação em grade, os diferentes segmentos têm implicações significativas para sua estratégia de implantação de TI. A estratégia de implantação de TI, bem como o tipo de investimentos em TI realizados, são aspectos relevantes para possíveis usuários da rede e desempenham um papel importante na adoção da rede.

## Limpeza de CPU

Captura de CPU, eliminação de ciclos ou computação compartilhada cria uma “grade” a partir dos recursos não utilizados em uma rede de participantes (seja mundial ou interna a uma organização). Normalmente, essa técnica usa ciclos de instrução de um computador de mesa que seriam desperdiçados à noite, durante o almoço ou até mesmo nos segundos espalhados ao longo do dia, quando o computador está aguardando a entrada do usuário em dispositivos relativamente rápidos. Na prática, os computadores participantes também doam alguma quantia de suporte de espaço de armazenamento em disco, RAM e largura de banda de rede, além da energia bruta da CPU.$^{[citaçãonecessário]}$
Muitos projetos de computação voluntários , como o BOINC , usam o modelo de limpeza da CPU. Como os nós tendem a ficar "off-line" de tempos em tempos, como seus proprietários usam seus recursos para sua finalidade principal, esse modelo deve ser projetado para lidar com tais contingências.
A criação de um ambiente oportunista é outra implementação de eliminação de CPU, na qual o sistema especial de gerenciamento de carga de trabalho coleta os computadores desktop ociosos para tarefas que exigem muitos cálculos, também se refere à Enterprise Desktop Grid (EDG). Por exemplo, o HTCondor $^{[7],}$ o framework de software de computação de alto rendimento para a racionalização distribuída de tarefas intensivas em computação pode ser configurado para usar apenas máquinas de mesa onde o teclado e mouse estão ociosos para aproveitar a energia desperdiçada da CPU. estações de trabalho de área de trabalho inativas. Como outros sistemas em lote com todos os recursos, o HTCondor fornece um mecanismo de enfileiramento de tarefas, política de planejamento, esquema de prioridades, monitoramento de recursos e gerenciamento de recursos. Ele também pode ser usado para gerenciar a carga de trabalho em um cluster dedicado de computadores ou pode integrar perfeitamente recursos dedicados (clusters montados em rack) e máquinas desktop não dedicadas (eliminação de ciclo) em um ambiente de computação.

## Razão da grade

Milhares de físicos em todo o mundo quereram aceder aos dados do grande colisor de hádrons (LHC) para os analisar, e o CERN decidiu construir uma infraestrutura distribuída para armazenar e tratar o astronómico fluxo de dados (25 petabytes = 25 milhões de gigabytes) gerados anualmente pelas experiências do LHC. Assim nasceu a WLCG sigla inglesa de Worldwide LHC Computing Grid.

## Antecedentes

Nos anos 90 uma nova infraestrutura de computação distribuída foi proposta visando auxiliar atividades de pesquisa e desenvolvimento científico. Vários modelos desta infra-estrutura foram especificados, dentre elas, a tecnologia em grade, em analogia às Redes Elétricas (power grids), se propõe em apresentar ao usuário como um computador virtual, a VPN, mascarando toda a infra-estrutura distribuída, assim como a rede elétrica para uma pessoa que utiliza uma tomada sem saber como a energia chega a ela.
Seu objetivo era casar tecnologias heterogêneas (e muitas vezes geograficamente dispersas) formando um sistema robusto, dinâmico e escalável onde se pudesse compartilhar processamento, espaço de armazenamento, dados, aplicações, dispositivos, entre outros. Foi o caso do SETI@home ou a dos cálculos para a fesabilidade do LHC do Cern com o LHC@home plataforma que com ajuda dos computadores pessoais ligados fora das horas de trabalho permitem ter muito poder de cálculo com pouca transferência de dados, e isso desde 2009.
Uma outra tecnologia de grelha é a P2P (peer-to-peer) que permite a interconexão de computadores pessoais para se trocar dados, ficheiros, etc.

## Visionários

Em si mesmo a computação em grade nasceu em setembro de 1997 aquando de uma reunião no Laboratório Nacional de Argonne sobre o tema "Construir uma grelha de cálculo". Em 1998, Ian Foster, desse mesmo laboratório, e Carl Kesselman, da Universidade de Califórnia em Los Angeles (UCLA), publicaram um trabalho chamado A grelha: plano para nova estrutura de cálculo - o que hoje é conhecido como a bíblia da grade. Por seu lado Ian Foster já havia participado no projeto I-WAY e o duo Foster-Kesselman tinham publicado em 1997 um artigo intitulado Globus: uma caixa de ferramenta para infraestrutura meta-informática fazendo assim referência direta a Globus e ao seu predecessor, a meta-informatica.

## Histórico

Os antecedentes das atuais grelhas de cálculo foram utilizados há muito tempo pela SUN, com a "SUN Grid Engine", ou pela Hewlett Packard, com a "HPC utilities", nomeadamente para:
* DEISA - Distrubuted European Infrastrcture for Supercomputing Applications
* EGEEE - Enabling Grid for E-sciencE, que liga mais de 180 centros de cálculos europeus e mundiais a partir de uma larga extensão de Globus, a Globus Toolkit, no quadro do projeto europeu Datagrid do CERN apoiado pelos mediadores (middleware) empregados na LCG.

## Grelhas/Grades

No meio científico já pode-se encontrar várias grades em funcionamento espalhados por vários países, muitos sendo projetos multi-institucionais. Como exemplos tem-se:
* EGI (European Grid Infrastructure)
* CERN openlab.
* Datagrid, do CERN, um projeto financiado pela Comunidade Europeia com o objetivo de atuar em áreas de pesquisa como astronomia, física e biologia;
* BIRN, projeto multi-institucional que conta com quinze universidades norte-americanas, voltado para a pesquisa neurológica
* Mammogrid, uma iniciativa da comunidade européia para formar uma base de mamografias que abrange toda a Europa com intuito de fornecer material de estudo e campo para o desenvolvimento de tecnologias em grade.
Quem pode usar grade de informatica
Governos e Organizações Internacionais
Militares
Professores e educadores
Empresas
Ciclos de processamento são os recursos compartilhados neste tipo. Existem três formas de explorar os recursos computacionais em um grade:
● executar uma aplicação em qualquer máquina disponível do grade, independentemente de onde esteja localizada;
● quebrar o aplicativo em partes menores para que estas possam ser executadas paralelamente através do grade;
● executar uma tarefa que precisa rodar várias vezes em diferentes máquinas do grade.
Este tipo de grade tem como principal funcionalidade prover serviços de comunicação tolerantes a falhas e com alta performance. Máquinas com conexões ociosas podem ser
utilizadas para enviar porções de dados ou prover redundância nas transmissões
O espaço de armazenamento disponível em cada máquina é compartilhado pelo grade. Desta forma aumenta a capacidade de armazenamento como um todo, além de aumentar a
performance, compartilhamento e confiabilidade dos dados. Utilizando todo o espaço como se fosse um sistema de arquivos só para todo o grade facilita a localização de
determinado arquivo, sendo que este pode estar dividido em partes menores e espalhado pelas máquinas participantes. Sistemas de gerenciamento podem duplicar dados sensíveis
em várias máquinas provendo uma redundância.
A utilização de padrões é um requisito para os grades. Os padrões estão sendo desenvolvidos pelo Global Grade Forum, uma entidade que possui centenas de membros, representando
mais de 400 organizações e empresas em mais de 50 países. Os padrões desenvolvidos:
● Open Grade Services Architecture (OGSA): define o que são os serviços e toda a estrutura que pode ser provida em um ambiente grade . É baseada nos padrões já definidos para os Web Services e considera um serviço em um grade como um Web Service com algumas particularidades.
● Open Grade Services Infrastructure (OGSI): OGSI é a especificação concreta da infraestrutura da OGSA. Baseado nas tecnologias de grades e Web Services, é o middleware para os chamados grade services, ou serviços do grade, definindo como construir, gerenciar e expandir um serviço.
● Novos padrões estão sendo desenvolvidos e aprimorados.
● Globus Toolkit : implementação das especificações OGSA/OGSI. Bindings para C e Java. Usando os Commodity Grade Toolkits é possível trabalhar em outras linguagens como Python, Perl, entre outras.
● IBM Grade Toolbox : versão comercial do Globus. C e Java
● Legion
● Ourgrade : projeto brasileiro desenvolvido pela Universidade Federal de Campina Grande.
● Ferramentas comerciais: Platform LSF, Avaki Grade Server,
● Diversas ferramentas para portais de grades: Grade Portal Development Kit. Legion Grade Portal. GridPort. Sun Techical Computing Portal. GridSphere.
Principais Projetos de Grade:
● ChinaGrid (interligação de universidades e governo)
● Projeto eDiamond (processamento de mamografias)
● Molecular Modeling Laboratory – UNC (desenvolvimento de drogas)
● DEISA (interligação de laboratórios científicos)
● AccessGrid (video conferência e e-learning)
● TeraGrid (interligação de universidades)
● World Community Grade (utilização de processamento de desktops para vários projetos)
No Brasil um bom exemplo é o Sprace, projeto de um grade do Instituto de Física da USP que participa no processamento dos dados provenientes do projeto D0 (projeto que reúne pesquisadores do mundo todo para analisar os dados gerados pelo acelerador de alta energia Tevatron Collider, localizado em Illinois, Estados Unidos).
A tecnologia em grade vem sendo aperfeiçoada, em grande parte pelo esforço do Global Grid Forum (GGF), uma comunidade formada por entidades do meio científico e corporativo que criam e padronizam tecnologias para ambientes em grade. Um dos trabalhos mais importantes do GGF atualmente vem sendo o desenvolvimento do OGSA (Open Grid Service Architecture), um padrão cujo objetivo é permitir interoperabilidade, portabilidade e reutilização de serviços em grade através da padronização de interfaces, comportamentos e serviços básicos obrigatórios, APIs, etc, assim viabilizando a utilização conjunta de serviços desenvolvidos em diferentes ambientes, por diferentes desenvolvedores.
Pesquisadores da área acreditam que a tecnologia de grades computacionais seja a evolução dos sistemas computacionais atuais, não sendo apenas um fenômeno tecnológico mas também social pois num futuro próximo reuniria recursos e pessoas de várias localidades, com várias atividades diferentes, numa mesma infra-estrutura possibilitando sua interação de uma forma antes impossível.

## Agradecimentos

O Cern reconheceu a contribuição excepcional do Reino Unido no desenvolvimento da grelha de cálculo.