UNIVERSIDADE DO SUL DE SANTA CATARINA RAFAEL WEINGARTNER PROPOSTA DE UMA PLATAFORMA DE CLOUD COMPUTING PARA VIRTUALIZAÇÃO DE COMPUTADORES

Documentos relacionados
Disciplina: Introdução à Informática Profª Érica Barcelos

Sistemas Operacionais

Capacidade = 512 x 300 x x 2 x 5 = ,72 GB

SISTEMAS DISTRIBUÍDOS

Sistemas Distribuídos

Curso Tecnológico de Redes de Computadores 5º período Disciplina: Tecnologia WEB Professor: José Maurício S. Pinheiro V

A computação na nuvem é um novo modelo de computação que permite ao usuário final acessar uma grande quantidade de aplicações e serviços em qualquer

Introdução ao Modelos de Duas Camadas Cliente Servidor

Virtualização de Sistemas Operacionais

Prof. Esp. Lucas Cruz

Profs. Deja e Andrei

MÓDULO 8 ARQUITETURA DOS SISTEMAS DE BANCO DE DADOS

Faculdade Integrada do Ceará FIC Graduação em Redes de Computadores

Sistemas Operacionais Introdução. Professora: Michelle Nery

Entrar neste site/arquivo e estudar esse aplicativo Prof. Ricardo César de Carvalho

1. CAPÍTULO COMPUTADORES

10 DICAS DE TECNOLOGIA PARA AUMENTAR SUA PRODUTIVIDADE NO TRABALHO

Administração de Sistemas de Informação Gerenciais

Unidade 13: Paralelismo:

BANCO DE DADOS DISTRIBUÍDOS e DATAWAREHOUSING

A consolidação de servidores traz uma séria de vantagens, como por exemplo:

MÓDULO 11 ELEMENTOS QUE FAZEM PARTE DO PROJETO DO SISTEMA

Sistemas Operacionais

Arquitetura dos Sistemas de Informação Distribuídos

Sistema Operacional Correção - Exercício de Revisão

O hardware é a parte física do computador, como o processador, memória, placamãe, entre outras. Figura 2.1 Sistema Computacional Hardware

4 Estrutura do Sistema Operacional Kernel

Memórias Prof. Galvez Gonçalves

Prof. José Maurício S. Pinheiro UniFOA

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

SISTEMAS OPERACIONAIS. Maquinas Virtuais e Emuladores

Classificação de SO (Sistemas Operacionais) Técnico de Informática 2º. Módulo Profa. Madalena Pereira da Silva

CONCEITOS E APLICAÇÕES DA COMPUTAÇÃO EM NUVEM

Virtualização Gerencia de Redes Redes de Computadores II

Comparação SDs X Scs

Sistemas Distribuídos

Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO

Organização e Arquitetura de Computadores I. de Computadores

Material 5 Administração de Recursos de HW e SW. Prof. Edson Ceroni

SISTEMAS OPERACIONAIS. Apostila 01 Assunto: Tipos de Sistemas Operacionais UNIBAN

COORDENAÇÃO DE TECNOLOGIA (COTEC) ABRIL/2011

Relatorio do trabalho pratico 2

Prof. Ms. José Eduardo Santarem Segundo Demonstrar o impacto que o tema virtualização tem representado no mercado

3. Arquitetura Básica do Computador

Sistemas Operacionais

Fernando Seabra Chirigati. Universidade Federal do Rio de Janeiro EEL879 - Redes de Computadores II Professores Luís Henrique Costa e Otto Duarte

Relatório de Progresso

Introdução aos Computadores

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

Núvem Pública, Privada ou Híbrida, qual adotar?

Conceitos Básicos de Rede. Um manual para empresas com até 75 computadores

TRIBUTAÇÃO NA NUVEM. Tax Friday 21 de outubro de 2011 AMCHAM - RJ

Um Driver NDIS Para Interceptação de Datagramas IP

INTERNET HOST CONNECTOR

Unidade III FUNDAMENTOS DE SISTEMAS. Prof. Victor Halla

Curso Tecnológico de Redes de Computadores 5º período Disciplina: Tecnologia WEB Professor: José Maurício S. Pinheiro V

Bancos de dados distribuídos Prof. Tiago Eugenio de Melo

Computação em Nuvem. Alunos: Allan e Clayton

Hardware (Nível 0) Organização. Interface de Máquina (IM) Interface Interna de Microprogramação (IIMP)

UNIVERSIDADE FEDERAL DE SANTA CATARINA UFSC DEPARTAMENTO DE INFORMÁTICA E ESTATÍSTICA INE BACHARELADO EM CIÊNCIAS DA COMPUTAÇÃO.

EVOLUÇÃO DOS SIST. DE COMPUTAÇÃO DÉC. DE 50 E 60

MÓDULO 7 Modelo OSI. 7.1 Serviços Versus Protocolos

MRP II. Planejamento e Controle da Produção 3 professor Muris Lage Junior

Sistemas Operacionais

EAGLE TECNOLOGIA E DESIGN CRIAÇÃO DE SERVIDOR CLONE APCEF/RS

FACULDADE PITÁGORAS DISCIPLINA: ARQUITETURA DE COMPUTADORES

Sistemas Operacionais. Prof. M.Sc. Sérgio Teixeira. Aula 02 - Estrutura dos Sistemas Operacionais. Cursos de Computação

SISTEMAS DISTRIBUIDOS

GESTÃO DE SISTEMAS OPERACIONAIS II


Sistemas Operacionais

Sistemas Operacionais. Prof. André Y. Kusumoto

Tecnologia da Informação. Prof Odilon Zappe Jr

Introdução a Computação nas Nuvens

Sistemas Operacionais. Prof. M.Sc. Sérgio Teixeira. Aula 05 Estrutura e arquitetura do SO Parte 2. Cursos de Computação

Sistemas Operacionais 1/66

Sistemas Operacionais Gerência de Dispositivos

Satélite. Manual de instalação e configuração. CENPECT Informática cenpect@cenpect.com.br

SISTEMAS OPERACIONAIS CAPÍTULO 3 CONCORRÊNCIA

BRAlarmExpert. Software para Gerenciamento de Alarmes. BENEFÍCIOS obtidos com a utilização do BRAlarmExpert:

Unidade Central de Processamento (CPU) Processador. Renan Manola Introdução ao Computador 2010/01

Notas da Aula 17 - Fundamentos de Sistemas Operacionais

Visão Geral da Arquitetura de Computadores. Prof. Elthon Scariel Dias

TRIBUTAÇÃO NAS NUVENS Uma Regulação em Debate

Processos (Threads,Virtualização e Migração de Código)

ADMINISTRAÇÃO DE SISTEMA OPERACIONAL DE REDE (AULA 1)

PARANÁ GOVERNO DO ESTADO

Everson Scherrer Borges João Paulo de Brito Gonçalves

O que é Cloud Computing?

REDE DE COMPUTADORES

Multiplexador. Permitem que vários equipamentos compartilhem um único canal de comunicação

BACHARELADO EM SISTEMAS DE INFORMAÇÃO EaD UAB/UFSCar Sistemas de Informação - prof. Dr. Hélio Crestana Guardia

Sistemas Operacionais. Roteiro. Sistemas de Computadores. Os sistemas de computadores são projetados com basicamente 3 componentes: Marcos Laureano

INTRODUÇÃO BARRAMENTO PCI EXPRESS.

ANÁLISE COMPARATIVA ENTRE APLICAÇÕES GRATUITAS EM NUVEM

1.1. Organização de um Sistema Computacional

Transcrição:

UNIVERSIDADE DO SUL DE SANTA CATARINA RAFAEL WEINGARTNER PROPOSTA DE UMA PLATAFORMA DE CLOUD COMPUTING PARA VIRTUALIZAÇÃO DE COMPUTADORES Palhoça 2011

RAFAEL WEINGARTNER PROPOSTA DE UMA PLATAFORMA DE CLOUD COMPUTING PARA VIRTUALIZACAO DE COMPUTADORE Trabalho de Conclusão de Curso apresentado ao Curso de Graduação em Sistemas de Informação da Universidade do Sul de Santa Catarina, como requisito parcial à obtenção do título de Bacharel em Sistemas de Informação. Orientador: Prof. Dr. Fernando Cerutti Palhoça 2011

RAFAEL WEINGARTNER PROPOSTA DE UMA PLATAFORMA DE CLOUD COMPUTING PARA VIRTUALIZACAO DE COMPUTADORES Este Trabalho de Conclusão de Curso foi julgado adequado à obtenção do título de Bacharel em Sistemas de Informação e aprovado em sua forma final pelo Curso de Graduação em Sistemas de Informação da Universidade do Sul de Santa Catarina. Palhoça, 21 de Novembro de 2011. Professor e orientador Fernando Cerutti, Dr. Universidade do Sul de Santa Catarina Theo Augustus Luz. Universidade do Sul de Santa Catarina Prof. Saulo Popov Zambiasi, Me. Universidade do Sul de Santa Catarina

There is no reason anyone would want a computer in their home. (Ken Olson).

RESUMO O trabalho apresenta os conceitos de Cloud Computing e virtualização relacionando-os com o fornecimento de recursos de infraestrutura computacionais sobre demanda. Demonstrando para os usuários o modo como são providos recursos computacionais através de uma plataforma de Cloud Computing. Descreve as plataformas mais utilizadas no mercado e a plataforma de Cloud Computing da IBM que faz uso da arquitetura mainframe. Apresentando os benefícios em termos de escalabilidade, flexibilidade, segurança e economia obtidos com a utilização de Cloud Computing. Apresentando a relação entre mainframe e Cloud Computing, de modo que essa combinação possa ser considerada uma das melhores plataformas provedora de recursos computacionais sobre demanda. Proporcionado a utilização de ambientes com todas as características (segurança, disponibilidade, estabilidade e escalabilidade) que o mainframe já esta acostumado a prover. E por fim afirmando que o fornecimento de recursos computacionais sobre demanda possui muitos benefícios e cada vez mais será adotada pelas empresas e usuários. Sendo que o mais importando sobre Cloud é que ela foca-se no modo como são providos e utilizados os recursos computacionais, e não em onde eles estão alocados. Provendo liberdade aos usuários de modo que esses possam inovar em suas soluções sem ter que preocupar-se com a infraestrutura computacional. Palavras-chave: Mainframe. Cloud Computing. Virtualização.

ABSTRACT The current computing model is becoming hardier to support. Almost every time when you need more computing resources (processor, memory or hard-disk) you have to change the entire computer, because you cannot change just one component. Those components become outdated in a fast way (normally 6 months or 1 year). In most of the cases the users (end users and companies) are forced to buy hardware that they do not need most of the time, because they cannot upgrade the computer capacity on the fly. The best way to do computing is having the required resources at the right time and place. As an example, I do not need 200GB of hard-disk to save my files, today I may need 100GB, tomorrow 150 GB and later 200GB. In the future if I do not need 200GB, I could decrease the storage capacity to 150GB or 100 GB, it also could be done with processors and memory. Using just the resources needed, means spending less, managing and maintaining resources that are not totally used. Using on demand computing, the users do not care about hardware and software management and maintenance. Avoiding the hardware and basic software such as operational systems and default apps management the users and companies can focus on innovation. Cloud computing enables users to have the needed resources everywhere and every time through a simple device, because of that the resources are provided by Internet or corporate networks. Today there are technologies that can provide on demand computers resources, in secure, reliable, and cost effective ways. Users should have in their minds that cloud computing is a new computing paradigm, delivering on demand computer resources through networks. And the Mainframe came to this scenario as one of the best platforms to apply the cloud computing concepts building a secure, reliable and cost effective cloud. The Mainframe architecture fits perfectly to support the cloud needs. Keywords, Cloud Computing. Mainframe. Virtualization.

LISTA DE ILUSTRAÇÕES Figura 1 Sistema multiprocessador....24 Figura 2 - Sistema multicomputador....25 Figura 3 - Arquitetura NUMA...28 Figura 4 Cluster....29 Figura 5 Sistema operacional de rede Peer-To-Peer....30 Figura 6 Sistema Web Distribuído....32 Figura 7 - Virtualização de Sistema Operacional...33 Figura 8 - Hosted hypervisor....34 Figura 9 Bare metal hypervisor....35 Figura 10 Hardware partitioning....35 Figura 11 Private Cloud....38 Figura 12 Community Cloud....39 Figura 13 Public Cloud....40 Figura 14 Hybrid Cloud...40 Figura 15 Percepção de Cloud Computing pelo usuário....45 Figura 16 Comparação: variação tempo de resposta por quantidade máquinas virtuais...74 Figura 17 Comparativo: quantidade transações suporta por nuvem...75

LISTA DE QUADROS Quadro 1 Preocupação dos consumidores em relação à segurança na nuvem....46 Quadro 2 VMware, recursos disponíveis para máquina virtual....49 Quadro 3 - VMware, recursos disponíveis para servidor host....49 Quadro 4 VMware, recursos disponíveis por cluster....50 Quadro 5 - Microsoft, recursos disponíveis para máquina virtual....54 Quadro 6 - Microsoft, recursos disponíveis para servidor host...55 Quadro 7 Microsoft, recursos disponíveis por cluster...55 Quadro 8 Xen Cloud Platform, recursos disponíveis para máquina virtual....59 Quadro 9 Xen cloud Platform, recursos disponíveis para servidor host....60 Quadro 10 Xen Cloud Platform, recursos disponíveis para nuvem....60 Quadro 11 IBM System Z, recursos por host....65 Quadro 12 - IBM System Z, recursos de servidores Blades no mainframe....65

LISTA DE FLUXOGRAMAS Fluxograma 1 - Etapas Metodológicas....43

SUMÁRIO 1 INTRODUÇÃO...13 1.1 PROBLEMÁTICA...15 1.2 OBJETIVOS...16 1.2.1 Objetivos Gerais...17 1.2.2 Objetivos Específicos...17 1.3 JUSTIFICATIVA...17 1.4 ESTRUTURA DA MONOGRAFIA...18 2 FUNDAMENTAÇÃO TEÓRICA...20 2.1 MODELO COMPUTACIONAL DE RECURSOS FÍSICOS...20 2.1.1 Sistemas Fortemente Acoplados...27 2.1.2 Sistemas Fracamente Acoplados...29 2.2 MODELO COMPUTACIONAL DE RECURSOS VIRTUALIZADOS...32 2.3 MODELO COMPUTACIONAL DE RECURSOS SOB DEMANDA...36 2.3.1 Características de Cloud Computing...36 2.3.2 Modelos de fornecimento recursos na nuvem...37 2.3.3 Modelos de aplicação do conceito de Cloud Computing...38 3 METODOLOGIA...41 3.1 CARACTERIZAÇÃO DO TIPO DA PESQUISA...41 3.2 ETAPAS METODOLÓGICAS...42 3.3 DELIMITAÇÕES...44 4 DIFICULDADE DE APLICAÇÃO DE CLOUD COMPUTING...45 5 DESCRIÇÃO DAS PLATAFORMAS QUE APLICAM CLOUD COMPUTING...48 5.1 SOLUÇÕES COM ARQUITETURA DE SERVIDORES (X86, AMD64)...48 5.1.1 VMware...48 5.1.2 Microsoft...54 5.1.3 Xen...59

5.2 SOLUÇÃO MAINFRAME...64 6 MAINFRAME E CLOUD COMPUTING...71 7 CONCLUSÕES E TRABALHOS FUTUROS...76 REFERÊNCIAS...78

13 1 INTRODUÇÃO O modelo computacional utilizado hoje pela grande maioria das empresas e quase totalidade dos usuários domésticos está se tornando inviável. Esse modelo obriga os usuários a realizarem a troca de todo o conjunto de hardware do computador, quando surge a necessidade de uma capacidade computacional maior. Visto que nem sempre é possível substituir somente o processador ou aumentar a capacidade de memória RAM (Random Access Memory) comprando mais chips, obrigando a troca de todo o conjunto de hardware (processador, placa mãe, memória RAM, placas de vídeo e etc.), pois esses componentes se tornam obsoletos rapidamente. O interessante seria um computador flexível, que possibilitasse a alteração dos recursos disponíveis de forma prática, durante o período necessário. Afinal, não se necessita sempre de 500 gigabytes (GB) de espaço para armazenamento de informações. Hoje talvez seja necessário 100GB, amanhã 120GB, depois, 150GB e assim por diante. Quando esses recursos não forem mais necessários, seria possível reduzir a quantidade dos recursos disponíveis, reduzindo também os custos. Porém, no modelo computacional atual, adquire-se um hardware com a filosofia de pensar no futuro, ou seja, adquire-se, hoje, recursos que somente serão necessários no futuro. Adquirir um hardware que não será totalmente aproveitado é uma ação corriqueira na área de Tecnologia da Informação (T.I) de hoje. O simples ato de comprar ou adicionar mais recursos computacionais representa grandes custos para os usuários domésticos e principalmente para as empresas. Visto que na maioria das vezes não há a real necessidade de adquirir uma maior quantidade de recursos. Sendo assim, o ideal seria obter a quantidade de recursos necessários para realizar as tarefas no tempo desejado. Para reduzir a complexidade de expansão dos recursos computacionais, uma abordagem utilizada é a virtualização. No conceito de virtualização. Desvincula-se o computador do hardware. Assim, flexibilizam-se as configurações dos computadores que passam a ser virtuais e não físicos. Computadores virtuais por não estarem atrelados ao hardware podem fornecer recursos sob demanda, ou seja, conforme as necessidades por mais recursos que surgirem, sem necessariamente ter que alterar as configurações de hardware fisicamente. De acordo com Golden e Scheffy (2008), o uso atual dos recursos de hardware está entre 10% a 15% dos recursos de que eles dispõem. Tem-se 85% ou 90% dos recursos de

14 hardware sendo subutilizados. Transformando computadores físicos em virtuais de modo que compartilhem dos recursos de hardware consegue-se: racionalizar a utilização dos recursos físicos disponíveis; reduzir a complexidade de manutenção; despesas com gerenciamento e energia para alimentação e resfriamento dos servidores ou computadores físicos; aumentar a segurança e controle, visto que os computadores passam a ser concentrados em um ambiente regido por severas políticas de controle. Virtualizar é preciso, mas não somente virtualizar, transformar computadores físicos em virtuais e agregá-los em um único servidor comum, pode ser representar um risco extremo, pois perde-se em diversos aspectos, como:: confiabilidade Se ocorrer alguma falha no servidor, todos os servidores virtuais sobre ele rodando ficarão indisponíveis até que o problema seja resolvido; estabilidade - Se todos os servidores virtuais utilizarem o máximo de recursos que lhes é disponibilizado, haverá períodos de lentidão, pois o servidor físico não possui capacidade para atender a demanda de todos os computadores virtuais simultaneamente; escalabilidade - Por se tratar de um único servidor, pode ser que ele não possua mais capacidade para expansão de recursos ou então os componentes necessários para essa expansão podem possuir uma relação custo/benefício muito alta. Custo muito elevado para o benefício ou benefício muito baixo para o investimento. Para que seja criado um ambiente de virtualização confiável, escalável e seguro, faz-se necessário a utilização do conceito de Cloud Computing, um ambiente que possibilite disponibilizar recursos computacionais de forma não centralizada sobre demanda. Os recursos de hardware devem estar distribuídos em diversos servidores, sendo assim, a estrutura criada torna-se confiável e tolerante a falhas. Se um ou mais servidores que compõem a nuvem de recursos sofrer alguma avaria, a rede como um todo não é afetada. Os sistemas que estão utilizando recursos da nuvem computacional continuam sem perceber que um ou mais servidores estão com problemas. E como a nuvem de recursos é constituída por diversos servidores, é possível realizar o balanceamento de carga entre os mesmos, evitando

15 sobrecargas em servidores específicos, o que poderia gerar períodos de instabilidade nos computadores virtuais que estão utilizando os recursos desses servidores. O modelo de Cloud Computing proporciona uma escalabilidade que não é encontrada em nenhum outro modelo, pois, quando se faz necessário aumentar os recursos de hardware, pode ser feito, sem a necessidade de parar os serviços, adicionando um ou mais servidores à rede que compõem a nuvem, no momento que esses entram na rede passam a prover os seus recursos para as aplicações da nuvem computacional. Como dito por Paul Maritz Chief Executive Officer (CEO) da VMware, no VMware Virtualization Forum realizado em 2010 - Cloud is about how you do computing, not where you do computing. Nuvem (computação nas nuvens) diz respeito em como você utiliza e disponibiliza os recursos computacionais e não onde eles estão alocados. 1.1 PROBLEMÁTICA A solução para otimização do o modelo físico computacional que hoje é utilizado pelos usuários finais e boa parte das empresas já existe, que é uma plataforma de fornecimento de infraestrutura de forma descentralizada como serviço (Infrastructure As A Service - IAAS). Com a utilização deste modo de disponibilização de recursos, é possível fornecer recursos de hardware sobre demanda. As respostas para a não adoção desse modelo de fornecimento de recursos computacionais são em suas maiorias desconexas com a realidade atual das ferramentas existentes, muitas pessoas (não somente leigos, mas pessoas ligadas à área de T.I.) fazem uso desses argumentos para rejeição do modelo de fornecimento de recursos computacionais sobre demanda: há uma preocupação com os recursos computacionais, imagina-se que os recursos estariam centralizados em um servidor comum (tipo de servidor que a maioria das empresas utilizam, não possuem nenhuma ou pouca tolerância à falha, e sua arquitetura acaba por sobrecarregar os processadores centrais, obrigando-os a realizar todo o gerenciamento dos recursos e interações com o mundo exterior), como consequência, temem que, se algo acontecer nesse

16 servidor, uma grande quantidade de computadores virtuais poderia ficar fora do ar; temem que uma nuvem computacional fornecendo recursos sob demanda não seja capaz de proporcionar todos os recursos que são necessários para a realização de suas tarefas; especulam que há um grande risco, visto que todos os seus dados se concentrariam em um mesmo ambiente, o que poderia facilitar para alguém mal intencionado apoderar-se de informações armazenadas em seus computadores virtuais; alto custo, imaginando que a compra de personal computer (PC) com um hardware que eles realmente não necessitam no momento da compra é mais vantajoso e simples do que adotar ao modelo de fornecimento de recursos de infraestrutura sob demanda. O que pode ser percebido é a falta de informações sobre o funcionamento de um modelo de fornecimento de infraestrutura sobre demanda de forma descentralizada (Infrastructure As A Service IAAS). O grande desafio é demonstrar o quão vantajoso é utilizar este modelo, em detrimento do atual modelo computacional e demonstrar que a plataforma Mainframe pode ser uma das melhores escolhas para a criação de uma nuvem para virtualização de computadores. 1.2 OBJETIVOS Objetivos a serem cumpridos com o desenvolvimento deste trabalho estão separados em duas categorias: Objetivos gerais a serem alcançados com a finalização do trabalho e os objetivos específicos que serão alcançados durante o desenvolvimento do trabalho.

17 1.2.1 Objetivos Gerais Os objetivos gerais são explicar o modo de utilização e de aplicação de Cloud Computing, demonstrando as vantagens e desvantagens da adoção desse conceito para a virtualização de computadores, utilizando o modelo IAAS para fornecimento de recursos de hardware sobre demanda. 1.2.2 Objetivos Específicos Os objetivos específicos a serem alcançados com o desenvolvimento do trabalho são: a) adquirir conhecimentos sobre virtualização em um ambiente que forneça recursos computacionais de forma descentralizada sobre demanda; b) conhecer as melhores plataformas de virtualização para aplicação de Cloud Computing; c) demonstrar que um conceito antigo pode ser utilizado através de um novo ponto de vista, para a criação de uma plataforma de Cloud Computing para virtualização de computadores (utilização de mainframes como base para a criação de uma nuvem provedora de recursos computacionais sob demanda). 1.3 JUSTIFICATIVA O modelo Cloud Computing representa a quebra de um paradigma, em que o usuário deixará de possuir computadores físicos, que, para possuírem alta capacidade de processamento, são em sua maioria estações de trabalho PC, sendo que os recursos por eles providos somente estão disponíveis no local onde o computador se encontra. Consomem uma quantidade considerável de energia por causa de seu hardware superior que acaba sendo

18 subutilizado e, se for necessário expandir, os recursos de hardware pode-se ter que trocar todo o conjunto por não existir mais capacidade de expansão ou não forem mais encontrados componentes para a expansão. A utilização do modelo de fornecimento de recursos de infraestrutura sob demanda é mais do que necessário, é essencial. O atual modelo é impraticável para as organizações e usuários. Segundo Greggo (2010), todos os anos são gastos bilhões de dólares, em hardware que não é realmente necessário, gerenciamento, manutenção e energia para alimentação e resfriamento. Esse modelo possui um custo de manutenção altíssimo, mas esse não é o ponto mais critico, temos o impacto ambiental, não somente com a fabricação de hardware, mas também com a grande quantidade de energia consumida por hardware ocioso e para a sua refrigeração levando em consideração que nem todos os países geram energia a partir de fontes renováveis. A adoção do modelo de Cloud Computing para virtualização de computadores já é realidade. Existem hardware e software capazes de proporcionar uma plataforma para virtualização de forma descentralizada, segura, confiável, estável e escalável. O Mainframe vem como um facilitador para a criação de um ambiente que possibilite o fornecimento de recursos computacionais sob demanda, não somente por possuir uma grande quantidade de recursos computacionais, mas pelos benefícios proporcionados pela sua arquitetura. O modo como ele gerencia e processa as informações se diferencia das demais arquiteturas computacionais existentes. Composto por diversas unidades especialistas em cargas de trabalho como Linux, Java, acesso a disco, criptografia e etc, interligadas via memória principal. O novo paradigma computacional é a disponibilização dos recursos necessários no momento e local onde forem requisitados. 1.4 ESTRUTURA DA MONOGRAFIA Estrutura que compõe a monografia: a) capítulo 1 Introdução: apresenta os assuntos que serão abordados no trabalho, problemática, objetivos e justificativa;

19 b) capítulo 2 Fundamentação teórica: fundamentar teoricamente os conceitos que serão abordados no trabalho; c) capítulo 3 Metodologia utilizada para o desenvolvimento do trabalho e elaboração da proposta Cloud Computing para virtualização de computadores. d) capítulo 4 Apresentação dos problemas encontrados para a aplicação do conceito de Cloud Computing; e) capítulo 5 Descrição das plataformas de Cloud Computing mais utilizadas e conhecidas, apresentação de recursos e limitações das plataformas e casos de aplicação bem sucedidos dessas plataformas, de modo que seja possível utilizar essas informações para comparação das plataformas; f) capítulo 6 apresentar as características que fazem da arquitetura mainframe ser tão superior as outras para aplicação de Cloud Computing. Demostrar a relação entre Mainframe e Cloud Computing. Propor a utilização da plataforma mainframe para o fornecimento de recursos computacionais sob demanda. g) capítulo 7 apresenta as conclusões obtidas com o desenvolvimento do trabalho, explicitado o as vantagens da utilização de recursos computacionais sob demanda. Sendo a plataforma Mainframe considerada uma das melhores plataformas no mercado para criação de um ambiente que possibilita a aplicação dos conceitos de Cloud Computing.

20 2 FUNDAMENTAÇÃO TEÓRICA O modo como são disponibilizados os recursos computacionais para o usuário pode ser visto através de três diferentes modelos: a) Físico: o computador e os recursos estão ao alcance do usuário; b) Virtual: computadores físicos são transformados em virtuais, sendo agregados em servidores comuns, compartilhando os recursos existentes; c) Modelo de fornecimento de recursos computacionais sob demanda Cloud Computing: disponibiliza os recursos através de uma nuvem computacional de recursos, provendo a quantidade necessária de recursos no momento e local em que forem requisitados. 2.1 MODELO COMPUTACIONAL DE RECURSOS FÍSICOS Conforme Machado e Maia (2004, p. 23): Um sistema computacional é um conjunto de circuitos eletrônicos interligados, formado por processadores, memórias, registradores, barramentos, monitores de vídeo, impressoras, mouse, discos magnéticos, além de outros dispositivos, físicos (hardware). Todos esses dispositivos manipulam dados na forma digital, o que proporciona uma maneira confiável de representação e transmissão de dados. Seguindo essa linha, Tanenbaum (2001) define o computador como um conjunto interligado de processadores, memórias e dispositivos de entrada e saída de informações. Esses componentes são interligados por um conjunto de fios paralelos que permitem a transmissão de dados, endereços e sinais de controles, chamado de barramento. De acordo com Machado e Maia (2004), o processador é definido como a unidade central de processamento (UCP), componente responsável por gerenciar as operações realizadas por cada unidade funcional. A principal atividade do processador é executar as instruções que estão contidas na memória principal, realizando operações básicas como: somar, subtrair, comparar e movimentar dados. O processador é composto por unidade de controle, unidade lógica e aritmética e registradores, como:

21 a) unidade de controle (UC): é o componente responsável por gerenciar as atividades de todos os componentes do computador, como gravação de dados em disco, ou busca de instruções na memória; b) unidade lógica e aritmética (ULA): é responsável por realizar operações aritméticas (somas e subtrações) e lógicas (testes e comparações); c) registradores: dispositivo que detém a função de armazenar informações temporariamente para as operações que estão sendo realizadas pelo processador. Segundo Monteiro (1996), a memória é o componente computacional que detém a função de armazenar as informações que são, foram ou serão utilizadas pelo sistema. Tanenbaum (2001) divide o componente de memória do computar em três tipos: a) memória principal: é o local onde são armazenados as instruções e dados que serão utilizados pelo processador. A memória é composta por células, sendo que cada célula possui um determinado número de bits. O bit é a unidade básica de memória, podendo assumir valor lógico 0 ou 1. Esse tipo de memória é classificada de acordo com sua volatilidade, que é a capacidade que a memória possui de armazenar dados sem uma fonte de energia ativa, memórias do tipo Random Access Memory (RAM) são voláteis, não preservam as informações nelas contidas sem uma fonte de energia ativa; b) memória cache: é um tipo de memória volátil de alta velocidade, com pouca capacidade de armazenamento. O tempo de acesso a um dado que esteja contido nessa memória é muito menor do que se ele estivesse contido na memória principal. A memória cache é utilizada para diminuir a diferença entre o tempo de acesso da memória principal e a velocidade com que o processador executa as instruções; c) memória secundária: é o meio permanente de armazenamento de informação, isto é, não volátil. Enquanto a memória principal e a memória cache necessitam de uma fonte de energia ativa para preservar as informações, a memória secundária não o faz necessário. O acesso às informações na memória secundária é lento se comparado ao acesso de informações na

22 memória principal. Porém, sua capacidade de armazenamento é maior e seu custo menor. O tempo de acesso na memória principal é na faixa dos nanosegundos, já o tempo de acesso na memória secundaria é da ordem de milissegundos. Segundo Machado e Maia (2004), os dispositivos de entrada e saída são utilizados para realizar a comunicação entre o sistema computacional e o mundo externo. Através desses dispositivos, é possível a interação entre usuário e máquina. Tanenbaum (2001) cita exemplo de dispositivos de entrada e saída como: impressora, mouse, monitor, teclado scanners e modems. São os dispositivos que fazem à entrada das informações no computador e a saída de informação para o usuário ou outro componente, seja apresentando ela visualmente em um monitor, tornando-a física em papel com uma impressora ou transformando-a em pulso elétrico e a transferindo para outro dispositivo, como em um modem. De acordo Murdocca e Heuring (2001), todos os componentes do computador precisam trocar informações entre si. O barramento é o caminho comum utilizado por todos os dispositivos para efetuar as trocas de informações. Morimoto (2006, apud COLOMBO, 2009, p. 14) define servidor como sendo um computador dedicado que permanece ligado vinte e quatro horas por dia, sete dias por semana, atendendo a solicitações de uma atividade especifica, como: impressão de arquivos ou armazenamento e recuperação de informações. Norton (1996) define mainframes como sendo o maior tipo de computadores em uso comum, destinando-se para o armazenamento e o processamento de imensas quantidades de informações simultaneamente. Os mainframes são ligados a terminais que não possuem capacidade de processamento ou de armazenamento, eles servem somente de interface para acessar recursos do mainframe, realizando as trocas de informação entre o usuário e os sistemas. Esse tipo de computadores é utilizado por sistemas que demandam de uma grande quantidade de recursos computacionais. Em contra ponto, de acordo com a IBM (2008), mainframe é considerado não somente um computador com grandes quantidades de recursos, mas uma arquitetura computacional, composta de diversos subsistemas, em que cada subsistema é especializado em uma determinada ação, removendo a carga de processamento trivial dos processadores centrais. Desse modo, os processadores principais ficam totalmente voltados às necessidades de processamento das aplicações.

23 Sendo que segundo IBM (2008), uma arquitetura pode ser definida como um conjunto de regras que são utilizadas como instruções para a criação de produtos. Em computação, arquitetura diz respeito ao modo de como a estrutura de um sistema é organizada. De acordo com Machado e Maia (2004), o sistema operacional é um conjunto de rotinas executadas pelo processador, semelhante aos programas dos usuários. Sua função é de gerenciar os componentes computacionais, que podem ser dividas em: a) prover facilidade de acesso aos recursos do sistema: um computador possui diversos dispositivos diferentes como: monitor, processador, memória, teclado, mouse, etc., mas, quando o usuário realiza uma atividade sobre o sistema operacional, ele não de preocupar-se com os detalhes envolvidos na comunicação dos mais diferentes dispositivos envolvidos. O sistema operacional serve de interface para o usuário e suas tarefas com o hardware, tornando, assim, as atividades do usuário mais eficientes, transparentes e menos suscetíveis a erro; b) compartilhamento de recursos de forma organizada e protegida: é de responsabilidade do sistema operacional de gerenciar o compartilhamento dos recursos de hardware de forma organizada, concorrente e protegida, entre todos os usuários do sistema e suas aplicações. Conforme Tanenbaum (2001, p. 315): Embora os computadores estejam cada vez mais velozes, as exigências sobre eles crescem no mínimo mais rápido do que a sua velocidade de operação. Os astrônomos querem simular toda a história do universo, desde o big-bang até o final dos tempos. A indústria farmacêutica adoraria poder criar remédios para certas doenças usando computadores, em vez de ser obrigada a sacrificar legiões de ratos no processo de desenvolvimento de novas drogas. Os projetistas de aviões poderiam desenhar aeronaves que consumissem muito menos combustíveis se os computadores pudessem estar presentes em todas as fases do projeto, sem que fosse necessária a construção de protótipos para serem testados em túneis de vento. Em suma, apesar da imensa potência computacional disponível, ela não é suficiente para muitas aplicações, especialmente na ciência, na engenharia e na indústria. Segundo Tanenbaum (2001), devido às dificuldades cada vez maiores de ampliar a capacidade dos processadores, os projetistas de computadores estão voltados a utilizar o conceito de computação paralela como forma de solucionar os problemas que envolvam uma potência computacional cada vez maior. Existem duas filosofias de computação paralela, que são:

24 a) sistema multiprocessador: todos os processadores desse sistema compartilham a mesma memória física (memória principal). Dessa maneira, dois processos podem se comunicar simplesmente lendo ou escrevendo na memória principal. Simplificando o desenvolvimento de software para esse modelo, já que os dados estarão na memória que é compartilhada por todos os processadores. Conforme a Figura 1 apresenta; Figura 1 Sistema multiprocessador. Fonte: Tanenbaum (2001, p. 315). b) sistema multicomputador: cada processador nesse modelo possui sua própria memória principal, acessível somente ao processador proprietário e nunca diretamente por outro processador do sistema. A troca de mensagens entre os processadores é feita através de redes de interconexões. Desse modo, se um processador necessitar de informações que não estejam na sua memória principal, ele tem que descobrir qual processador detém essa informação e, após descoberto, terá que enviar uma mensagem requisitando uma cópia da informação necessária, dificultando o desenvolvimento de software, pois existe uma preocupação muito grande sobre onde e quando os dados devem ser armazenados para diminuir a sobre carga gerada pela troca de mensagem entre os processadores, conforme é possível visualizar na Figura 2;

25 Figura 2 - Sistema multicomputador. Fonte: Tanenbaum (2001, p. 315). Machado e Maia (2004) chamam de sistemas fortemente acoplados os sistemas em que diversos processadores compartilham da mesma memória principal, sendo que todos os processadores são controlados por um único sistema operacional. Machado e Maia (2004) ainda classificam de sistemas fracamente acoplados os que possuem dois ou mais sistemas computacionais independentes, conectados por uma rede de comunicação, tendo cada um seu processador, memória principal, dispositivos de entrada e saída de informações e um sistema operacional. De acordo com Machado e Maia (2004), as principais vantagens para se utilizar sistemas com múltiplos processadores são: a) desempenho: sempre que novos processadores são adicionados ao sistema, melhor será o seu desempenho, mesmo que esse não cresça linearmente. O ganho com múltiplos processadores pode ser visto em dois níveis. Em primeiro nível, múltiplos processadores permitem a execução de diversas tarefas independentes simultaneamente. Servidores web e de banco de dados são um bom exemplo de ambientes que obtêm ganhos significativos com a utilização de múltiplos processadores, o aumento do número de processadores permite atender um número maior de requisições simultaneamente;

26 b) escalabilidade: é a capacidade de adicionar novos processadores ao hardware do sistema. Em ambientes que suportam apenas um processador, para aumentar a capacidade computacional, é necessário substituir o processador, por outro com maior poder de processamento. Com múltiplos processadores, é possível ampliar a capacidade computacional apenas adicionando mais processadores ao sistema. Com custo de aquisição inferior à aquisição de outro sistema, Com desempenho superior, desde que o sistema possua capacidade de expansão. c) relação custo/desempenho: por mais poderoso que seja um sistema com um único processador, ele apresenta limitações de desempenho inerentes a sua arquitetura, devido a limitações existentes na comunicação do processador com os demais componentes. Além disso, o custo, para se desenvolver um processador com o desempenho de um sistema com múltiplos processadores, é maior. A utilização de múltiplos processadores permite a criação de sistemas com processadores de baixo custo existentes no mercado, interligando-os através de interconexões. Dessa forma, obtém-se alto desempenho com custo aceitável. d) tolerância a falhas: é a capacidade de manter o sistema em operação mesmo em casos de falha de algum componente. Desse modo, se um processador falhar, os demais podem assumir sua função de maneira transparente para o usuário e suas aplicações. e) disponibilidade: é a medida em número de minutos por ano que o sistema permanece em funcionamento de forma ininterrupta. Alta disponibilidade só é possível em sistemas de maior tolerância a falhas. f) balanceamento de carga: é a distribuição do processamento entre os diversos componentes que formam a configuração do sistema, a partir da carga do processador, melhorando assim o desempenho do sistema como um todo. Machado e Maia (2004) destacam que, apesar das inúmeras vantagens dos sistemas com múltiplos processadores, existem desvantagens. Com a utilização de diversos processadores, novos problemas de comunicação e sincronização surgem, pois vários

27 processadores podem estar acessando ao mesmo endereço de memória simultaneamente. Além do problema de sincronização das informações, existe o problema de organizar os componentes da melhor forma possível, para estabelecer uma relação custo/beneficio aceitável. Dependendo do tipo de sistema, a tolerância a falhas é dependente do sistema operacional e não somente do hardware, sendo difícil de ser implementada. 2.1.1 Sistemas Fortemente Acoplados De acordo com Machado e Maia (2004, p.249-254): Os sistemas fortemente acoplados podem ser divididos em sistemas Symmetric Multiprocessors (SMP) e Non Uniform Memory Access (NUMA). SMP é o tipo de sistema que possui dois ou mais processadores, compartilhando um único espaço de endereçamento e gerenciados por apenas um sistema operacional. Uma das principais características dos sistemas SMP é que o acesso à memória principal pelos processadores é uniforme, independente da localização física do processador. Esse tipo de sistema é uma evolução dos sistemas com múltiplos processadores assimétricos. Na organização assimétrica ou mestre/escravo, somente um processador realizava as operações do sistema operacional. Se um processador escravo necessitar de uma operação do sistema operacional, ele requisita essa operação ao processador mestre. Com grande volume de requisições ao processador mestre, o sistema torna-se ineficiente, já que o processador escravo ficará esperando a resposta da requisição enviada ao processador mestre. Outra consequência dos sistemas assimétricos é que, se o processador mestre falhar, o sistema se torna incapaz de continuar o processamento. Nesse caso, o sistema deve eleger um novo processador mestre dentre os processadores escravos. Esse tipo de sistema não é eficaz devido à assimetria dos processadores, que não realizam as mesmas funções. Os sistemas SMP implementam a simetria dos processadores, ou seja, todos os processadores podem desempenhar as mesmas funções. Apenas algumas específicas funções como a inicialização do sistema ficam a cargo de um único processador. Esse tipo de sistema se torna mais eficaz por permitir um melhor balanceamento de carga entre os processadores.

28 Em contra ponto na definição de Machado e Maia (2004, p.255-258): Nos sistemas do tipo NUMA, o tempo de acesso à memória principal depende da localização física do processador. Nessa arquitetura, existem vários conjuntos de memória e processadores, sendo que todos os conjuntos são interligados, compartilhando o mesmo sistema operacional e referenciando o mesmo espaço de endereçamento, conforme Figura 3 demonstra. Figura 3 - Arquitetura NUMA. Fonte: Machado e Maia (2004). A diferença de um sistema de arquitetura NUMA para um SMP está no acesso à memória. Quando um processador acessa à memória local, ou seja, à memória pertencente ao seu conjunto, o tempo de acesso é menor do que o tempo de acesso à memória remota de outro conjunto. Para esse sistema manter um nível de desempenho satisfatório, deve-se evitar acessos à memória remota, priorizando os acessos locais. Nos sistemas de arquitetura NUMA, a memória principal é subdividida entre vários processadores, porém, compartilhando o mesmo espaço de endereçamento entre todos os processadores, assim sendo, o acesso a memoria (local ou remota) é transparente aos processadores, diferenciando apenas o tempo de acesso à memória de acordo com a localização física da memoria.

29 2.1.2 Sistemas Fracamente Acoplados Machado e Maia (2004) dividem os sistemas fracamente acoplados em: cluster, sistemas operacionais de rede e sistemas distribuídos. Cluster é o sistema formado por nós conectados através de uma rede de interconexão de alta velocidade dedicada. Cada nó da rede é denominado membro do cluster e possui seus próprios recursos computacionais. Cada membro do cluster possui seu próprio espaço de endereçamento e a comunicação entre os membros se dá por troca de mensagens, utilizando a rede de interconexão. Todos os membros do cluster utilizam um mesmo sistema operacional por questões de incompatibilidade na comunicação de diferentes sistemas. O acesso aos recursos fornecidos pelo cluster é feito atrás de outra rede de conexão. Quando o usuário acessa a um recurso do cluster, ele não tem o conhecimento da quantidade de membros e a identificação de cada um. Para o usuário, é como se ele estivesse acessando a um único sistema fortemente acoplado, característica conhecida como imagem única do sistema, de acordo com ilustração da Figura 4. Ao ocorrer uma falha em um dos membros do cluster, outro membro verifica o problema e assume as suas funções (failover). Após a resolução do problema, o estado inicial pode ser restaurado (failback). Para que tais procedimentos possam ser executados, as aplicações devem ser construídas para utilizar os recursos oferecidos pelo cluster. Assim sendo, se houver uma falha em um dos membros do cluster, outro membro assumirá suas funções de forma transparente, e para o usuário esses procedimentos serão imperceptíveis. Figura 4 Cluster. Fonte: Elaboração do autor, 2011.

30 Sistemas operacionais de rede (SOR) são os melhores exemplos de sistemas fracamente acoplados. Cada membro do sistema possui seus próprios recursos computacionais. Os nós são totalmente independentes dos demais que compõem o sistema, são conectados por uma rede de comunicação de dados formando uma rede de computadores. Cada nó é independente dos demais com seu próprio espaço de endereçamento e recursos computacionais. Os sistemas operacionais utilizados por cada nó não necessitam ser heterogêneos, bastando somente que os nós utilizem o mesmo protocolo de comunicação. O usuário tem acesso aos recursos de outros computadores que compõem o sistema especificando o nome ou endereço do nó onde o recurso é disponibilizado. Assim, cada estação pode compartilhar seus recursos com a rede. Se algum nó da rede tiver problemas, os demais componentes podem continuar o seu processamento, apenas não dispondo dos recursos oferecidos pelo nó problemático. Nessa arquitetura, não existe o conceito de imagem única de sistema, bem como a tolerância a falhas e a alta disponibilidade obtida nos sistemas distribuídos. A maioria dos sistemas SOR implementam o modelo cliente/servidor, criando uma rede com um ou mais servidores que fornecem serviços, respondendo às solicitações dos clientes. Exemplo desse modelo são redes locais com servidores de arquivos, servidores de impressão e servidores de correio eletrônico. Ainda segundo Brandt(2001), Sistemas operacionais de redes são um conjunto de módulos que ampliam os sistemas operacionais, complementando-os com funções básicas de uso geral, tornando transparente o uso de recursos compartilhados. Como exemplo, temos os sistemas Peer-To-Peer. São sistemas compostos por diferentes sistemas operacionais, todos provendo recursos à rede através de um protocolo comum. Todos os computadores nesse sistema são clientes e servidores simultaneamente, conforme Figura 5 apresenta. Figura 5 Sistema operacional de rede Peer-To-Peer. Fonte: Elaboração do autor 2011.

31 Sistema distribuído é um conjunto de sistemas autônomos, interconectados por uma rede de comunicação de modo que represente um sistema fortemente acoplado. Cada componente do sistema possui seus próprios recursos computacionais, os sistemas operacionais dos membros não necessitam ser homogêneos. A principal diferença entre o sistema distribuído e os outros tipos de sistemas fracamente acoplados é a existência de um relacionamento mais forte entre seus componentes. De modo que é um sistema fracamente acoplado no aspecto de hardware, mas fortemente acoplado no ponto do software. Para o usuário é como se fosse um único sistema sem redes de interconexão, simulando uma imagem única do sistema. Os componentes do sistema podem ser conectados através de uma rede local ou uma rede distribuída. O ponto é que a localização dos componentes não importa, bem como as características físicas da rede. A escalabilidade desse tipo de sistema é teoricamente ilimitada, porque basta acrescentar novos componentes à rede conforme houver necessidade. Os sistemas distribuídos permitem que a aplicação seja dividida em diferentes partes, que se comunicam através de linhas de comunicação, podendo cada parte ser executada em qualquer processador de qualquer sistema operacional. Para isso, o sistema tem que oferecer transparência e tolerância a falhas a fim de criar a ideia de imagem única. Conforme Coulouris et al., (2007), sistema distribuído é aquele em que os componentes de hardware ou software, localizados em computadores interligados por redes, comunicam-se e coordenam-se suas ações trocando mensagens entre si. Tanenbaum et al., (2008) exemplificam a aplicação do conceito de sistema distribuído como a distribuição da mesma aplicação web em diversos servidores. Os servidores web podem utilizar diferentes sistemas operacionais e distintas configurações de hardware, somente necessitando da utilização de um protocolo comum para todas as trocas de mensagens entre os diversos servidores. Todas as requisições dos clientes passam por um servidor chamado de Front-End que é responsável por eleger um dos servidores web existente para atender a requisição, conforme a Figura 6 demonstra. Assim, transparecendo para o cliente que existe uma imagem única de sistema. Se um servidor falhar, ele simplesmente é ignorado, e o serviço que é disponibilizado continua seu funcionamento como se nada tivesse ocorrido, apenas não dispondo mais dos recursos providos pelo servidor afetado.

32 Figura 6 Sistema Web Distribuído. Fonte: Tanenbaum et al., (2008). A principal diferença entre os sistemas distribuídos para os sistemas que aplicam o conceito de cluster, é que em sistemas distribuídos a o conceito de imagem única de sistema é implementado pelas aplicações, necessitando de um esforço maior das aplicações para o gerenciamento do sistema como um todo. Enquanto que nos sistemas que aplicam o conceito de cluster as aplicações não necessitam assumir tais funções, que passam a ser responsabilidade do sistema operacional, gerenciando toda a infraestrutura de modo a criar a imagem única de sistema. 2.2 MODELO COMPUTACIONAL DE RECURSOS VIRTUALIZADOS Segundo Golden e Sheffy (2008), virtualização é a abstração dos recursos físicos que são disponibilizados para as aplicações. Golden e Sheffy (2008) definem virtualização de sistema operacional como sendo o modo de simular um sistema operacional com os recursos de software que o sistema operacional base não possui e não necessita. Assim, a aplicação que irá utilizar o sistema operacional virtualizado terá a ilusão de um servidor dedicado, provendo os recursos computacionais do qual ela necessita (software), sem que o sistema operacional base tenha efetivamente esses recursos instalados, conforme Figura 7 ilustra.

33 Figura 7 - Virtualização de Sistema Operacional. Fonte: Archer et al., (2010). Utilizando esse modelo, pode-se agregar diferentes configurações do mesmo sistema operacional para atender às necessidades de cada aplicação de forma distinta, sem que uma configuração conflite com a outra, não afetando as configurações do sistema operacional base e racionalizando a utilização do hardware do servidor físico. Através da aplicação desse modelo, o sistema operacional emulado terá as mesmas configurações do sistema operacional base, número de versão e pacotes de atualização que a ele forem aplicados. Conforme Archer et al. (2010), esse modelo de virtualização referencia os arquivos do sistema operacional base na memória principal, otimizando a utilização de memória, pois todos os sistemas simulados estarão referenciando os mesmos arquivos de sistema operacional base. Em contrapartida, a virtualização de hardware é realizada por um software chamado hypervisor, este software emula recursos de hardware. Essa infraestrutura básica criada pelo hypervisor é chamada de Virtual Machine Monitor (VMM). Dessa forma, simulase um ambiente virtual de recursos de hardware que através do hypervisor utiliza os recursos de hardware. Assim, Consegue-se realizar o compartilhamento dos diversos recursos de hardware entre os mais diferentes sistemas operacionais simultaneamente. O VMM forma um tipo de pacote que pode ser movido para outro servidor físico com outro tipo de sistema operacional e quantidade de recursos de hardware diferentes do inicial. Esse modelo de virtualização suporta diferentes tipos de sistemas operacionais, pois ele cria um ambiente de recursos computacionais virtualizados para cada VMM, onde os sistemas operacionais podem ser instalados. O hypervisor é o meio pelo qual o VMM acessa os recursos de hardware, mediando as interações do VMM com o hardware. Deste modo, podem-se consolidar diferentes servidores físicos, com quantidades de recursos computacionais diferentes e sistemas operacionais distintos sobre o mesmo

34 servidor, desde que este possua capacidade computacional suficiente para comportar todos os servidores virtuais. O hypervisor pode ser utilizado de duas maneiras distintas conforme Brás (2008) demonstra: a) hosted hypervisor: o hypervisor encontra-se sobre o sistema operacional primário, que é responsável pela gerência dos recursos de hardware, esse modelo é utilizado quando se necessita de integração com o sistema operacional primário, utilizando-o para realizar a divisão de tempo (timesharing) dos recursos disponíveis. Porém, desse modo, ocorre perda de desempenho, porque, para utilizar um recurso de hardware o sistema operacional que está sobre VMM realiza a chamada da função do hardware para o VMM que repassa a chamada para o hypervisor que traduz essa chamada para o sistema operacional corrente, e o sistema operacional fornece o recurso solicitado. A redução de desempenho ocorre por causa das camadas de software a mais que são adicionadas entre as aplicações e o recurso de hardware, conforme Figura 8 apresenta. Figura 8 - Hosted hypervisor. Fonte: Archer et al. (2010). b) bare Metal hypervisor: o hypervisor se encontrado diretamente sobre o hardware, removendo a camada de software do sistema operacional primário. É uma abordagem diferenciada para a virtualização de hardware. Desse modo, são fornecidos recursos de hardware de forma mais eficiente. Assim, o responsável por realizar o timesharing entre todos os VMM é o próprio hypervisor, conforme Figura 9 demonstra.

35 Figura 9 Bare metal hypervisor. Fonte: Archer et al. (2010). Travassos (2010) define que, quando se trata de virtualização, temos ainda o conceito de hardware partitioning que é a técnica de virtualização mais antiga utilizada. No qual se dividem os recursos do servidor físico em diversas partições lógicas, de modo que possam ser utilizados de forma independente, com seu próprio sistema operacional e sem que uma partição lógica interfira nos recursos da outra. É como se o servidor fosse dividido em diversos servidores menores cada um com sua própria porção de recursos físicos independentes, conforme ilustração da Figura 10. Nesse modelo, não há uma compartilhamento dos recursos de hardware entre as partições lógicas. Se uma partição lógica está alocada com uma quantidade de recursos, mas não está os utilizando em sua totalidade, não será possível outra partição utilizar os recursos que estão sem uso. Figura 10 Hardware partitioning. Fonte: Milberg (2009).

36 2.3 MODELO COMPUTACIONAL DE RECURSOS SOB DEMANDA De acordo com Mell e Grance (2010), Cloud Computing pode ser definido como o fornecimento de recursos computacionais (computadores, recursos de rede, servidores de armazenamento de dados, servidores de banco de dados, aplicações e etc.) sob demanda de forma descentralizada, de modo que os recursos fornecidos podem ser rapidamente disponibilizados, utilizando o mínimo necessário de esforço para manutenção e provisionamento. Esse conceito é composto por cinco características essenciais, três modelos de fornecimento de recursos e quatro modelos de aplicação. 2.3.1 Características de Cloud Computing Mell e Grance (2010) definem as características essenciais de Cloud Computing como sendo: a) on-demand self-service: o usuário tem a capacidade de alterar as configurações dos recursos computacionais que a ele são disponibilizados ou obter novos recursos, conforme as necessidades surgirem, sem ter de interagir com outras pessoas; b) broad network access: os recursos disponibilizados são acessíveis através de redes de computadores sendo disponibilizados através de diferentes tipos de clientes. Como: thin clients, smartphones, laptops, PDAs; c) resource pooling: os recursos computacionais disponibilizados são agrupados para servir diversos consumidores simultaneamente, criando uma nuvem de recursos computacionais composta por recursos físicos e virtuais. Os recursos são dinamicamente atribuídos ou removidos de acordo com as necessidades do usuário. O consumidor acessa aos recursos que ele necessita de qualquer local a qualquer momento, sem ter conhecimento da localização física dos recursos que estão sendo utilizados; d) rapid elasticity: a capacidade computacional é elástica e de modo ágil pode ser alterada, em alguns casos esse aumento ou diminuição de recursos é feito

37 automaticamente, conforme surgirem as necessidades. Para o usuário os recursos disponíveis são aparentemente infinitos, pois ele obtém a quantidade necessária de recursos computacionais a qualquer momento; e) measured service: sistemas que proporcionam a utilização do conceito de Cloud Computing, devem implementar a otimização e controle dos recursos computacionais que os compõem. Desse modo, é possível monitorar a utilização dos recursos, controlar os recursos servidos ao usuário e disponibilizar recursos de forma transparente. 2.3.2 Modelos de fornecimento recursos na nuvem De acordo com Mell e Grance (2010), os modelos de fornecimento de recursos que aplicam os conceitos de Cloud Computing são: a) software As A Service (SAAS): é o fornecimento de um software como serviço, o software nesse modelo está sobre uma plataforma de Cloud Computing. A aplicação é acessível através de diversos dispositivos diferentes, fazendo uso de uma aplicação cliente, como por exemplo, um browser. O usuário do software não despende de tempo e de recursos com a infraestrutura necessária para o software funcionar, que são servidores, sistemas operacionais, recursos de rede para disponibilizar o software, servidores de armazenamento e pessoal necessário para gerenciar toda essa estrutura, assim, ficando responsável unicamente pela configuração de usuário e utilização do software; b) platform As A Service (PAAS): modelo no qual é fornecido uma plataforma ao cliente, o usuário utiliza ferramentas de desenvolvimento para linguagem de programação, banco de dados ou containers para as aplicações. Essas ferramentas são disponibilizadas sobre uma plataforma de Cloud Computing, sendo disponíveis de diferentes modos e locais. Nesse modelo, o cliente não despende tempo e recursos com a infraestrutura para as plataformas, como servidores, sistemas operacionais, recursos de redes para disponibilizar as plataformas e servidores de armazenamento, mas é responsável pelo desenvolvimento e manutenção de suas aplicações;

38 c) infrastructure As A Service (IAAS): é o modelo no qual se disponibiliza ao usuário recursos computacionais, como processamento, armazenamento, recursos de rede e outros recursos de infraestrutura computacional. Esses recursos estão disponíveis para a utilização de qualquer sistema operacional e qualquer aplicação desejada pelo usuário. O usuário nesse modelo não tem a responsabilidade de gerenciar os recursos físicos de infraestrutura, mas será encarregado da gerência do sistema operacional, gerência das aplicações que ele utiliza sobre o sistema, gerência dos dados armazenados no sistema e possivelmente controle de alguns recursos de rede como firewalls. 2.3.3 Modelos de aplicação do conceito de Cloud Computing Segundo Mell e Grance (2010), os modelos de aplicação de Cloud Computing podem ser divididos em private cloud, community cloud, public e por fim hybrid cloud. a) private cloud: toda a infraestrutura que compõem a nuvem de recursos computacionais bem como os custos com manutenção e gerenciamento desses recursos é suportado pela empresa detentora da nuvem. A utilização dos recursos da nuvem se dá somente para interesses da empresa, sem qualquer interação com outras nuvens externas, conforme Figura 11 ilustra. Os recursos da nuvem não são compartilhados com entidades externas a empresa. Figura 11 Private Cloud. Fonte: Ahronovitz et al. (2010).

39 b) community cloud: é aplicado com a união dos recursos de algumas organizações para atender as necessidades das mesmas. As despesas com hardware, gerência de infraestrutura, energia e resfriamento é compartilhado entre as entidades envolvidas no desenvolvimento e utilização desse tipo de nuvem, Conforme Figura 12 exemplifica. Figura 12 Community Cloud. Fonte: Ahronovitz et al. (2010). c) public cloud: a nuvem de recursos computacionais é criada e mantida por uma empresa ou conjunto de empresas para atender ao usuário final, empresas, organizações e qualquer outra entidade externa que necessite de recursos computacionais. Esse tipo de aplicação abrange o fornecimento de recursos computacionais, seguindo um ou mais modelos de serviço de Cloud Computing, SAAS, PAAS ou IAAS, exemplificado com a Figura 13. As entidades que fazem uso desse tipo de nuvem computacional somente pagam pelos recursos computacionais efetivamente utilizados, reduzindo assim os custos operacionais da área de tecnologia da informação.