• No results found

Já desde 1961 que as palavras de John McCarthy levaram ao aparecimento de diversos paradigmas, todos com o objetivo de concretizarem a mesma visão e provisionarem assim capacidade de computação como um serviço. Essencialmente, esta diversidade foi uma consequência dos limites existentes tanto a nível de hardware e software, sendo que muitos paradigmas tentavam concretizar a mesma visão mas com implementações distintas. Apesar de susceptível, a cloud computing não deve ser considerada um substituto de qualquer paradigma anterior só porque a sua origem e tendência são mais recentes. Inclusive, na literatura, há quem considere a cloud computing como um conceito que engloba e abrange alguns dos paradigmas que surgiram anteriormente e ao qual lhe são associados.

Dos diversos paradigmas e conceitos que foram surgindo, utility, grid e cluster computing parecem ser os mais semelhantes e dos mais associados quando se fala de cloud computing. Em comum, todos estes paradigmas se caracterizam por serem exemplos de computação paralela ou distribuída, e por oferecerem elevada capacidade de computação necessária para a execução de tarefas pesadas e dispendiosas a nível computacional. Por estes motivos, de seguida são

apresentadas algumas noções gerais sobre estes paradigmas, de forma a perceber o que são e o que os assemelha e/ou distingue da cloud computing.

2.3.1

Utility Computing

O termo utility computing é exatamente a visão proferida por John McCarthy em 1961. É simplesmente um conceito que enuncia o provisionamento de capacidade de computação como uma utilidade ou um serviço à semelhança de outros serviços públicos já existentes. Assim como a base da cloud computing, caracteriza-se por providenciar um serviço ao cliente consoante as suas necessidades e a custos reduzidos. O cliente consegue assim aceder a soluções computacionais, através da Internet ou de uma rede privada, sempre que quiser e quando quiser. A cloud computing contempla e está assente nestes mesmos princípios, pelo que facilmente se percebe o porquê de muitas vezes ser confundido ou associado como sendo um sucessor ou uma versão mais recente de utility computing. Na realidade, e na literatura, considera-se que utility computing

seja mais um modelo de negócio do que propriamente uma tecnologia ou um paradigma específico.

2.3.2

Cluster Computing

Durante vários anos, os designados supercomputadores foram os líderes no domínio da computação. De uma maneira geral, são máquinas autónomas com grande capacidade de computação, bastante dispendiosas e que precisam de uma grande quantidade de energia para terem um funcionamento correto (Abah & Ogwueleka, 2013). Por estes motivos, mais tarde começaram a ser substituídos por clusters, pois estes também permitem obter grande poder de computação, mas de uma forma mais barata. Um cluster é um conjunto de máquinas com capacidade de computação paralela ou distribuída que estão interligados entre si tipicamente através de uma rede local (LAN20). Caracterizam-se ainda por serem máquinas homogéneas, ou

seja, que têm o mesmo tipo de hardware e sistema operativo (Buyya et al., 2009) (Sadashiv & Kumar, 2011). Estas máquinas cooperam na execução de tarefas que não seriam possíveis de realizar nos tradicionais computadores individuais, como por exemplo tarefas que necessitem de grande poder de computação ou que exigem o processamento de grandes volumes de dados. Do

20 LAN – Local Area Network

ponto de vista do utilizador existem diversas máquinas que funcionam como se se tratassem de uma só.

Apesar de ambos os paradigmas possibilitarem grande capacidade computacional, existem algumas diferenças entre cluster e cloud computing. Por exemplo, e ao contrário daquilo que acontece nos clusters, as máquinas que suportam a infraestrutura de uma cloud podem estar separadas geograficamente e caracterizam-se normalmente por serem máquinas heterogéneas. Além disto, o foco da cloud está no provisionamento de recursos computacionais sob a forma de um serviço, ao passo que os clusters são normalmente implementados para aumentar o desempenho e a disponibilidade de um dado serviço ou processo.

2.3.3

Grid Computing

O paradigma de grid computing é bastante semelhante ao de clusters já apresentado, sendo muitas vezes considerado como uma sua evolução. De uma perspectiva geral, grid computing

consiste em aplicar os recursos de diversas máquinas existentes numa dada rede para a resolução de um único problema. Um exemplo de aplicação deste paradigma é a iniciativa SETI@home21

que, através da Internet e com a execução de um pequeno software, possibilita que cada utilizador contribua com recursos computacionais do seu próprio computador pessoal para a procura de inteligência extraterrestre. Apesar de semelhante, no caso dos clusters assume-se que as máquinas envolvidas são homogéneas e estão distribuídas localmente e acessíveis através de uma LAN. Porém, na computação em grid podem ser utilizadas máquinas de qualquer parte do mundo, o que possibilita a sua caracterização como um paradigma que utiliza máquinas heterogéneas, que podem estar distribuídas globalmente (Buyya et al., 2009). Todo o software, incluindo os sistemas operativos, que está a ser executado nessas máquinas pode também ser diferente. Aliás, para o utilizador, tipicamente, a sua máquina apenas tem de conseguir executar um software específico que será o responsável por coordenar e realizar a execução da tarefa pretendida. Normalmente, esse software é fornecido pela entidade que está a tirar proveito deste tipo de computação. Além disso, como uma dada entidade não “paga” por tirar proveito da capacidade das máquinas dos utilizadores, se estas estiverem interligadas através da Internet praticamente não existem custos de infraestrutura para este paradigma, nestes dois aspectos (Abah & Ogwueleka, 2013).

21 http://setiathome.berkeley.edu

Segundo Ian Foster (Foster et al., 2008), os paradigmas grid e cloud computing partilham a mesma visão: reduzir custos de computação ao mesmo tempo que se pretende aumentar a qualidade, flexibilidade e fiabilidade à custa da delegação de serviços para uma terceira entidade. Porém, entre outras características e detalhes técnicos (Foster et al., 2008) (Buyya et al., 2009) (Sadashiv & Kumar, 2011), estes dois paradigmas apresentam diversas diferenças apesar da similaridade em algumas funcionalidades e possibilidades. Por exemplo, grid computing é um modelo essencialmente descentralizado no que diz respeito à localização e distribuição dos recursos envolvidos. Estes recursos e respetivas máquinas são ainda propriedade de diversos e diferentes utilizados, ao passo que na cloud a infraestrutura que a suporta é normalmente propriedade de uma única entidade: o provedor de serviços da nuvem. Apesar destes aspectos, muitas vezes a computação em grid acaba por ser considerada como sendo uma versão limitada da computação em cloud devido a alguns problemas que existem no primeiro paradigma, em que, por exemplo, a falha de um nodo é mais difícil de colmatar do que num ambiente em nuvem, no qual se recorre a técnicas como a redundância para resolver tais situações.