• Nenhum resultado encontrado

Um modelo para disponibilização de pesquisas computacionais e seus artefatos em contêineres de software em nuvem

N/A
N/A
Protected

Academic year: 2021

Share "Um modelo para disponibilização de pesquisas computacionais e seus artefatos em contêineres de software em nuvem"

Copied!
102
0
0

Texto

(1)

SANDRO MARQUES DE CARVALHO

UM MODELO PARA DISPONIBILIZAÇÃO DE

PESQUISAS COMPUTACIONAIS E SEUS

ARTEFATOS EM CONTÊINERES DE

SOFTWARE

EM NUVEM

Universidade Federal de Pernambuco posgraduacao@cin.ufpe.br www.cin.ufpe.br/~posgraduacao

RECIFE 2017

(2)

Sandro Marques de Carvalho

Um Modelo para Disponibilização de Pesquisas Computacionais e seus Artefatos em Contêineres de Software em Nuvem

ORIENTADOR(A): Prof. Fernando da Fonseca de Souza

RECIFE 2017

Este trabalho foi apresentado à Pós-Graduação em Ciência da Computação do Centro de Informática da Universidade Federal de Pernambuco como requisito parcial para obtenção do grau de Mestre Profissional em Ciência da Computação.

(3)

Catalogação na fonte

Bibliotecária Monick Raquel Silvestre da S. Portes, CRB4-1217

C331m Carvalho, Sandro Marques de

Um modelo para disponibilização de pesquisas computacionais e seus artefatos em contêineres de software em nuvem / Sandro Marques de Carvalho. – 2017.

101 f.: il., fig., tab.

Orientador: Fernando da Fonseca de Souza.

Dissertação (Mestrado) – Universidade Federal de Pernambuco. CIn, Ciência da Computação, Recife, 2017.

Inclui referências.

1. Engenharia de software. 2. Computação em nuvem. I. Souza, Fernando da Fonseca (orientador). II. Título.

005.1 CDD (23. ed.) UFPE- MEI 2018-035

(4)

Sandro Marques de Carvalho

Um Modelo para Disponibilização de Pesquisas Computacionais e

seus Artefatos em Contêineres de Software em Nuvem

Dissertação apresentada ao Programa de Pós-Graduação em Ciência da Computação da Universidade Federal de Pernambuco, como requisito parcial para a obtenção do título de Mestre Profissional em 20 de dezembro de 2017.

Aprovado em: 20/12/2017.

BANCA EXAMINADORA

______________________________________________ Prof.Fernando da Fonseca de Souza

Centro de Informática / UFPE (Orientador)

__________________________________________ Prof. Rodrigo Lins Rodrigues

Universidade Federal Rural de Pernambuco

__________________________________________ Prof. José Gilson de Almeida Teixeira Filho Centro de Ciências Sociais Aplicadas / UFPE

(5)

Este trabalho é dedicado aos meus pais José e Audenora, meus irmãos Fábio e Sinesio, minha esposa Anne Kelly, meu filho Ícaro e meu sobrinho Victor. A minha "voinha" Maria (in memorian). Viveu seus dias como exemplo de simplicidade. Hoje é carinhosamente lembrada por todos os familiares e amigos. A minha professora Aline Andrade (in memorian). Pela dedicação, por ter sido exemplo de vida e por todo o legado deixado. Hoje é saudosa e eternamente lembrada por todos os ex-alunos, professores, amigos e familiares.

(6)

Este é um momento muito especial na minha vida e gostaria de agradecer a todos que seguiram ao meu lado.

A Deus, em primeiro lugar, por permitir mais esta conquista, me dando força, coragem, paciência e saúde.

À minha esposa, Anne Kelly, pela paciência de esperar o meu tempo durante esta batalha, pelo companheirismo, pelo amor e por sempre estar ao meu lado, me apoiando em meus projetos de vida.

Ao meu filho, Ícaro, que da maneira dele entendeu um pouco da minha ausência durante estes anos. Todo este sacrifício foi pensando sempre num futuro melhor para ele, pois quero deixar o meu legado e exemplo de pai.

Aos meus pais, José e Audenora, por serem meus maiores incentivadores e por nunca terem medido esforços para me oferecer sempre o melhor. A vocês devo tudo o que sou hoje.

Aos meus irmãos, Fábio e Sinesio, por todo apoio e força que me dão e por torcerem sempre por mim.

Ao Professor Fernando, muito obrigado pela paciência, compreensão, orientação, ideias, conversas e confiança compartilhadas ao longo destes anos.

Aos membros da banca, Prof. Gilson e Prof. Rodrigo, pelo aceite e disponibilidade de tempo nesta época tão atribulada.

Aos colegas do MPROF2014Sistemas, por dividir as lutas, frustrações e alegrias desses últimos anos.

Ao IF SERTÃO-PE e aos amigos e colegas de trabalho desta instituição, os quais incentivaram e colaboraram para que esta conquista pudesse acontecer.

Enfim, a todas as pessoas, colegas, amigos e familiares, que direta ou indiretamente, contribuíram para esta conquista, o meu MUITO OBRIGADO!

(7)

No geral, reproduzir resultados de pesquisas científicas é uma tarefa árdua, especialmente percebida por estudantes de pós-graduação. Em um contexto educacional, de formação para a pesquisa, as dificuldades e os problemas enfrentados pelos estudantes e pesquisadores para reproduzir os resultados gerados por pesquisas científicas estão relacionados, principalmente, à falta de subsídios necessários para a reprodução dos resultados obtidos a partir dos artigos científicos. Na mitigação disso, a Pesquisa Reprodutível é uma técnica que sistematiza boas práticas na pesquisa científica em computação. Diante do exposto, este trabalho apresenta um modelo de arquitetura para disponibilização de pesquisas computacionais e seus artefatos em contêineres de software em nuvem, de modo a permitir a reprodutibilidade de pesquisas na área de Ciência da Computação, o qual se utiliza do conhecimento do pesquisador sobre a sua pesquisa para definir quais artefatos necessitam ou não de publicação e compartilhamento. O objetivo é disponibilizá-lo para acesso público. Foram utilizadas as tecnologias de contêineres Docker e a computação em nuvem como plataformas-base para a concepção da abordagem. Um protótipo foi desenvolvido com a finalidade de avaliar por meio de um estudo de caso o modelo de arquitetura criado. Como resultado, verificou-se que o modelo de arquitetura aqui proposto se diferencia dos demais, a princípio pelo fato de impactar minimamente no modo de trabalho do pesquisador, poupando-lhe esforços para tornar pública a sua pesquisa. E também por estar mais próximo ao padrão desejado na escala de avaliação quando comparado às outras abordagens.

Palavras-chave: Pesquisa Reprodutível. Artefatos de Pesquisa. Contêineres de

(8)

Replicating scientific research results is very often an arduous task, especially as far as graduate students are concerned. In an educational context, considering research training, difficulties and problems faced by students and researchers to reproduce the results generated by scientific research are mainly related to the lack of necessary subsidies for the reproduction of the results obtained from scientific articles. In order to mitigate this, Reproducible Research is a technique that systematizes good practices in scientific research in computation. Bearing in mind the above, this work presents a architecture model for the provision of computational research and its artifacts in software containers in the cloud, in order to allow the reproducibility of researches in the area of Computer Science. This proposed solution uses the researchers knowledge to define which artifacts need publication and sharing. The goal is to make it available for public access. Docker container technologies and cloud computing were used as the basis platforms for designing the approach. A prototype was developed with the purpose of evaluating by means of a case study the architecture model created. As a result, it was verified that the architecture model proposed here differs from others, initially because it minimally impacts the researcher's way of working, saving him efforts to make his research public. Furthermore, it is closer to the desired standard in the evaluation scale when compared to the other approaches.

Keywords: Reproducible Research. Research Artifacts. Software Containers. Docker. Cloud Computing.

(9)

Figura 1.1 - Fluxo de Atividades Executado para Realização da Pesquisa. ... 19

Figura 2.1 - Espectro da Reprodutibilidade. ... 22

Figura 2.2 - Proposta de Mapa Conceitual para a Pesquisa Reprodutível. ... 28

Figura 2.3 - Características Essenciais da Computação em Nuvem. ... 32

Figura 2.4 - Modelos de Serviço da Computação em Nuvem. ... 35

Figura 2.5 - Modelos de Implantação da Computação em Nuvem. ... 37

Figura 3.1 - Processo de Criação de um Pacote Reprozip. ... 45

Figura 3.2 - Proposta de Arquitetura de Reprodução de Experimentos do AMOS.... 49

Figura 4.1 - Elementos Envolvidos numa Pesquisa Reprodutível. ... 54

Figura 4.2 - Arquitetura do Modelo Proposto... 56

Figura 4.3 - Etapas e Ambientes Envolvidos na Arquitetura do Modelo Proposto. ... 58

Figura 4.4 - Processo de Criação de uma Nova Imagem Docker. ... 61

Figura 4.5 - Estrutura Recomendada para o Diretório da Pesquisa. ... 62

Figura 4.6 - Conteúdo do Arquivo Dockerfile... 63

Figura 4.7 - Conteúdo do Arquivo docker-compose.yml. ... 63

Figura 4.8 - Arquivo com Exemplo de Credenciais de Acesso ao Serviço da AWS. . 66

Figura 4.9 - Diagrama de Casos de Uso - Ator: Pesquisador... 68

Figura 5.1 - Fluxo de Processo do Modelo de Arquitetura Proposto. ... 73

Figura 5.2 - Total de Conexões Criadas no Dropbox. ... 75

Figura 5.3 - Documento Final e Artefatos da Pesquisa no Dropbox. ... 76

Figura 5.4 - Tela de Compartilhamento da Pesquisa no Dropbox. ... 77

Figura 5.5 - Dados Estatísticos Apresentados pelo GitHub. ... 78

Figura 5.6 - Tela de Cadastro da Pesquisa no GitHub. ... 78

Figura 5.7 - Tela de Inclusão dos Artefatos e Documento da Pesquisa no GitHub. .. 79

Figura 5.8 - Tela de Acesso à Pesquisa Completa no GitHub. ... 80

Figura 5.9 - Dados Estatísticos Apresentados pelo Docker. ... 81

Figura 5.10 - Ambiente em Execução via Interface de Linha de Comando. ... 82

Figura 5.11 - Ambiente em Execução via Interface Gráfica. ... 83

Figura 5.12 - Imagens Docker com a Pesquisa Completa Encapsulada. ... 84

(10)

Quadro 2.1 - Comparativo entre os Modelos de Implantação de Nuvem. ... 37 Quadro 3.1 - Comparativo entre os Trabalhos Relacionados. ... 50 Quadro 5.1- Quadro Demonstrativo da Análise das Questões do Estudo. ... 85

(11)

1. INTRODUÇÃO ... 12 1.1. Motivação ... 14 1.2. Justificativa ... 15 1.3. Pergunta de Pesquisa ... 17 1.4. Objetivos ... 17 1.4.1. Geral ... 17 1.4.2. Específicos ... 17 1.5. Contribuições Esperadas ... 17 1.6. Metodologia ... 18 1.7. Organização do Trabalho ... 20 2. FUNDAMENTAÇÃO TEÓRICA ... 21

2.1. Pesquisa Reprodutível em Computação ... 21

2.1.1. Vantagens ... 25 2.1.2. Desvantagens ... 26 2.1.3. Licenciamento ... 28 2.2. Computação em Nuvem ... 31 2.2.1. Características Essenciais ... 32 2.2.2. Modelos de Serviço ... 34 2.2.3. Modelos de Implantação ... 35

2.2.4. Service Level Agreements (SLA) ... 38

2.2.5. Pesquisa Reprodutível com a Infraestrutura em Nuvem... 39

2.3. Considerações Finais do Capítulo ... 43

3. TRABALHOS RELACIONADOS ... 44

3.1. Considerações Finais do Capítulo ... 50

4. A ABORDAGEM PROPOSTA ... 51

4.1. Definição Geral da Abordagem ... 52

4.2. Arquitetura ... 56

4.3. Preparação do Ambiente ... 60

4.3.1. Diferença entre Imagem e Contêiner ... 61

4.3.2. Estrutura de Diretórios e Arquivos de Configuração ... 62

(12)

4.4. Execução do Ambiente na Nuvem ... 66

4.5. Principais Atividades... 67

4.6. Considerações Finais do Capítulo ... 69

5. UM ESTUDO DE CASO PARA AVALIAÇÃO DA ABORDAGEM ... 70

5.1. Introdução ... 70 5.2. Planejamento ... 71 5.2.1. Objetivos ... 71 5.2.2. Questões do Estudo ... 71 5.2.3. Contexto de Aplicação ... 72 5.2.4. Protocolo e Instrumentos ... 72

5.3. Desenvolvimento do Estudo de Caso ... 74

5.3.1. Execução no Dropbox... 75

5.3.2. Execução no GitHub ... 77

5.3.3. Execução no Modelo de Arquitetura Proposto ... 80

5.4. Análise e Resultados ... 85

5.5. Considerações Finais do Capítulo ... 87

6. CONCLUSÕES ... 89 6.1. Principais Contribuições ... 90 6.2. Limitações ... 91 6.3. Trabalhos Futuros ... 92 6.4. Produção Bibliográfica ... 93 REFERÊNCIAS ... 94

(13)

1. INTRODUÇÃO

A reprodutibilidade dos resultados é considerada um fator primordial na ciência. O sucesso e a credibilidade de uma pesquisa estão ancorados na vontade dos cientistas de expor suas ideias e resultados a testes independentes e replicação por outros cientistas. Isso requer uma completa abertura dos dados, procedimentos e materiais (FOMEL e CLAERBOUT, 2009).

Os dados e informações sobre o desenvolvimento de uma Pesquisa Reprodutível (Reproducible Research - RR) ajudam a descrever os resultados e o protocolo científico, auxiliando na repetição e reprodução de um experimento (MESIROV, 2010). Goble (2012) enfatiza a importância da pesquisa reprodutível definindo que a reprodução é o princípio do método científico, que auxilia no processo de comparação e revisão de métodos empregados e resultados alcançados, verificando se estes estão corretos, e se o método é convincente e repetível. Além disso, para que um experimento seja válido sob o ponto de vista científico, o seu resultado deve ser passível de reprodução por terceiros.

A capacidade de reprodução dos experimentos científicos envolve todos os artefatos e elementos usados para a derivação dos resultados. Porém, para permitir a reprodução é necessário ainda prover ao cientista o acesso ao conjunto de dados, infraestrutura, plataforma de software, parâmetros de configuração necessários para a execução de um experimento de forma simples e conveniente, com mínimo esforço possível e com poder computacional necessário (KLINGINSMITH et al., 2011).

Diversas conferências e periódicos de prestígio internacional têm atribuído mais relevância à pesquisa reprodutível, tanto que suas políticas para publicação de artigos estão sendo revistas com a intenção de exigir cada vez mais a disponibilização de artefatos que auxiliem a reprodução das pesquisas.

Concomitantemente, nos últimos anos, uma área de estudo da Tecnologia da Informação tem se destacado: a computação em nuvem. Segundo a definição do National Institute of Standards and Technology (NIST), a computação em nuvem é um modelo que permite o acesso onipresente, conveniente e sob

(14)

demanda a um conjunto de recursos computacionais configuráveis por meio de uma rede de computadores, permitindo que tais recursos possam ser rapidamente fornecidos e liberados com o mínimo esforço de gerenciamento e interação com o fornecedor do serviço (MELL e GRANCE, 2011).

Esse modelo foi concebido para fornecer recursos de forma flexível, altamente escalável e sob demanda. Nele, o provedor é o detentor do recurso e o concede conforme a necessidade do usuário. Ademais, o pagamento é realizado de acordo com a quantidade de recursos alocados, a qual é medida de acordo com o tipo de serviço oferecido (data center, hardware e software).

A computação em nuvem é fundamentada em quatro tecnologias (ARMBRUST et al., 2010; VAQUERO et al., 2009): grade computacional, computação de utilidade, virtualização de recursos e arquitetura orientada a serviços. Em especial, a virtualização do ambiente permite que vários recursos de hardware e software sejam gerenciados na forma de um pool de recursos. Na virtualização, um computador físico pode acomodar diversos computadores lógicos, denominados máquinas virtuais (SMITH e NAIR, 2005).

De acordo com Yu (2007), a virtualização no nível de sistema operacional é definida como a existência de múltiplas instâncias isoladas de espaços de usuário (ao invés de apenas uma), que são gerenciadas pelo kernel desse sistema. Estas instâncias, chamadas de contêineres de software (ou simplesmente contêineres), representam todo um ambiente de execução: uma aplicação, juntamente com as suas dependências, bibliotecas e arquivos de configuração, agrupados em um único "pacote". Ao criar um contêiner de uma determinada aplicação e suas dependências, a diversidade de sistemas operacionais e infraestruturas subjacentes são abstraídas.

Segundo Romero (2015), Docker é uma ferramenta para criar e manter contêineres, ou seja, ela é responsável por armazenar vários serviços de forma isolada do Sistema Operacional (SO) host, como: web server, banco de dados, aplicação, memcached, entre outros. O seu back-end é baseado em LXC (LinuX

(15)

Ainda conforme Romero (2015), LXC funciona isolando processos do SO

host. É uma espécie de virtualização bastante leve, pois não faz uso de

emulação ou suporte a hardware, apenas proporciona a execução de vários sistemas Linux de forma isolada, daí vem a palavra contêiner. Além disso, ele utiliza o mesmo Linux Kernel do servidor host, o que torna tudo muito rápido.

Em outras palavras, o Docker é uma alternativa para virtualização completa e leve se comparada a Máquinas Virtuais (Virtual Machines - VM). No entanto, conforme Rubens (2015), contêineres e VM podem ser vistas entre si como tecnologias complementares ao invés de competitivas. Isso se deve ao fato de ser possível executar vários contêineres em uma VM.

Diante disso, a seção seguinte apresenta a motivação para o desenvolvimento do presente trabalho.

1.1. Motivação

Na pesquisa em Computação é bastante comum encontrar artigos que, em suma, transformam dados brutos em resultados computacionais a serem publicados. Para isso, os pesquisadores fazem uso de software, que em muitos casos é desenvolvido apenas para solucionar o problema desejado. Em uma análise apurada, percebem-se diversos problemas no código fonte do software. Dentre os principais problemas: falta de documentação, poucos ou nenhum comentário, nomes de métodos, funções e variáveis inadequados e problemas de identação (Barnes, 2010).

Programas escritos por pesquisadores podem ser desde pequenos scripts, desenvolvidos para automatizar tarefas, plotar gráficos e tabelas, realizar processamento matemático e estatístico e dar suporte a diversos tipos de simulações, até grandes rotinas para processar e filtrar dados das mais complexas formas.

Com frequência, essas soluções são desenvolvidas de forma tão obscura, que após a publicação dos resultados, elas são simplesmente esquecidas ou deletadas, fato esse que justifica a não divulgação do código fonte do software

(16)

por parte dos pesquisadores (Barnes, 2010). Mesmo quando se consideram pesquisadores com familiaridade em ferramentas e técnicas de desenvolvimento de software, a situação se mantém. Erros em software são bastante comuns (valores nulos, erros de conversão de dados), mas que sua detecção e correção são prejudicadas pela falta de acesso ao código fonte (Morin et al., 2012).

Assim, uma abordagem baseada na hipótese de que é possível fazer a portabilidade de pesquisas computacionais e seus artefatos para a infraestrutura da nuvem, utilizando a tecnologia de contêineres Docker, destaca-se como possibilidade de gerar promissores resultados para a pesquisa em Ciência da Computação e áreas afins.

Tal abordagem possibilita um maior nível de acesso e compartilhamento dos artefatos usados na produção dos resultados para o público em geral. Para tanto, as pesquisas computacionais poderiam ser transformadas em imagens Docker para serem publicadas e compartilhadas em um provedor de nuvem pública, permitindo aos interessados explorar e reproduzir as pesquisas na infraestrutura da nuvem.

A referida infraestrutura traz a possibilidade de acesso a recursos especiais, tais como: ambiente de computação de alto desempenho e ambiente de armazenamento das imagens e de execução dos contêineres Docker, tratando-os como unidades de compartilhamento das pesquisas. O armazenamento da infraestrutura na nuvem permite ainda manter o repositório de pesquisas, eliminando a necessidade de tarefas de manutenção de um centro de dados, pois os acordos de serviços englobam fatores de qualidade de serviço (Quality of Service - QoS), tais como disponibilidade, controle de falhas da estrutura e serviços de backup.

A próxima seção apresenta a justificativa para a concepção deste trabalho.

1.2. Justificativa

Em um contexto educacional, de formação para a pesquisa, as dificuldades e os problemas enfrentados pelos estudantes e pesquisadores para reproduzir os

(17)

resultados gerados por pesquisas científicas estão relacionados, principalmente, à falta de subsídios necessários para a reprodução dos resultados obtidos a partir dos artigos científicos. Segundo Donoho (2010), tais resultados são apresentados de forma pouco convincente em periódicos, conferências e livros, devido na maioria das vezes às limitações impostas pelo formato dessas mídias.

Na pesquisa reprodutível, o produto final de uma publicação não é apenas o artigo científico, mas todos os objetos necessários para a sua produção. Em geral, uma pesquisa reprodutível é composta pelo conjunto de dados de entrada,

software, bibliotecas, parâmetros de configuração, workflow científico, Sistemas

de Gerência de Workflow Científico (SGWfC), hardware e infraestrutura em geral utilizados para a execução de um experimento. O esforço necessário para limpar e documentar os objetos de pesquisa para prepará-los para a reutilização é uma das maiores barreiras para o compartilhamento de uma pesquisa (VANDEWALLE, 2012; LEVEQUE, 2009).

Mediante essas afirmações, mostra-se latente a necessidade de investigar e explorar novas opções para publicação e compartilhamento de uma pesquisa, cuja adoção impacte minimamente no modo de trabalho do pesquisador.

Partindo do princípio de que a ciência é universal, ou seja, deve ser acessível de forma livre a todos, esse mesmo princípio foi aplicado na concepção deste trabalho, incentivando a prática da pesquisa computacional e contribuindo com a educação no contexto da formação de pesquisadores. Para tanto, este trabalho foi desenvolvido para tratar as questões relacionadas à disponibilização de pesquisas computacionais e seus artefatos em contêineres Docker na infraestrutura de computação em nuvem.

Desta forma, será apresentada, na seção seguinte, a pergunta de pesquisa do presente trabalho, que trata exatamente do problema da escassez de trabalhos científicos publicados juntamente com seus artefatos.

(18)

1.3. Pergunta de Pesquisa

Diante do exposto anteriormente, a seguinte pergunta de pesquisa foi formulada: Como disponibilizar pesquisas computacionais e seus artefatos em contêineres de software em nuvem a fim de permitir o acesso público?

1.4. Objetivos

Para responder à pergunta de pesquisa, foram definidos os seguintes objetivos, divididos em geral e específicos:

1.4.1. Geral

Propor um modelo de arquitetura para disponibilização de pesquisas computacionais em contêineres de software na infraestrutura de computação em nuvem, no qual o pesquisador possa tomar decisões sobre quais artefatos publicar e compartilhar.

1.4.2. Específicos

 Definir um modelo de arquitetura apropriado ao contexto de nuvem pública para suporte à Pesquisa Reprodutível;

 Desenvolver um protótipo com um mecanismo que implemente o modelo;

 Avaliar o mecanismo por meio de um estudo de caso; e

 Disponibilizar o modelo proposto e avaliado para acesso público.

1.5. Contribuições Esperadas

Espera-se, ao final deste trabalho, alcançar as seguintes contribuições:

 Apresentação de um estudo abrangente dos temas: Pesquisa Reprodutível, Computação em Nuvem e Contêineres de Software

(19)

(Docker), de modo a facilitar o desenvolvimento de futuros trabalhos envolvendo esses tópicos;

 Desenvolvimento de um modelo de arquitetura que explore os diferentes níveis de publicação e compartilhamento de trabalhos científicos juntos aos seus artefatos, conforme crítica de Donoho (2010); e

 Apoio a laboratórios, grupos de pesquisa, estudantes e pesquisadores interessados em realizar Pesquisa Computacional Reprodutível.

1.6. Metodologia

A pesquisa, no contexto científico, pode ser classificada de acordo com diferentes critérios. Entre eles, é possível diferenciar tipos de pesquisa de acordo com sua natureza, objetivos ou procedimentos técnicos. Nem sempre um trabalho de pesquisa limita-se a um único tipo. Além disso, alguns tipos de pesquisa podem ser a base para outros (WAZLAWICK, 2014). Para isso, apresenta-se, a seguir, a classificação desta pesquisa.

Esta pesquisa pode ser classificada como exploratória e aplicada. A pesquisa exploratória visa conhecer inicialmente o tema de estudo. Pois, segundo Pinheiro (2010), a pesquisa exploratória visa proporcionar maior familiaridade com o problema com vistas a torná-lo explícito ou a construir hipóteses. Neste trabalho, foi realizada por meio da revisão da literatura.

A pesquisa aplicada, por sua vez, é a pesquisa de finalidade prática (KAHLMEYER-MERTENS et al., 2007). Este trabalho engloba a definição de um modelo de arquitetura, o desenvolvimento de um protótipo e sua respectiva avaliação para solucionar um problema real.

Portanto, para produzir o referencial teórico desta pesquisa foram realizadas consultas em livros conceituados relacionados aos temas em

(20)

discussão, a saber: Pesquisa Reprodutível, Computação em Nuvem e Contêineres de Software (Docker). Adicionalmente, foram consultados artigos disponíveis em bibliotecas científicas, tais como Association for Computing

Machinery (ACM)1, Institute of Electrical and Electronic Engineers (IEEE Xplore)2 e Scientific Eletronic Library Online (SciELO)3, explorando, especialmente, artigos publicados nos últimos cinco anos.

Juntamente à revisão de literatura, foi realizado um estudo a fim de analisar trabalhos a este relacionados. A revisão de literatura somada a esse estudo permitiu conhecer mais profundamente os temas em questão, possibilitando a compreensão de seus conceitos e da sua atual conjuntura.

De posse desses conhecimentos, foram levantadas as funcionalidades do modelo de arquitetura proposto, levando em consideração os objetivos acima descritos, para concepção do protótipo e implementação da proposta. Por fim, o protótipo foi testado por meio de um estudo de caso e as suas capacidades verificadas.

O fluxo de atividades pode ser resumido de acordo com a Figura 1.1:

Figura 1.1 - Fluxo de Atividades Executado para Realização da Pesquisa.

Fonte: Elaborada pelo Autor (2017).

1 http://dl.acm.org 2 http://ieeexplore.ieee.org 3 http://www.scielo.org Produzir a Fundamentação Teórica Analisar os Trabalhos Relacionados Levantar as Funcionalidades do Modelo de Arquitetura Proposto Implementar o Protótipo que Execute o Modelo de Arquitetura Avaliar o Protótipo por meio de um Estudo de Caso

(21)

1.7. Organização do Trabalho

Neste capítulo, foi realizada uma breve introdução aos temas deste trabalho: Pesquisa Reprodutível, Computação em Nuvem e Contêineres de Software (Docker). Além disso, foram apresentadas a motivação e justificativa para a sua realização. Ainda neste capítulo, a pergunta de pesquisa foi apresentada, bem como os objetivos geral e específicos para responder à pergunta de pesquisa, foram destacadas as contribuições esperadas e foi descrita a metodologia utilizada.

O restante do trabalho está organizado da seguinte forma:

 Capítulo 2 - Fundamentação Teórica: Expõe o referencial teórico e aborda de forma mais abrangente os temas: Pesquisa Reprodutível, Computação em Nuvem e Contêineres de Software (Docker);

 Capítulo 3 - Trabalhos relacionados: Discorre e compara os trabalhos relacionados a este;

 Capítulo 4 - Abordagem Proposta: Apresenta a proposta deste trabalho, discutindo as etapas envolvidas na sua concepção e descreve os detalhes de implementação do protótipo;

 Capítulo 5 - Um Estudo de Caso para Avaliação da Abordagem: Descreve a avaliação realizada na abordagem por meio de um estudo de caso, bem como a análise dos resultados;

 Capítulo 6 - Conclusões: Expõe as considerações finais sobre esta pesquisa, destacando as contribuições, comentando as limitações e sugerindo direcionamentos para trabalhos futuros; e

 Por fim, são destacadas as referências utilizadas na composição da revisão de literatura e na pesquisa.

(22)

2. FUNDAMENTAÇÃO TEÓRICA

A seguir, serão abordados, com apoio da literatura pesquisada, os principais temas que formam a base teórica deste trabalho: Pesquisa Reprodutível em Computação, Computação em Nuvem e Contêineres de Software (Docker).

2.1. Pesquisa Reprodutível em Computação

Como a ciência está se tornando cada vez mais digital, o uso da tecnologia tem acelerado o seu desenvolvimento, aumentando a eficiência e a eficácia no processo de produção e análise de dados. Entretanto, esse desenvolvimento vem acompanhado de uma produção massiva de dados gerados por um conjunto crescente de experimentos computacionais. Ao mesmo tempo aumentam os desafios para o desenvolvimento de abordagens que permitam a reprodutibilidade das pesquisas.

A busca pela pesquisa reprodutível em computação teve início na década de 90 (noventa) com a exigência de que artigos de geofísica, publicados na

Stanford Exploration Project4, fossem acompanhados de todos os arquivos de construção de código (SCHWAB et al., 2000) por meio de arquivos makefiles (STALLMAN e MCGRATH, 2002).

A ISO/DTS 21748:20175 apresenta os conceitos de repetição e reprodução. Fomel e Claerbout (2009) também conceituam e definem como duas classes distintas, a repetição e a reprodução. A repetição usa os mesmos processos, dados e demais artefatos de forma equivalente ao experimento original publicado, sem qualquer modificação dos elementos. A reprodução repete o experimento, porém, possibilitando variações no valor ou uso de um ou mais artefatos. A diferença básica entre os dois conceitos está relacionada com as condições experimentais. 4 http://sepwww.stanford.edu 5 https://www.iso.org/standard/71615.html

(23)

A repetição é sensível a variações no ambiente experimental, e a reprodução é robusta a essas variações (CASADEVALL e FANG, 2010).

A capacidade de reprodução de uma pesquisa científica juntamente com o rigor, transparência e verificação formam um fator decisivo para avaliar a qualidade de um trabalho científico. Uma pesquisa reprodutível é aquela

todas as informações relevantes do trabalho, incluindo, mas não limitado ao texto, dados e código, são

independente possa reproduzir os resultados

disso, a reprodutibilidade é o meio que permite que o conhecimento publicado torne-se realmente disponível para o público

De acordo com Peng (2011), u

preencher a lacuna no processo de geração de evidências científicas entre a não-replicação de um estudo e

extremos, há um espectro de possibi

menos reprodutível do que outro, dependendo dados foram disponibilizad

Figura

Segundo Pinheiro

tornar uma publicação reprodutível computacionais como apoio.

Um relatório gerado por

das pesquisas reprodutíveis baseada

A repetição é sensível a variações no ambiente experimental, e a reprodução é robusta a essas variações (CASADEVALL e FANG, 2010).

A capacidade de reprodução de uma pesquisa científica juntamente com o parência e verificação formam um fator decisivo para avaliar a qualidade de um trabalho científico. Uma pesquisa reprodutível é aquela

todas as informações relevantes do trabalho, incluindo, mas não limitado ao texto, dados e código, são disponibilizadas para que um pesquisador independente possa reproduzir os resultados (VANDEWALLE et al., 2007)

disso, a reprodutibilidade é o meio que permite que o conhecimento publicado se realmente disponível para o público em geral (DONOHO,

De acordo com Peng (2011), um dos objetivos da reprodutibilidade é preencher a lacuna no processo de geração de evidências científicas entre a replicação de um estudo e a replicação completa. Entre esses dois á um espectro de possibilidades e um estudo pode ser mais ou menos reprodutível do que outro, dependendo da forma como

foram disponibilizados, conforme mostra a Figura 2.1.

Figura 2.1 - Espectro da Reprodutibilidade.

Fonte: Pinheiro (2013).

Pinheiro (2013), a proposta apresenta o árduo caminho para tornar uma publicação reprodutível e a necessidade de utilização das plataformas

como apoio.

gerado por Stodden et al. (2013) sugeriu uma classificação pesquisas reprodutíveis baseada no nível de acesso aos documentos e A repetição é sensível a variações no ambiente experimental, e a reprodução é robusta a essas variações (CASADEVALL e FANG, 2010).

A capacidade de reprodução de uma pesquisa científica juntamente com o parência e verificação formam um fator decisivo para avaliar a qualidade de um trabalho científico. Uma pesquisa reprodutível é aquela na qual todas as informações relevantes do trabalho, incluindo, mas não limitado ao s para que um pesquisador ANDEWALLE et al., 2007). Além disso, a reprodutibilidade é o meio que permite que o conhecimento publicado

2010).

reprodutibilidade é preencher a lacuna no processo de geração de evidências científicas entre a completa. Entre esses dois e um estudo pode ser mais ou da forma como o código e os

o árduo caminho para e a necessidade de utilização das plataformas

ugeriu uma classificação no nível de acesso aos documentos e

(24)

materiais usados para a construção do experimento, disponibilização dos dados e códigos fonte de programas, em regras e restrições de licenciamento, direitos autorais, direito de cópia e distribuição dos materiais relacionados com a pesquisa. Esse relatório apresenta cinco classes:

 Pesquisa revisável - Permite que as descrições dos métodos de pesquisa tenham acesso aberto para que os resultados possam ser julgados quanto a sua credibilidade;

 Pesquisa replicável - Permite a duplicação dos resultados, por exemplo, por meio da execução de um código fonte e produção dos gráficos mostrados na publicação;

 Pesquisa confirmável - Permite que os resultados possam ser alcançados de forma independente por meio de uma descrição completa do algoritmo e da metodologia, sem a necessidade de usar o software fornecido pelo autor;

 Pesquisa auditável - Os registros dos materiais usados são arquivados para que a pesquisa possa ser defendida posteriormente. Os materiais podem ser privados e podem ser apresentados a um revisor requisitado para uma publicação; e

 Pesquisa reprodutível - É abertamente disponível, bem documentada e com o código e dados disponíveis ao público. Ela permite auditoria, replicação e reprodução dos resultados de forma independente e ainda permite a ampliação e aplicação do método em novos problemas.

Dentre as classes apresentadas, a última foi selecionada como objeto de estudo deste trabalho, mais especificamente a pesquisa reprodutível em computação. A qual acompanha os objetos de pesquisa (artefatos) utilizados para a sua concepção.

(25)

Um artefato é uma abstração que modela um conjunto de dados de interesse para o domínio do experimento. Artefatos são consumidos e gerados durante a execução de um experimento e representam desde dados temporários até o próprio resultado objetivo do experimento (KNOP, 2016).

Para Belhajjame (2012), os artefatos são como uma abstração usada para a comunicação, compartilhamento e reuso dos resultados de uma pesquisa. Artefatos são recursos que podem compreender, por exemplo, vídeos, imagens, hipertextos, apresentações em slides, ou seja, qualquer artefato digital que possa ser usado, reutilizado e referenciado (DIAS et al., 2009).

O compartilhamento dos artefatos facilita o desenvolvimento da ciência. Para tornar uma pesquisa mais consistente e confiável é necessário criar uma abordagem que torne a reprodução mais conveniente, por meio de uma combinação de melhores práticas com um conjunto de ferramentas automatizadas (DAVIDSON e FREIRE, 2008), provendo acesso aos objetos necessários para sua execução, com o mínimo esforço e o poder computacional necessário (KLINGINSMITH et al., 2011).

Para verificar os resultados computacionais de uma pesquisa é preciso recriar as condições nas quais o experimento foi realizado a partir do zero (SCHWAB et al., 2000). Esse contexto motivou a proposta deste trabalho, o qual propõe a disponibilização das publicações eletrônicas junto aos seus artefatos, permitindo que outros pesquisadores possam interagir e explorar as pesquisas, deixando de lado o paradigma "a partir do zero".

Essas características são responsáveis por diversos benefícios da pesquisa reprodutível. Adicionalmente, tais aspectos podem trazer algumas dificuldades, as quais serão discutidas nas seções seguintes, apresentando as vantagens, desvantagens e outros pontos relevantes da pesquisa reprodutível em computação, de modo que tal base teórica facilite a compreensão da aplicação prática deste trabalho.

(26)

2.1.1. Vantagens

A pesquisa reprodutível permite a avaliação de diferentes aspectos dos experimentos, tais como as ferramentas, os materiais e métodos empregados. Freire et al. (2012) listam quatro grandes benefícios:

 Programas reprodutíveis podem ser comparados em termos de desempenho e qualidade dos resultados gerados, a partir de conjuntos de dados de entrada em comum;

 Software e resultados são documentados permitindo aos usuários entender como usar e modificar o software, bem como os conjuntos de dados usados por ele;

 Software reprodutível é portável, ele pode ser transferido de um ambiente computacional para ser usado em outro; e

 Os experimentos reprodutíveis são citados, pois permitem que terceiros validem os resultados, aumentando o nível de confiança.

De acordo com Matthews (2004), a pesquisa reprodutível estabelece que um experimento relatado e de fato reprodutível mostra os acertos e também os caminhos que não produzem bons resultados, e, portanto, torna-se um importante passo para a transferência de conhecimento e tecnologia. Além disso, diminui a quantidade de tempo e esforço demandado para preparar o ambiente operacional para a reprodução dos resultados (SCHWAB et al., 2000).

Para Oliveira (2015), cada ensaio experimental torna-se um teste após o experimento ser concluído, pois, quando o experimento for repetido no futuro, já existirá uma definição de valor esperado, um índice de referência. Ou melhor, os acessos e testes contínuos realizados por outros pesquisadores mantêm as pesquisas reprodutíveis e o conhecimento associado continuará a crescer.

O compartilhamento dos materiais de uma pesquisa reprodutível beneficia a comunidade científica nos mais variados aspectos. Ele incentiva a análise de múltiplas perspectivas sob cada um dos elementos usados, auxilia na identificação de erros nos métodos, materiais e procedimentos, torna-se uma ferramenta útil para a formação de novos pesquisadores e permite o uso eficiente de recursos e financiamento, pois evita o retrabalho (HEATHER, 2007).

(27)

Heather (2007) afirma ainda que a quantidade de citações é uma métrica frequentemente usada por agências no processo de decisão de financiamento para projetos de pesquisa, estimulando a produção de trabalhos com essas características. Ou seja, a adoção de pesquisa reprodutível pode ainda beneficiar os pesquisadores por meio do aumento da quantidade de citações que referenciam o seu trabalho.

Considerando-se que a reprodução científica é um modelo de investigação bem respeitado, as barreiras tecnológicas antes existentes durante a transferência da pesquisa de um ambiente de origem para outro de destino, devido à variedade de infraestruturas de hardware e software, podem ser superadas com a combinação de contêineres de software executando em um ambiente de computação em nuvem.

2.1.2. Desvantagens

A Computação faz parte do terceiro vértice do triângulo da Ciência, ao lado da teoria e experimentação em grau de importância, porém, ela ainda não atingiu o mesmo grau de maturidade em termos de reprodução (LEVEQUE, 2009). Concomitantemente, as discussões sobre uma crise de credibilidade na computação têm aumentado, pois, atualmente é impossível verificar a maioria dos resultados computacionais apresentados e submetidos em conferências (FOMEL e HENNENFENT, 2007; DONOHO, 2010; LEVEQUE et al., 2012).

A iniciativa de reprodução é uma maneira de plataformas on-line facilitarem a comprovação rápida e independente de resultados publicados. Porém, ainda são necessárias importantes melhorias nos processos de reprodução.

De acordo com Goble (2012), uma pesquisa científica é considerada de boa procedência quando ela é documentada com detalhes suficientes para permitir a sua reprodução. Entretanto, segundo Fomel (2015), reprodução não é o objetivo, o importante na realidade é tornar a pesquisa mais fácil de ser verificada e aplicada.

(28)

Conforme Pinheiro (2013), para implantar pesquisa reprodutível, uma carga extra de trabalho é exigida para todos os envolvidos. Essa carga é causada pelo esforço em atender de forma satisfatória as demandas de RR, tais como: construção e manutenção de um sítio web, versionamento de todos os artefatos relevantes da pesquisa e a geração de manuais, descritores e documentação. Esse paradigma acarreta mudanças no modo de trabalho do pesquisador, pois, com frequência, essas atividades não fazem parte da sua rotina.

O esforço necessário para limpar e documentar os códigos e dados, e prepará-los para a reutilização é uma das maiores barreiras para o compartilhamento dos objetos de pesquisa (VANDEWALLE, 2012; LEVEQUE, 2009). É necessário desenvolver abordagens que reduzam essas barreiras, criando mecanismos que facilitem o compartilhamento dos artefatos da pesquisa. Além disso, não existe um benefício claro e objetivo que motive os pesquisadores a demandar esforços na produção desse material complementar.

Reprodutibilidade também requer manutenção e esta requer uma comunidade, pois a falta de manutenção faz com que a pesquisa reprodutível perca sua finalidade, consequentemente perdendo a sua utilidade e credibilidade.

Diversas soluções inovadoras de software têm sido apresentadas para o problema da reprodução. Porém, grande parte fracassa devido a diversos fatores, tais como: proteção de formatos de arquivos proprietários, falta de recompensa pela academia e agências de financiamento, dificuldade na concepção de soluções genéricas e a exigência da rápida publicação dos resultados se opõem ao processo de desenvolvimento baseado em padrões de projeto de software (DUDLEY e BUTTE, 2010).

A publicação e o compartilhamento dos objetos de pesquisas científicas devem considerar desafios quanto a questões de licença e direitos de autoria. A lei de direito autoral é uma estrutura legal inadequada para trabalhos científicos, pois as normas científicas guiam para a reprodução e construção de novas soluções sob a pesquisa de outros, contrariando o padrão da referida lei (STODDEN, 2009). Portanto, é preciso vincular licenças específicas segundo as características de cada tipo de objeto de pesquisa permitindo a reprodutibilidade.

(29)

Mais detalhes sobre essas questões estão na próxima seção, a qual aborda a subcategoria Licenciamento, parte integrante do Mapa Conceitual, mostrado na Figura 2.2, o qual foi proposto por Oliveira (2015):

Figura 2.2 - Proposta de Mapa Conceitual para a Pesquisa Reprodutível.

Fonte: Oliveira (2015).

Segundo o autor, um cientista ao consultar esse mapa conceitual pode considerar apenas as características que atendam a sua necessidade, e dependendo da pesquisa científica, essas necessidades variam.

2.1.3. Licenciamento

Conforme Oliveira (2015), a licença para acesso ou uso dos objetos de pesquisa pode ser definida de três formas distintas:

(30)

 Pública - O artigo, juntamente com os objetos de pesquisa são amplamente acessíveis ao público em geral, ou seja, qualquer pessoa pode obter os objetos usados na pesquisa e reproduzi-la;

 Privada - O artigo científico e os objetos de pesquisa têm o acesso controlado a um público específico, mediante uma regra de controle de acesso e distribuição dos objetos de pesquisa; e

 Mista - Possui políticas de concessão e restrição de acesso para cada um dos objetos de pesquisa, que pode ser pública ou privada, segundo diversas formas de licenciamento adotadas.

O Reproducible Research Standard (RRS) sugere a adoção de licenças públicas consolidadas mundialmente para os diferentes aspectos dos artefatos da pesquisa (STODDEN, 2009).

A licença Creative Commons (CC), a qual permite o uso das obras, desde que seja especificada a atribuição do proprietário (LIN et al., 2006; GARCELON, 2009), pode ser associada aos artigos, tabelas, figuras, gráficos, equações e demais mídias.

A licença BSD (Berkeley Software Distribution) permite a utilização e cópia de códigos fonte, modificados e não modificados, desde que a licença esteja acompanhada do(s) nome(s) do(s) autor(es) e da denominação: Copyright(c) <ANO>, <PROPRIETÁRIO> All rights reserved. Nesse caso, a redistribuição e uso do código fonte e arquivo binário, com e sem modificações, podem ser feitos quando (STODDEN, 2009):

 Redistribuições mantenham o aviso de direitos autorais;

 A redistribuição dos binários deve manter o aviso dos direitos autorais, com a exclusão da responsabilidade sob a documentação e demais materiais derivados; e

 Os nomes da organização e colaboradores podem ser usados para endossar ou promover produtos derivados, desde que se tenha uma autorização por escrito.

(31)

As licenças GNU GPL (General Public License) incentivam a publicação do

software juntamente com o código fonte (VALIMAKI, 2005), consoante os

seguintes componentes:

 Todo software sujeito a essa licença deverá ter o seu código fonte liberado; e

 Uma vez que a licença está ligada ao código, ela também será atribuída a qualquer instituição que utilize o código original.

Além dessas, pode ser adotada a licença LGPL (Lesser General Public

License) para códigos de bibliotecas, permitindo o uso em pacotes de software

proprietário, desde que os produtos derivados informem a existência dessas licenças (GPL e LGPL) (STODDEN, 2009).

Já para o caso dos dados contidos em bases, conforme o Protocolo de Dados Públicos Abertos para a Ciência (Science Commons Open Data

Protocol)6, os fatos descritos por um determinado dado são considerados componentes significantes e são de domínio público. Entretanto, segundo Stodden (2009), os produtos originais relacionados com esses fatos possuem direitos autorais. Ou seja, os fatos expostos em um trabalho são de domínio público, mas a seleção e o arranjo desses dados possuem direitos autorais.

Diante do exposto em relação ao tema licenciamento, este trabalho propõe que o pesquisador possa tomar decisões sobre quais tipos de licenças associar aos artefatos da pesquisa, assegurando o acesso público, bem como protegendo os direitos do autor da pesquisa original, garantido por exemplo, a citação.

A seguir, serão abordados os conceitos relacionados à computação em nuvem, descrevendo-se as principais características, os modelos de serviço e de implantação, assim como a relevância da computação em nuvem para a pesquisa reprodutível e consequentemente para este trabalho.

6

(32)

2.2. Computação em Nuvem

Segundo Armbrust et al. (2010), a computação em nuvem se refere tanto aos aplicativos disponíveis como serviço na Internet, quanto ao hardware e a infraestrutura de software básico nos data centers que oferecem esse serviço. Para Mell e Grance (2011), do NIST, a computação em nuvem é um modelo que permite acesso ubíquo, conveniente e sob demanda, por meio da rede, a um conjunto compartilhado de recursos computacionais configuráveis (por exemplo: redes, servidores, armazenamento, aplicações e serviços), que podem ser rapidamente provisionados e disponibilizados com o mínimo de esforço de gerenciamento ou de interação com o provedor de serviços.

Além das duas definições citadas para a computação em nuvem, existem outras, o que mostra que o termo ainda não está totalmente estabelecido. Alguns autores têm se esforçado para relatar o estado da arte da computação em nuvem até então, visando não só encontrar algum ponto em comum nas definições existentes, mas também estabelecer algum critério comparativo, dentre eles Vaquero (2009) e Zhang (2010). Diante das várias definições, pode-se afirmar que aquela apresentada pelo NIST (2011) é a mais bem aceita pela academia. Motivo pelo qual foi utilizada para o estudo da computação em nuvem no decorrer deste trabalho.

A computação em nuvem tem recebido a atenção tanto da academia quanto de grandes empresas, como é o caso da Amazon7, do Google8 e da Microsoft9. Segundo Hsieh et al. (2011), o tamanho dos conjuntos de dados armazenados em nuvem tem crescido rapidamente.

Serão explanados, nas seções seguintes deste capítulo, as características essenciais, os modelos de serviço, os modelos de implantação e a relevância da computação em nuvem para a pesquisa reprodutível.

7 https://aws.amazon.com 8 https://cloud.google.com 9 https://azure.microsoft.com

(33)

2.2.1. Características Essenciais De acordo com Mell e Grance (2011 características essenciais

característica a seguir.

Figura 2.3 - Características Essenciais da Computação em Nuvem

 Autoatendimento sob demanda

obter recursos de forma automática, sem intervenção humana, por meio de uma interface que apresente um catálogo de recursos e os serviços relacionados. Os provedores de nuvem disponibilizam uma interface que permite a

 Amplo acesso à recursos da nuvem

diferentes plataformas operacionais,

tablets, laptops

permite que os recursos da nuvem partir de qualquer loc

Amplo acesso à rede Características Essenciais

e acordo com Mell e Grance (2011), a computação em nuvem possui cinco características essenciais, como mostram a Figura 2.3 e as descrições

Características Essenciais da Computação em Nuvem

Fonte: Elaborada pelo Autor (2017).

atendimento sob demanda (on-demand self-service

obter recursos de forma automática, sem intervenção humana, por meio de uma interface que apresente um catálogo de recursos e os serviços relacionados. Os provedores de nuvem disponibilizam uma interface que permite a exposição e a requisição de tais recursos;

mplo acesso à rede (broad network access) - Possibilita

recursos da nuvem sejam acessados remotamente, a partir de diferentes plataformas operacionais, tais como:

laptops e estações de trabalho. Esse acesso geralmente

que os recursos da nuvem sejam amplamente acessado partir de qualquer local e dispositivo que tenham suporte à

Computação em Nuvem Autoatendi-mento sob demanda Agrupamen-to de recursos Medição de serviço Elasticidade rápida Amplo acesso à rede

computação em nuvem possui cinco e as descrições de cada

Características Essenciais da Computação em Nuvem.

service) - Permite

obter recursos de forma automática, sem intervenção humana, por meio de uma interface que apresente um catálogo de recursos e os serviços relacionados. Os provedores de nuvem disponibilizam uma

requisição de tais recursos;

Possibilita que os acessados remotamente, a partir de smartphones, e acesso geralmente amplamente acessados a al e dispositivo que tenham suporte à Internet;

(34)

 Agrupamento de recursos (resource pooling) - Permite encontrar um grande número de opções de recursos de forma flexível para que o cliente possa selecionar os que ele precisa, aumentando o atendimento aos requisitos do negócio e reduzindo os custos financeiros para as aquisições. Geralmente, os recursos são formados pelos componentes de computação (CPU e memória), armazenamento em massa (discos) e rede de computadores. O agrupamento de recursos é possível por meio de técnicas de virtualização de hardware (VM, discos e redes locais virtualizadas);

 Elasticidade rápida (rapid elasticity) - Habilidade de se expandir e/ou reduzir a alocação dos recursos de Tecnologia da Informação (TI) de forma eficiente, ou seja, escalar para obtenção de mais recursos (scale up) ou escalar para redução de recursos (scale

down) dinamicamente. A alocação e a liberação dos recursos podem

ser feitas de maneira manual, pelo próprio cliente ou de forma automática, mediante restrições e critérios previamente definidos e explicitados por meio dos Acordos de Nível de Serviço (Service

Level Agreements - SLA); e

 Medição de serviço (measured service) - Monitoramento, controle e otimização automática do uso de recursos alocados, tais como: o tempo de CPU, largura de banda e capacidade de armazenamento em relação à quantidade de tempo em que o recurso foi usado. Os modelos de fornecimento e de medição caracterizam o custo operacional na forma "pay-as-you-go", ou seja, o cliente paga pelos recursos alocados com base na forma como ele utiliza, tornando o processo transparente para ambas as partes, provedor e cliente.

É necessário que o serviço provido dê garantias aos usuários, de que, além de segurança, pode oferecer qualidade do serviço, tempo de resposta, disponibilidade, entre outras, conforme os SLA.

(35)

Mais detalhes sobre o tema SLA estão na Seção 2.2.4. A próxima seção aborda os modelos de serviço.

2.2.2. Modelos de Serviço

Um provedor de nuvem pode fornecer três modelos de serviço aos usuários (VAQUERO et al., 2009; ZHAO et al., 2011). Esses modelos oferecem diferentes níveis de abstração. Os principais modelos, segundo Mell e Grance (2011), são:

 Software como um Serviço (Software as a Service - SaaS) - Nesse modelo os aplicativos e demais software são hospedados remotamente, permitindo que os usuários acessem e manipulem os aplicativos via Internet. Esse modelo elimina a necessidade de instalação e configuração do software no computador do usuário;

 Plataforma como um Serviço (Plataform as a Service PaaS) -Modelo no qual os fornecedores podem oferecer na nuvem um nível de abstração adicional. Em vez de fornecer uma infraestrutura virtualizada, eles podem fornecer a plataforma de software na qual os sistemas possam executar (VAQUERO et al., 2009). Com isso, o dimensionamento dos recursos de hardware exigidos pela execução dos serviços é feito de forma transparente; e

 Infraestrutura como um Serviço (Infrastructure as a Service - IaaS) - Ocorre no nível de recursos de computação, armazenamento e redes de computadores. Trata-se da camada base da pilha de fornecimento de recursos na nuvem. Esse tipo de fornecimento é possível devido à tecnologia de virtualização, a qual permite dividir e alocar os recursos dinamicamente de acordo com a demanda. O modelo IaaS permite aos usuários implantar e executar suas aplicações e sistemas operacionais em VM.

Os principais modelos de serviço da computação em nuvem são apresentados na Figura 2.4:

(36)

Figura 2.4 - Modelos de Serviço da Computação em Nuvem.

Fonte: Elaborada pelo Autor (2017).

Alguns autores como Wang et al. (2010) incluem um quarto modelo de serviço, denominado Dados como um Serviço (Data as a Service - DaaS). Nesse modelo, os dados de vários formatos e múltiplas origens podem ser acessados por meio de serviços fornecidos na rede de computadores, para que os usuários possam manipulá-los remotamente como se estivessem com os dados em seu disco local (WANG et al., 2010).

A seção seguinte trata dos modelos de implantação de nuvem.

2.2.3. Modelos de Implantação

A computação em nuvem pode ser implantada e utilizada de diferentes maneiras, dependendo das necessidades de uso e negócio. Considerando os modelos de implantação, existem quatro categorias distintas, de acordo com o NIST (2011) e o Cloud Security Alliance (CSA)10:

 Nuvem privada (private cloud) - Disponível para uso exclusivo por uma única organização. Sua utilização, gerenciamento e operação podem ser

10 https://cloudsecurityalliance.org Computação em Nuvem SaaS IaaS PaaS

(37)

feitos pela própria organização, terceiros, ou por uma combinação dos dois, e pode estar localizada em suas dependências ou fora delas. No entanto, o cliente terá controle sobre sua localização geográfica, o que a faz tornar atrativa para dados ou sistemas com restrições de acesso ou que sejam de missão crítica;

 Nuvem pública (public cloud) - Disponível para uso aberto ao público em geral e que fica nas instalações do provedor. A sua propriedade, gerenciamento e operação podem ser de uma empresa, uma instituição acadêmica, uma organização do governo ou de uma combinação desses;

 Nuvem híbrida (hybrid cloud) - Composição de duas ou mais infraestruturas de nuvem (privada, comunitária ou pública), interligadas por tecnologias padronizadas ou proprietárias, as quais permitem portabilidade de dados e aplicações entre as nuvens; e

 Nuvem comunitária (community cloud) - Disponível para uso exclusivo de uma comunidade específica, formada por organizações que possuem interesses e preocupações em comum (por exemplo: requisitos de segurança e conformidade). Pode estar localizada nas dependências de uma ou mais dessas organizações ou fora delas. Sua utilização, gerenciamento e operação podem ser feitos por uma ou várias das organizações pertencentes à comunidade, por terceiros ou por uma combinação deles.

Os conceitos de nuvem privada, pública, híbrida e comunitária podem ter variações em outros modelos de implantação de nuvem. Contudo, os modelos são frequentemente apresentados em escalas que variam desde nuvem privada em um extremo à nuvem pública no outro.

A Figura 2.5 ilustra os modelos de implantação da computação em nuvem. Portanto, diante do exposto, o modelo de nuvem pública está mais intrinsecamente relacionado ao escopo deste trabalho, o qual preza pelo acesso e compartilhamento público de dados.

(38)

Figura 2.5 - Modelos de Implantação da Computação em Nuvem.

Fonte: Elaborada pelo Autor (2017).

Dentro dessas variações, vale a pena abordar o conceito de nuvem privada virtual. Segundo o Gartner11, quando um provedor de serviços utiliza recursos de nuvem pública para criar e fornecer nuvens privadas, o resultado é uma nuvem privada virtual, ou seja, uma nuvem pública sem compartilhamento de recursos, na qual tais recursos são acessados por uma conexão de rede privada.

Há muitas dúvidas em torno da delimitação entre um termo e outro, e sua divisão não tem sido absoluta nem consensual. No entanto, o Quadro 2.1, baseado no quadro Cloud Computing Models do CSA (2009), define algumas características que auxiliam a diferenciar os modelos de implantação de nuvem.

Quadro 2.1 - Comparativo entre os Modelos de Implantação de Nuvem. Modelo de implantação Gerenciada por Propriedade da infraestrutura Localização da infraestrutura Forma de acesso e consumo

Pública Terceiros Terceiros Fora das

dependências

Compartilhado Virtual privada Organização ou

terceiros Organização ou terceiros Fora das dependências Dedicado Privada Organização ou terceiros Organização ou terceiros Dentro das dependências Dedicado Híbrida Tanto organização como terceiros Tanto organização como terceiros Tanto dentro como fora das dependências

Tanto dedicado como

compartilhado Fonte: Adaptado de CSA (2009).

11

(39)

A próxima seção aborda os Acordos de Nível de Serviço, do inglês Service

Level Agreements (SLA) em computação em nuvem.

2.2.4. Service Level Agreements (SLA)

Segundo Sakr e Liu (2012), os SLA representam o contrato que capta as garantias acordadas entre os clientes e um provedor de serviços. Os SLA são o único documento legal entre cliente e provedor (WEIS e ALVES-FOSS, 2011).

O contrato é a alternativa para que o cliente tenha garantias de qualidade do serviço adquirido, uma vez que certas configurações de baixo nível somente podem ser realizadas pelo servidor.

Suleiman et al. (2012) dividem os SLA em duas categorias: SLA de Infraestrutura de Nuvem e SLA de Aplicações Baseadas em Nuvem.

A primeira categoria diz respeito ao acordo entre o provedor de serviços e seus clientes, os quais hospedam serviços em nuvem. Englobam especificações como desempenho do servidor, velocidade da rede, disponibilidade de recursos e capacidade de armazenamento, entre outras.

Já a segunda se refere ao relacionamento entre clientes da nuvem e os usuários finais das aplicações, uma vez que os clientes também devem garantir a qualidade dos seus serviços. Envolve questões como tempo de resposta, disponibilidade, segurança e tempo médio de espera, entre outras.

Ademais, é preciso que estejam claras ao cliente quais as medidas que deverão ser tomadas pelo provedor do serviço com relação à recuperação de desastres, à destruição de dados, ao acesso de usuários privilegiados, entre outras dificuldades que possam vir a ocorrer durante a prestação do serviço (WEIS e ALVES-FOSS, 2011).

Por fim, caso o serviço não atinja os níveis acordados, são definidas penalidades para os provedores. Tal punição pode ser, por exemplo, redução no preço pago pelo serviço.

(40)

Atualmente, os SLA disponíveis não atendem às necessidades dos usuários. Muitos provedores garantem, em contrato, apenas a disponibilidade de seus serviços (SAKR e LIU, 2012), ignorando outras competências relevantes para dar segurança ao cliente na contratação do serviço.

A especificação detalhada do contrato de nível de serviço pode ser um incentivo à adoção da nuvem por parte das empresas, particularmente aquelas cujos serviços são críticos e precisam de garantias. Desse modo, o avanço desse tema deve ser amplamente estimulado.

A seguir é descrito o potencial da computação em nuvem no âmbito da Pesquisa Reprodutível, objeto de estudo deste trabalho.

2.2.5. Pesquisa Reprodutível com a Infraestrutura em Nuvem

A computação em nuvem pode trazer diversas vantagens nos mais variados cenários para a comunidade científica.

Atualmente, os governos, institutos de pesquisa e líderes das indústrias estão adotando a computação em nuvem com o propósito de resolver os seus crescentes problemas de demanda de computação e armazenamento de dados (HIDEN et al., 2013). Como a nuvem fornece recursos de computação de forma escalável e elástica, ela torna-se uma solução atraente para os experimentos de pesquisa (KLINGINSMITH et al., 2011).

Para Juve e Deelman (2010), a nuvem oferece oportunidade para os pesquisadores testarem suas ideias e códigos antes de investirem recursos financeiros mais significativos em infraestrutura, em uma escala potencialmente maior. Em geral, os objetivos envolvem minimizar o tempo total de conclusão de um processamento com uma restrição orçamentária ou minimizar o processamento sob uma restrição de tempo.

A computação em nuvem pode auxiliar a reprodutibilidade de pesquisas de diversas maneiras (DUDLEY e BUTTE, 2010):

(41)

 Na camada de dados - A nuvem permite que os conjuntos de dados sejam facilmente armazenados e compartilhados virtualmente, sem necessariamente copiá-los para outro computador;

 Na camada do sistema - Snapshots de sistemas de computador completos podem ser trocados entre cientistas. Cópias de computadores armazenados e compartilhados em uma VM ou imagem Docker na nuvem podem fazer as análises computacionais se tornarem mais reprodutíveis; e

 Na camada de serviço - Os serviços computacionais são expostos a aplicações externas por meio de alguma forma de programação de

interface.

Alguns autores discutem os benefícios e as vantagens de migrar o ambiente de testes experimental das estações de trabalho, clusters e grades para o ambiente de nuvem computacional. As características e os recursos dos provedores de nuvem podem aumentar a capacidade de reprodutibilidade científica. Howe (2012) apresenta um conjunto de características da nuvem que justificam essa afirmativa:

 Maior captura de variáveis - É possível compartilhar todo o ambiente de trabalho (dados, códigos, logs, históricos de uso, resultados intermediários, figuras, anotações, experimentos fracassados, detalhes de configuração do sistema operacional e demais informações) por meio de VM;

 Portabilidade - A VM torna-se a unidade de compartilhamento da pesquisa. Esse nível de abstração elimina grande parte dos problemas de portabilidade nos processos de instalação, configuração e execução de software de terceiros;

 Menos restrições sobre os métodos de pesquisa - Experimentos executados em um computador local também podem ser executados

Referências

Documentos relacionados

Ninguém quer essa vida assim não Zambi.. Eu não quero as crianças

The strict partition problem is relaxed into a bi-objective set covering problem with k-cliques which allows over-covered and uncovered nodes.. The information extracted

Desde logo, a nossa compreensão e interpretação da importância funcional e ritual das lamentações públicas das carpideiras e dos carpideiros egípcios é sublinhada pelo

Dessa maneira, os resultados desta tese são uma síntese que propõe o uso de índices não convencionais de conforto térmico, utilizando o Índice de Temperatura de Globo Negro e

Atualmente os currículos em ensino de ciências sinalizam que os conteúdos difundidos em sala de aula devem proporcionar ao educando o desenvolvimento de competências e habilidades

Discussion The present results show that, like other conditions that change brain excitability, early environmental heat exposure also enhanced CSD propagation in adult rats.. The

Dada a potencialidade que o estudo com esse gênero tem para estimular a reflexão crítica do alunado, pautada pelos multiletramentos, analisamos a presença de aspectos culturais

Contudo, sendo um campo de pesquisa e de atuação muito específico e novo no Brasil, ainda existe uma série de dificuldades para a eleição de parâmetros de conservação