Veja uma maneira de explorar a Nuvem para fazer Ciência
Este artigo discute algumas das principais questões sobre adotar serviços da nuvem para realizar experimentos científicos. O foco está na utilização de workflows científicos que necessitam de alto desempenho.
A vantagem mais importante por trás do conceito de computação na nuvem (Cloud Computing) para experimentos científicos é que qualquer cientista é capaz de acessar muitos tipos de recursos (hardware e software) sem ter de adquirir ou configurar uma infraestrutura completa. Essa é uma necessidade fundamental para cientistas e aplicações científicas. É interessante que cientistas trabalhem independentemente da complexidade de configurar e instanciar um ambiente computacional completo, podendo, desta maneira, focar somente no desenvolvimento do experimento.
A quantidade de artigos científicos e industriais publicados que fornece evidência que a computação em nuvem já vem sendo considerada como um paradigma definitivo e já está sendo adotada por muitos projetos científicos. Entretanto, várias questões precisam ser analisadas quando cientistas decidem migrar um experimento científico para ser executado no ambiente da nuvem. O artigo online “Azure Use Case Highlights Challenges for HPC Applications in the Cloud” apresenta vários desafios focados no apoio a HPC (computação de alto desempenho - High Performance Computing), especificamente, para a plataforma Windows Azure da Microsoft. Neste artigo, nós discutimos alguns tópicos importantes para o apoio de computação em nuvem do ponto de vista científico. Alguns desses tópicos foram previamente organizados como uma taxonomia no nosso capítulo “Towards a Taxonomy for Cloud Computing from an e-Science Perspective” do livro “Cloud Computing: Principles, Systems and Applications”, e a versão original (em inglês) deste artigo está na página “HPC in the Cloud” (veja Recursos).
Nas últimas décadas, o uso efetivo de ambientes computacionais científicos evoluiu rapidamente, abrindo caminho para a chamada e-Science. Os experimentos em e-Science também são conhecidos como experimentos in silico e podem ser encontrados em vários domínios científicos, tais como bioinformática e exploração de petróleo em águas profundas. Um experimento in silico é conduzido por um (ou mais de um) cientista responsável por gerenciar o experimento inteiro, cujas etapas podem ser nomeadas em composição, execução e análise. A maioria desses experimentos é composta por um conjunto de programas encadeados de maneira coerente. Tal fluxo de programas, onde a saída de um programa é a entrada do próximo no fluxo, possui um mesmo objetivo científico final. Este fluxo é denominado workflow científico.
Um workflow científico pode ser definido como uma abstração que permite a composição estruturada e controlada de programas e dados como uma sequencia de operações com um objetivo desejado. Tais workflows representam uma alternativa atraente para modelar pipelines ou fluxo de programas e serviços baseados em scripts, os quais normalmente representam algoritmos e métodos computacionais amplamente conhecidos e utilizados. Sistemas de Gerência de Workflows Científicos (Scientific Workflow Management Systems - SWfMS) são responsáveis pela execução do workflow e coordenam a chamada de programas, localmente ou em ambientes remotos. Os SWfMS precisam oferecer apoio durante todo o ciclo de vida do experimento, incluindo: (1) projeto do workflow através de uma interface guiada (para seguir um método científico específico); (2) controle de diversas variações na execução do workflow; (3) execução do workflow de um modo eficiente (geralmente utilizando técnicas de paralelismo e ambientes HPC); (4) controle de falhas; e (5) acesso, armazenamento e gerenciamento de dados.
A combinação do apoio ao ciclo de vida com a utilização de um ambiente HPC apresenta vários desafios aos SWfMS existentes, devido ao ambiente de execução heterogêneo do workflow. Quando o ambiente HPC é uma plataforma em nuvem, surgem outras questões, conforme discutido a seguir neste artigo.
Nesta seção nós discutimos as questões sobre workflow científico relacionadas à computação em nuvem em termos das características de arquitetura, modelo de negócio, infraestrutura tecnológica, privacidade, preço, orientação e acesso, conforme ilustrado na Figura 1.
Custo é uma das características mais importantes em ambos os domínios científico e comercial. Uma vez que a maioria das nuvens públicas adota o modelo de pagamento por utilização (pay per use), é importante prever o preço final a ser pago e determinar como os recursos financeiros disponíveis para o experimento científico serão usados. No geral, o preço a ser pago para utilizar as nuvens segue três tipos (que têm sido analisados por cientistas): gratuito (normalmente se cientistas possuem sua própria nuvem ou acessam a nuvem de outra instituição), pago-por-uso (paga um valor específico relacionado à utilização dos seus recursos normalmente em horas) e bill-broken (cientistas pagam pra usar cada componente independente do tempo de utilização). Entretanto, essa avaliação está longe de ser simples, porque custos economizados pela nuvem (tais como adquirir equipamento e contratar suporte técnico) são difíceis de medir e calcular.
Nuvens podem ser classificadas em três categorias principais: software como serviço (Software as a Service - SaaS), infraestrutura como serviço (Infrastructure as a Service - IaaS) e plataforma como serviço (Platform as a Service - PaaS), criando um modelo denominado SPI. A avaliação do ambiente em nuvem deve considerar o modelo de negócios relativo ao suporte a dados científicos. No campo de e-Science, os dados gerados geralmente são considerados um dos recursos mais preciosos. O modelo SPI não considera serviços que são baseados em armazenamento ou bancos de dados. Então, é importante verificar os modelos que fornecem armazenamento como serviço e banco de dados como serviço: o primeiro fornece acesso a vários dispositivos de armazenamento que estão localizados remotamente, e o segundo fornece operações e funções de um sistema de gerência de banco de dados hospedado remotamente. Serviços de banco de dados são particularmente importantes em experimentos científicos para armazenar dados de proveniência, tal que podem ser consultados com acesso controlado (o que não é apoiado por serviços de armazenamento).
Quando analisamos as principais características de arquitetura da nuvem, é importante averiguar o apoio a visualização, segurança, compartilhamento de recursos e escalabilidade. Por exemplo, nuvens podem ocasionalmente realocar aplicações entre seus hospedeiros e alocar múltiplas aplicações no mesmo hospedeiro de acordo com a disponibilidade de recursos. Tais movimentos e instabilidades podem gerar impactos negativos no desempenho do workflow devido ao fluxo de execução de atividades e à transferência de dados entre as mesmas. Idealmente, o escalonador da nuvem deveria estar em sincronia com o SWfMW para estar ciente do fluxo.
Privacidade é uma questão fundamental em experimentos científicos. Muitos experimentos e resultados ainda não publicados podem ser privados durante o curso do experimento. Podemos classificar as abordagens em nuvem como privada, pública e híbrida. Do ponto-de-vista científico e em termos de privacidade, a abordagem mais “segura” é utilizar nuvens privadas. Em tais nuvens, todo o controle de segurança é definido pelo cientista (ou um especialista do time), o que significa que acesso externo é controlado pelo mesmo. Entretanto, nuvens híbridas e públicas geralmente fornecem mecanismos avançados de segurança que garantem privacidade de dados e aplicações. Cientistas têm que analisar se os mecanismos fornecidos são suficientes para suas expectativas.
Existem vários tipos de acessos, tais como (lista não exaustiva): navegadores, thin clients, clientes moveis e API. Analisar o tipo de acesso fornecido é importante para cientistas, pois o uso efetivo de tecnologias diferentes em experimentos científicos requer diferentes tipos de acesso. Navegadores Web são comumente utilizados para acessar serviços na nuvem. É intuitivo usar tais navegadores porque quase todo computador tem pelo menos um instalado e pode acessar tranquilamente os serviços na nuvem. Além disso, muitos navegadores Web são próprios para acessar a nuvem, tal como o Google Chrome. Thin clients e dispositivos móveis são outro tipo de acesso importante fora de um computador desktop. Finalmente, API é um modo fundamental para acessar a nuvem via comandos de linguagens de programação (tais como Java, Python ou C). Aplicações científicas complexas utilizam APIs para acessar a infraestrutura da nuvem numa forma nativa. Nesse caso, cientistas devem analisar os métodos de acesso já utilizados pela aplicação e verificar se o método de acesso pode ser usado (ou adaptado) para migrar pra nuvem.
A orientação da nuvem é diferente de acordo com o modelo de negócios utilizado. No modelo SaaS, aplicações são desenvolvidas na nuvem e podem apenas ser chamadas, i.e., o controle de execução está na aplicação. Nesse caso, consideramos essa abordagem como centrada na tarefa, pois os cientistas precisam transferir o controle aos donos da aplicação em vez de ter o controle durante a realização do experimento. Por outro lado, quando a infraestrutura é fornecida como serviço (IaaS, no qual hardware virtual é fornecido para ser configurado e controlado), o cientista tem controle total sobre as ações. Os programas serão executados nas configurações de ambiente escolhidas pelos cientistas. Nesse caso, consideramos essa abordagem centrada no usuário. Cientistas têm de analisar qual abordagem é melhor para suas necessidades. Se eles querem apenas executar uma aplicação tal como BLAST (para bioinformática), eles podem escolher uma abordagem centrada na tarefa. Se eles quiserem executar vários programas, mudar as configurações do ambiente, etc, uma abordagem centrada no usuário é mais adequada.
A infraestrutura de tecnologia define como uma abordagem específica para a nuvem é fisicamente implementada. Ela pode ser baseada em grades (grids), par-a-par (peer-to-peer), PCs, e clusters, ou uma combinação das mesmas. Essa avaliação pode ser comprometida em nuvens públicas, tais como a Amazon EC2, porque não é possível saber qual o tipo de tecnologia é utilizada para implementar a nuvem de fato. Entretanto, em nuvens privadas, é possível obter tal informação. Isso é muito útil porque muitos experimentos precisam de um cluster computacional ou uma grade para executar em paralelo e produzir resultados em um tempo factível e devemos saber se a nuvem pode oferecer esse apoio.
Este artigo mostrou que apesar do alto interesse da comunidade científica (especialmente aqueles que precisam executar aplicações científicas de alto desempenho computacional) sobre computação em nuvem, esse é ainda um campo em aberto. Escolher o melhor ambiente em nuvem para apoiar de forma eficiente o experimento científico é uma tarefa complexa e nada trivial. A utilização de nuvens para a execução de experimentos científicos é um avanço importante, mas ainda existe a necessidade de serviços focados na execução de workflows científicos para conectar melhor a nuvem a SWfMS. O SciCumulus é uma iniciativa importante nessa direção, enquanto outros sistemas (tais como Swift e Pegasus) também estão incorporando suporte a computação em nuvem.
HPC in the Cloud http://www.hpcinthecloud.com/hpccloud/2011-03-04/migrating_scientific_experiments_to_the_cloud.html.
Taxonomia: D. Oliveira, F. Baião, e M. Mattoso, 2010, “Towards a Taxonomy for Cloud Computing from an e-Science Perspective”, Cloud Computing: Principles, Systems and Applications (to be published), Heidelberg: Springer-Verlag
Amazon EC2: Amazon Elastic Compute Cloud: http://aws.amazon.com/ec2
SciCumulus: D. Oliveira, E. Ogasawara, F. Baião, e M. Mattoso, 2010, SciCumulus: A Lightweight Cloud Middleware to Explore Many Task Computing Paradigm in Scientific Workflows, In: Proc. 3rd IEEE International Conference on Cloud Computing, Miami, FL.
SWIFT: Y. Zhao, M. Hategan, B. Clifford, I. Foster, G. von Laszewski, V. Nefedova, I. Raicu, T. Stef-Praun, e M. Wilde, 2007, Swift: Fast, Reliable, Loosely Coupled Parallel Computation, In: Services 2007, p. 206, 199, Salt Lake City, UT, USA.
PEGASUS: E. Deelman, G. Mehta, G. Singh, M. Su, e K. Vahi, 2007, “Pegasus: Mapping Large-Scale Workflows to Dis-tributed Resources”, Workflows for e-Science, Springer, p. 376-394.
Outros Artigos e Livros sobre Computação nas Nuvens
N. Antonopoulos e L. Gillam, 2010, Cloud Computing: Principles, Systems and Applications. Springer.
M. Armbrust, A. Fox, R. Griffith, A.D. Joseph, R. Katz, A. Konwinski, G. Lee, D. Patterson, A. Rabkin, et al., 2010, A view of cloud computing, Commun. ACM, v. 53, n. 4, p. 50-58.
E. Deelman, G. Singh, M. Livny, B. Berriman, e J. Good, 2008, The cost of doing science on the cloud: the Montage example, In: Procs. of ACM/IEEE Conf. on Supercomputing, p. 1-12.
C. Hoffa, G. Mehta, T. Freeman, E. Deelman, K. Keahey, B. Berriman, e J. Good, 2008, On the use of cloud computing for scientific workflows, In: IEEE Intl. Conf. on eScience, p. 7–12