Na última década houve um aumento significativo nos sistemas de computação de alta performance e no desempenho das redes de computadores. Isto deriva essencialmente do facto de se ter melhorias substanciais a nível de hardware e software. Este avanço tecnológico permitiu desenvolver sistemas de elevado desempenho computacional com baixo custo, como os Clusters, para resolver problemas que necessitam de um processamento de dados e número de recursos elevados, em vários domínios de aplicação. No domínio da ciência, o melhor desempenho computacional de sistemas deste tipo permitiram aos cientistas alargar o escopo das suas investigações, podendo processar mais parâmetros que nunca e a melhoria das redes permitem a partilha de dados e resultados experimentais quase instantaneamente entre vários lugares do globo. Assim, a colaboração entre várias entidades é fomentada e melhorada e ajuda a que projectos de vários domínios sejam mais completos e tenham maior alcance, qualidade e rapidez de execução.
Hoje em dia, a génese de programas que facilitam a criação e exploração de estruturas orientadas para atacar projectos e problemas de larga escala dá-se a um ritmo bastante elevado. Estes programas são, colectivamente, designados de eScience [20].
Estes progressos na performance das redes e poder computacional das estruturas de computação provocam que os dados gerados, processados e analisados no contexto dos programas eScience sejam em número elevado e bastante distribuídos geograficamente. Devido a tudo isto, estes ambientes enfrentam vários desafios no que concerne à gestão, ao acesso, à distribuição, ao processamento e armazenamento destes dados. Consequentemente, criou-se uma infra-estrutura que juntasse recursos distribuídos de grandes áreas como bases de dados, redes de alta velocidade, supercomputadores e Clusters, dando origem ao que hoje é comummente conhecido como Grid Computing.
Embora este conceito estivesse a ser congeminado há já algum tempo, foi o livro de Ian Foster e Carl Kesselman lançado em 1998, "The Grid. Blueprint for a new Computing
Infrastructure" [21], que revolucionou o campo da computação oferecendo-lhe um novo
domínio de pesquisa: o Grid Computing. As ideias originais contidas no livro fazem o paralelo entre uma Grid computacional e a rede eléctrica (electrical grid), que oferece acesso transparente, consistente, fidedigno e universal à energia eléctrica, como se quer em sistemas de Grid Computing. Embora a definição precisa de Grid Computing seja ainda hoje motivo de discussão, esta comparação é globalmente aceite.
As principais motivações para o aparecimento do Grid Computing são: a necessidade de se processar grandes quantidades de dados; redução de custos, sendo uma alternativa mais barata relativamente aos supercomputadores; a possibilidade do uso de recursos geograficamente dispersos e portanto aumento de cooperações multidisciplinares entre várias organizações; necessidade de aumento do desempenho na resolução de problemas de larga escala; disponibilidade de recursos de forma consistente e fiável; a partilha de recursos e/ou serviços; oportunidade de aproveitar os ciclos ociosos (ciclos idle) dos recursos.
25
25
2.4.2 – Conceito
O conceito de Grid Computing ainda não é totalmente consensual nos dias de hoje pois pese embora a ideia básica não tenha mudado muito desde a sua definição por Foster e Kesselman [21], há muitas pessoas com diferentes ideias sobre o que uma Grid realmente é.
No sentido de tentar obter uma definição mais precisa do que é uma Grid e o processo de
Grid Computing, Stockinger elaborou um trabalho [22] cuja base assentou num inquérito
enviado para mais de 170 investigadores de Grid de todo o Mundo. Este inquérito baseava-se na seguinte directriz:
"Try to define what are the important aspects that build a Grid, what is distinctive,
and where are the borders to distributed computing, Internet computing etc." [22]
Portanto, nesta sondagem aos investigadores de Grid pretendia-se que cada um deles desse a sua definição sobre os aspectos importantes que constituem uma Grid, o que é distintivo e quais as fronteiras em relação à computação distribuída, Internet Computing, etc.
Houve mais de 40 pessoas a responder ao inquérito, o que pese embora poder haver diferentes visões sobre o assunto em questão, oferece uma perspectiva realista sobre se há uma percepção mais ou menos comum do que é uma Grid ou se há muitas opiniões divergentes. Como referido por Stockinger no seu artigo [22], o inquérito mostra que embora várias pessoas descrevam características da Grid de forma diferente, há muitas sobreposições nessas descrições e quase nenhumas contradições, o que permite concluir que os resultados do inquérito são coerentes e há um conceito geral de Grid globalmente aceite e presente entre os diferentes investigadores.
Conceito Global
A ideia geral de Grid Computing instaurada por Foster e Kesselman [21] não mudou mas foram adicionadas mais algumas ideias complementares. Por exemplo, Gregor von Laszewski do Argonne National Lab dos Estados Unidos da América diz que "na visão de Grid há uma distinção entre (a) a abordagem ou o paradigma da Grid, que representa um conceito e ideia geral para promover uma visão para sofisticadas e internacionais colaborações científicas e orientadas a negócios e (b) a instanciação física de uma Grid de produção baseada em recursos e serviços disponíveis para possibilitar a visão para sofisticadas e internacionais colaborações científicas e orientadas a negócios"1.
De acordo com o trabalho de Foster e Tuecke [23] referido em [22], uma estrutura de Grid
Computing deve providenciar um conjunto de capacidades técnicas como as seguintes:
. "Modelação dos recursos. Descreve os recursos disponíveis, as suas capacidades e as relações entre eles para facilitar a sua descoberta, provisionamento e gestão da qualidade de serviço;
. Monitorização e notificação. Providencia visibilidade para o estado dos recursos - e notifica aplicações e serviços de gestão da infra-estrutura de mudanças no estado - para possibilitar a descoberta e manter qualidade de serviço. O registo de eventos significativos e transições do estado também é preciso para auxiliar funções de contabilidade e auditoria;
26
. Alocação. Assegura qualidade de serviço através de um conjunto inteiro de recursos no tempo de vida da sua utilização por uma aplicação. Isto é possibilitado negociando o(s) nível(eis) de serviço e assegurando a disponibilidade dos recursos apropriados através de uma qualquer forma de reserva - essencialmente, a criação dinâmica de um acordo ao nível dos serviços;
. Provisionamento, gestão do tempo de vida e desmantelamento. Possibilita que um recurso alocado seja configurado automaticamente para o uso de uma aplicação, gere o recurso durante a tarefa em mãos e repõe o recurso no seu estado original para uso futuro;
. Contabilidade e auditoria. Segue a utilização de recursos partilhados e providencia mecanismos para transferir custos entre comunidades de utilizadores e para cobrar pelo uso de recursos por aplicações e utilizadores."
. Juntando a estas, Greg Astfalk da HP (Hewlett Packard), dos Estados Unidos, refere que a segurança é também uma capacidade importante no âmbito de sistemas de Grid Computing.
Analisando as várias respostas dadas a Stockinger [22], é possível inferir que o conceito mais aceite de Grid Computing é o de uma infra-estrutura que permite efectuar computação distribuída através de vários domínios administrativos, ou seja, é a combinação de vários sistemas distribuídos e de alta performance, desempenho e fluxo de dados para que haja uma partilha, colaboração e coordenação distribuída de recursos que pertencem a diferentes entidades ou organizações.
Stockinger [22] refere ainda as definições oferecidas pela CoreGRID Network of Excellence e da GGF, que são comummente aceites na área da computação. Quanto à GGF [25], há a seguinte definição para um sistema de Grid Computing:
"Um sistema que se interessa com a integração, virtualizaçao, e gestão dos serviços e recursos num ambiente distribuído, heterogéneo que suporta colecções de utilizadores e recursos (organizações virtuais) através de domínios administrativos e organizacionais tradicionais (organizações reais)."1
Quanto à CoreGRID Network of Excellence:
"Uma infra-estrutura totalmente distribuída, reconfigurável dinamicamente, escalável e autónoma para providenciar um acesso independente do local, difusivo, confiável, seguro e eficiente a um conjunto coordenado de serviços encapsulando e virtualizando recursos (poder computacional, armazenamento, instrumentos, dados, etc.) por forma a gerar conhecimento."1
Estas definições têm traços semelhantes àquelas aceites e divulgadas por Buyya e Venugopal em [24], como se vê por exemplo na definição do Globus Project, um dos vários projectos mundiais com o âmbito de desenvolver Grids para diferentes propósitos a diferentes escalas, que diz:
"Uma infra-estrutura que possibilita o uso integrado e colaborativo de computadores terminais, redes, bases de dados e instrumentos científicos pertencentes e geridos por múltiplas organizações."1
Ainda neste trabalho [24], refere-se que há várias estruturas de Grid Computing que se baseiam numa arquitectura baseada em Organizações Virtuais (OV) [26], como já referido em
27
27
definições anteriores. Estas não são mais que organizações reais que se juntam numa colaboração multiadministrativa e, muitas vezes, multidisciplinar, no sentido de partilhar recursos e colaborarem para atingir um determinado objectivo comum. Uma OV define que recursos os seus membros têm disponíveis e estabelece um conjunto de regras de acesso e utilização dos mesmos, tendo em conta prioridades e objectivos próprios de cada OV.
Importa ainda ressalvar que uma Grid pode ser construída com diferentes tecnologias, não havendo assim uma única tecnologia para esse efeito, até devido às diferentes necessidades e objectivos das organizações que adoptam sistemas de Grid Computing. Existem alguns
softwares e serviços que ajudam a construir Grids, como se verá mais à rente neste estudo,
permitindo conectar de forma mais fácil e intuitiva fontes de dados e recursos computacionais distribuídos de forma a suportar a análise e colaboração distribuída. Estas ferramentas (de
software ou serviços) são normalmente designadas de middleware Grid. Por exemplo,
tecnologias baseadas em serviços Web são usadas para construir Grids mas outras tecnologias podem ser utilizadas. De acordo com John Morrison da University College Cork da Irlanda, "(...) uma multiplicidade de tecnologias é até desejável e pode ser necessário usá-las concomitantemente numa Grid heterogénea" por forma a potenciar a sua performance.
Características de um sistema de Grid Computing
As características e capacidades que uma infra-estrutura de Grid Computing deve ter e que reúnem a concordância da grande maioria dos investigadores desta área são [22]:
. Colaboração: Uma Grid deve então partilhar os recursos de uma forma distribuída e justa. Esta colaboração, se for feita de modo apropriado, poderá resultar em vantagens emergentes e sinergias positivas entre utilizadores e provedores de serviço, inalcançáveis de outra forma.
. Agregação: A Grid permite agregar a capacidade de recursos individuais originando um recurso virtual de maior e muito alta capacidade, sendo preservada a capacidade do recurso individual. Assim, isto permite processar aplicações e trabalhos maiores mais rapidamente sendo que de um ponto de vista local se mantém a capacidade de correr novas aplicações. Os recursos devem poder ser adicionados dinâmica ou estaticamente.
. Virtualização: Os serviços de Grid Computing são muitas vezes apresentados numa interface que esconde a complexidade dos recursos adjacentes. Portanto, a Grid tem a capacidade de virtualizar a soma de todos esses recursos num recurso singular, permitindo por exemplo um ponto de entrada único para submissão de trabalhos ou para correr aplicações de larga escala. A virtualização pode cobrir tanto os recursos computacionais como os dados. Rodrigo Fernandes de Melo da Universidade de São Paulo, Brasil, refere, como mencionado em [22], a lista de recursos a virtualizar : Pode-se ter a utilização da Grid como virtualização de fluxo de trabalho, ou seja, o uso de serviços da Grid para executar e gerir processos através de várias plataformas; pode haver uma Grid de dados como virtualização de dados, ou seja, a gestão de conjuntos de dados partilhados independentemente do sistema de armazenamento onde eles estão guardados; ou ainda uma Grid semântica como virtualização da informação, tendo assim a capacidade de processar e "debater" sobre atributos de vários repositórios independentes de
28
informação. O mesmo autor refere no mesmo trabalho [22] outros tipos mais específicos de virtualização que um ambiente de Grid Computing deve ter.
. Orientação do Serviço: As Grid providenciam serviços de computação aos seus utilizadores, seguindo a ideia de uma arquitectura orientada aos serviços.
. Heterogeneidade: A Grid é normalmente um sistema heterogéneo, compreendendo na sua composição componentes de hardware e software diferentes, com diferentes performances.
. Controlo Descentralizado: Uma Grid deve fazer uso de mecanismos de controlo distribuídos, já que os recursos são propriedade de diferentes entidades, sendo esta uma das dificuldades destes sistemas, o facto de não haver um proprietário único para o sistema global, num todo.
. Standardização e interoperabilidade: Uma Grid tem a necessidade de cada vez mais integrar distintas tecnologias e elevar os acordos na standardização dos serviços. Esta promove definições standard da interface para serviços que precisam de interoperar para criar a infra- estrutura distribuída que consiga realizar as tarefas que os utilizadores querem fazer.
. Transparência de acesso: Através da virtualização dos recursos nos sistemas de Grid
Computing é possível oferecer níveis de transparência no acesso do utilizador comum aos
serviços e recursos da Grid, ou seja, sem este ter de ter presente a arquitectura adjacente ou topologia da rede.
. Escalabilidade: Mesmo que um problema novo não seja resolvido pelas infra-estruturas ou implementações Grid usadas, é muitas vezes a escala dos dados, recursos e utilizadores que contribui para a maior complexidade da Grid.
. Reconfigurável : Como referido na definição da CoreGRID, a Grid deve ser reconfigurável dinamicamente.
. Segurança: Uma característica basilar da Grid é a segurança no acesso aos recursos. Esta é uma problemática que se apresenta aos utilizadores da Grid sempre que a usam e é assim essencial que as infra-estruturas de Grid Computing consigam garantir segurança nos acessos aos recursos que se estendem por vários domínios administrativos.