MO809L Tópicos em Sistemas Distribuídos 1 semestre, 2013
Virtualização
Virtualização Threads e processos podem ser vistos como modo de fazer mais coisas ao mesmo tempo. Porções de programas que parecem ser executados simultaneamente. Computador monoprocessado: somente uma ilusão de paralelismo através de chaveamento rápido entre threads e processos. Capacidade de fingir que há mais CPUs pode ser estendida a outros tipos de recursos. Virtualização de recursos. Utilizada há muito tempo. Renovado interesso à medida que sistemas (distribuídos) tornaram-se mais comuns e complexos.
Virtualização Sistema de computadores: interface de programação para software de alto nível. Diferentes interfaces. Conjunto básico de instruções oferecido por uma CPU. Conjunto de interfaces de programação de middlewares. Virtualização: estender ou substituir uma interface de modo a imitar o comportamento de um outro sistema. Figura 45.
Virtualização Década de 70: permitir que softwares executassem em hardwares caros de mainframes. Software não incluía somente aplicações, mas também sistemas operacionais para os quais havia sido desenvolvido. Aplicada com sucesso em mainframes IBM 370 e sucessores. Ofereciam máquina virtual para diferentes SOs.
Virtualização Hardware mais barato. Computadores mais potentes. Menor quantidade de SOs. Virtualização deixava de ser importante. Final da década de 90, virtualização voltou a se tornar importante.
Virtualização Ajuda a reduzir a quantidade necessária de plataformas de hardware para atender softwares com necessidades diferentes. Virtualização deixa que cada aplicação execute em sua própria máquina virtual, possivelmente incluindo bibliotecas e o sistema operacional. Proporciona alto grau de portabilidade e flexibilidade. Por exemplo, gerenciamento mais fácil de replicação. Servidores podem ser copiados, incluindo ambiente, dinamicamente.
Virtualização - motivação Server Consolidation: consolidar cargas de trabalho de múltiplas máquinas subutilizadas em quantidade menor de máquinas para economizar hardware, gerência, administração. Application consolidation: aplicações legadas podem necessitar de máquinas virtualizadas para rodar em máquinas mais novas. Sandboxing: isolamento de ambientes para execução de aplicações não confiáveis. Múltiplos ambientes de execução: criar múltiplos ambientes independentes com garantia de recursos para prover QoS.
Virtualização - motivação Hardware virtual: drivers SCSI virtuais, adaptadores ethernet virtuais, switches e hubs virtuais... Executar múltiplos SOs simultaneamente. Depuração: pode permitir depuração de aplicações de usuário sem preocupação com problemas de interrupção de outras aplicações/serviços. Migração: facilita migração de software. Permite empacotar aplicações junto com ambiente de execução. Teste: facilita a produção de cenários de teste arbitrários que são difíceis de produzir na prática.
Abstração e virtualização
Abstração e virtualização Abstração com interfaces bem definidas ajuda no desenvolvimento e manutenção. Escondem detalhes de implementação de nível mais baixo. Ex.: SO abstrai sistema de arquivos e endereçamento. Disco aparece como um conjunto de arquivos de tamanhos variados, escondendo setores e trilhas. Programadores manipulam arquivos pelos nomes.
Abstração e virtualização Arquitetura do conjunto de instruções (ISA) é um bom exemplo das vantagens de interfaces bem definidas. Intel e AMD implementam em seus processadores um conjunto de instruções x86, enquanto softwares são desenvolvidos para compilar e executar nesse conjunto de instruções. Limitações no uso: por exemplo, binários compilados estão amarrados à arquitetura-alvo; impede interoperabilidade. Limitação importante em computadores heterogêneos conectado por rede. Mapeamento de interface e recursos visíveis para sistema real potencialmente diferente pode contornar esse problema. Sistema virtual apresentado como outro sistema, ou múltiplos sistemas.
Abstração e virtualização Ao contrário da abstração, a virtualização não necessariamente objetiva simplificar ou esconder detalhes. Ex.: virtualização de disco transforma um disco grande único em dois virtuais menores, cada um com seu conjunto de trilhas e setores. Software de virtualização utiliza a abstração de arquivos como um passo intermediário para o mapeamento entre disco real e virtual. Escrita no disco virtual é convertida em uma escrita de arquivo no disco real. Nível de detalhes fornecido na interface de disco virtual é o mesmo do disco real; não há abstração.
Abstração e virtualização James E. Smith, Ravi Nair. The Architecture of Virtual Machines. IEEE Computer.
Arquiteturas de máquinas virtuais
Arquiteturas de Máquinas Virtuais Para discutir VMs é preciso entender arquitetura de sistemas de forma geral. Arquitetura refere-se a uma especificação formal de interfaces do sistema, incluindo comportamento lógico dos recursos gerenciados através da interface.
Arquiteturas de Máquinas Virtuais Em geral, sistemas de computadores oferecem 4 tipos diferentes de interfaces em 4 níveis diferentes: Entre hardware e software: instruções de máquina que podem ser invocadas por qualquer pograma. Entre hardware e software: instruções de máquina que podem ser invocadas somente por programas privilegiados, como o sistema operacional. Chamadas de sistema: oferecidas por um sistema operacional. Chamadas de biblioteca: conjunto conhecido como interface de aplicação de programação (API). Em muitos casos, ocultam chamadas de sistema. Fig. 46.
Arquiteturas de Máquinas Virtuais
Arquiteturas de Máquinas Virtuais Instruction Set Architecture (ISA): Divisão entre hardware e software (3) e (4). ISA de usuário: aspectos visíveis às aplicações (4). ISA de sistema: visível pelo SO, gerenciar o hardware (3). ISA de sistema é um superconjunto da ISA do usuário.
Arquiteturas de Máquinas Virtuais Application Binary Interface (IBA): Fornece acesso aos recursos de hardware disponíveis através do ISA de usuário (4) e chamadas de sistema (2). Não inclui instruções do sistema; programas interagem com o hardware indiretamente invocando serviços do SO pela interface de chamadas de sistema. Chamadas de sistema: meio do SO realizar operações no hardware no lugar do programa de usuário, verificando autenticação / segurança.
Arquiteturas de Máquinas Virtuais Application Programming Interface (API): Fornece acesso aos recursos de hardware através do ISA de usuário (4) e chamadas de bibliotecas de alto nível (1). Chamadas de sistema geralmente são feitas através de bibliotecas. Usar uma API permite portabilidade através de recompilação em sistemas que suportem a mesma API.
Arquiteturas de Máquinas Virtuais Do ponto de vista do processo, uma máquina é um espaço lógico de memória atribuído ao processo em conjunto com instruções de nível de usuário e registradores que permitem a execução do código do processo. E/S é visível somente através do sistema operacional através de chamadas de sistema. ABI define uma máquina como vista pelos processos.
Arquiteturas de Máquinas Virtuais Do ponto de vista do SO e das aplicações, o sistema é um ambiente que roda sobre uma máquina subjacente e é capaz de suportar múltiplos processos simultaneamente. Processos compartilham sistema de arquivos e outros dispositivos de E/S. Sistema sobrevive às idas e vindas dos processos. Aloca memória real e recursos de E/S aos processos e controla acesso. Da perspectiva do sistema, o hardware define a máquina; o ISA fornece interface entre sistema e a máquina.
Arquiteturas de Máquinas Virtuais Da mesma forma que há pontos de vista de máquina para processos e para sistemas, também os há para máquinas virtuais. Uma máquina virtual de processo é uma plataforma que executa apenas um processo. Existe somente para suportar o processo. Criado quando o processo é criado. Termina quando processo termina. Uma máquina virtual de sistema fornece um ambiente de sistema completo e persistente que suporta um sistema operacional com seu conjunto de processos de usuário. Fornece ao sistema operacional convidado acesso a recursos de hardware virtuais (rede, E/S etc.)
Arquiteturas de Máquinas Virtuais Processo ou sistema rodando numa VM é o convidado, enquanto a plataforma que suporta a VM é o hospedeiro. Virtualização pode ocorrer de dois modos. Virtualização de processo, através de runtime software. Virtualiação de máquina, através de virtual machine monitor.
Arquiteturas de Máquinas Virtuais Virtualização pode ocorrer de dois modos. Sistema de execução com conjunto de instruções abstrato para executar aplicações. Instruções interpretadas (p. ex. Java). Emulação (Wine) necessário imitar comportamento de chamadas de sistema (não trivial). Chamada de máquina virtual de processo (Smith e Nair) / runtime software. Fornecer um sistema que seja uma camada que protege completamente o hardware original, mas que oferece como interface o conjunto de instruções completo do mesmo (ou de outro) hardware. Pode ser oferecida simultaneamente a programas diferentes. Vários sistemas operacionais executando independente e concorrentemente na mesma plataforma. Camada chamada de Virtual Machine Monitor VMM (VMWare, Xen). Fig. 47
Arquiteturas de Máquinas Virtuais
Arquiteturas de Máquinas Virtuais VM de processo: software de virtualização está no nível de ABI ou API. Emula instruções de nível de usuário e chamadas de sistema.
Arquiteturas de Máquinas Virtuais VM de sistema: software de virtualização está entre o hardware e o software convidado. Se mostra como ISA potencialmente diferente do hospedeiro. VMM muitas vezes tem o papel de fornecer recursos de hardware virtualizados ao invés de tradução de ISA
Arquiteturas de Máquinas Virtuais Importante para confiabilidade e segurança. Isolamento de uma aplicação completa e seu ambiente. Falha não afeta outras VMs. Melhor portabilidade. Desacopla hardware e software. Permite mover ambiente completo. Máquinas paralelas Permite consolidação de servidores. Maximizar utilização.
Alguns conceitos em máquinas virtuais
Máquinas Virtuais
Máquinas virtuais Simulação completa de um sistema em outra, instrução por instrução, é técnica conhecida há décadas. Por exemplo, aplicação de propósito específico para um computador X cujo hardware ainda está em desenvolvimento. Simulador para X (processador, memória, periféricos) que rode em máquina de propósito geral G. Programas que rodam em G poderão rodar em X com mesmos resultados (exceto para questões de tempo). Programas podem usar espaço de memória simulado, dispositivos simulados, executar instruções na máquina simulada. Simulador provê uma camada de software que filtra e protege os recursos da máquina G, evitando que sejam utilizados de forma indevida pelos programas da máquina X.
Máquinas virtuais Múltiplos programas: Múltiplas cópias do simulador. Simulador capaz de dividir o tempo entre aplicações. Ambos os casos resultam numa ilusão de múltiplas cópias da interface de hardware-software da máquina X em G.
Máquinas virtuais X e G arbitrários Software de simulação pode ser muito complexo e piorar desempenho de forma impraticável. Inicialmente mais utilizado para desenvolvimento de software. X e G idênticos Muitas cópias da interface hardware-software de G em G. Cada usuário com sua cópia privada da máquina G. Escolha do SO para rodar em sua máquina privada. Desenvolver/depurar seu próprio SO. Simuladores não interferem um no outro. Slowdown menor que para X diferente de G.
Máquinas virtuais Desenvolvimento de simuladores mais eficientes de múltiplas cópias de uma máquina sobre seu próprio hardware. Parte do software para máquinas simuladas roda sobre o hardware, sem interpretação de software. Chamados de Virtual Machine Systems. Máquinas simuladas chamadas de máquinas virtuais (VMs). Software simulador: virtual machine monitor (VMM).
Máquinas virtuais VMM transforma interface única da máquina na ilusão de muitas máquinas. Cada interface (máquina virtual) é uma réplica eficiente do sistema de computação original. Com todas as instruções de processador (privilegiadas e não privilegiadas). Com todos os recursos dos sistema (memória e E/S). Diversas máquinas virtuais em paralelo permitem diversos SOs (núcleos privilegiados) concorrentemente. Máquinas virtuais fornecem réplicas isoladas de um ambiente em um sistema de computação.
Máquinas virtuais Recursos extras (CPU, memória) são usados pelo VMM. Potencial queda na vazão do sistema. Manter estado do processador virtual. Integridade de todos os registradores visíveis, bits de estado e memória reservada (controle de interrupção) devem ser preservados. Captura e simulação de instruções privilegiadas. Suporte a paginação em máquinas virtuais. Faltas de página.
Máquinas virtuais Podem ser utilizadas para manter sistemas antigos enquanto novos sistemas são testados e programas são convertidos. Adicionar novos dispositivos sem alterar SO da máquina virtual, que já suporta o dispositivo virtualizado. Teste de softwares de rede. Confiabilidade de software através de isolamento. VMM é provavelmente correta: pequena e verificável. Segurança de dados.
Máquinas virtuais Uma variedade de mecanismos e técnicas para desacoplar a arquitetura e o comportamento de hardware e software percebido pelo usuário de sua implementação física. VMM: camada entre ambientes de software e o hardware físico que é programável, transparente ao software acima dela, e usa eficientemente o hardware abaixo dela. De forma similar, virtualização de rede e armazenamento também fornecem capacidade de multiplexar, em um único recurso físico, vários sistemas virtuais isolados uns dos outros.
Máquinas virtuais Contraste com a abordagem comum de incluir camadas mais abstratas sobre a camada de abstração mais alta existente. Na última década máquinas virtuais voltaram a receber atenção. Anteriormente aplicadas a plataformas de grande porte, agora atingem plataformas pessoais. Advento do VMWare (1998) e Virtual PC (1997).
Máquinas virtuais Atualmente servidores são muito mais baratos e poderosos que no passado. Mas: custo total da posse inclui manutenção, suporte e administração, assim como custos associados a brechas de segurança e falhas. Consolidação de servidores ainda é um motivador importante para uso de máquinas virtuais.
Máquinas virtuais Uma máquina virtual pode suportar processos individuais ou sistemas completos, dependendo do nível de abstração onde a virtualização ocorre. Algumas VMs suportam uso flexível de hardware e isolamento de software, outras traduzem conjuntos de instruções. Variedade de arquiteturas de máquinas virtuais. Máquinas virtuais de processo e de sistema.
Máquinas virtuais de processo
Máquinas virtuais de processo Fornecem ambiente virtual ABI ou API para aplicações de usuário. Sistemas multiprogramados: VM de processo mais comum (muitas vezes desconsiderada como VM). Muitos sistemas operacionais suportam múltiplos processos de usuário simultâneamente através de multiprogramação. Processo tem ilusão de ter uma máquina completa para si. Cada processo tem seu próprio espaço de endereçamento, registradores e estrutura de arquivos. SO divide hardware por tempo, gerenciando os recursos disponíveis. Consequentemente, SO fornece uma VM de processo replicada para cada aplicação executada concorrentemente.
Máquinas virtuais de processo Emuladores e tradutores binários dinâmicos: Suportar binários de programas compilados para outra arquitetura. Modo direto: interpretação (fetch, decode, emulate) das instruções do convidado. Pode ser relativamente lento, necessitando muitas instruções do hospedeiro para cada instrução interpretada. Melhoria de desempenho: tradutor binário dinâmico. Traduz instruções em blocos ao invés de uma a uma e salva em cache para reuso. Utilização repetida de conjunto de instruções amortiza overhead maior na tradução.
Máquinas virtuais de processo Same-ISA binary optimizer Mesmo conjunto de instruções do hospedeiro e convidado. Propósito: realizar otimização de código durante tradução. Utiliza informações coletadas durante a interpretação para otimizar o binário on-the-fly.
Máquinas virtuais de processo High-level-language VMs Portabilidade entre plataformas é desejável em VMs de processo. Esforço de desenvolvimento caso a caso. Portabilidade total entre plataformas pode ser alcançada desenvolvendo-se uma VM de processo como parte de um ambiente de desenvolvimento de aplicações em linguagem de alto nível. HLL VM resultante não corresponde diretamente a nenhuma plataforma, mas é desenhada para facilitar portabilidade.
Máquinas virtuais de processo High-level-language VMs Portabilidade entre plataformas é desejável em VMs de processo. Esforço de desenvolvimento caso a caso. Portabilidade total entre plataformas pode ser alcançada desenvolvendo-se uma VM de processo como parte de um ambiente de desenvolvimento de aplicações em linguagem de alto nível. HLL VM resultante não corresponde diretamente a nenhuma plataforma, mas é desenhada para facilitar portabilidade.
Máquinas virtuais de processo
Máquinas virtuais de processo Sistema convencional: Compilador gera código intermediário, parecido com código de máquina mas mais abstrato. Gerador de código utiliza código intermediário para gerar binário contendo código de máquina para ISA e SO específicos. Binário é distribuído e pode ser executado em plataformas que suportam tal combinação ISA/SO.
Máquinas virtuais de processo HLL VM: Compilador gera código de máquina abstrato em ISA virtual que especifica a interface da VM. Código virtual ISA, com informações de estruturas de dados associadas (metadados) é distribuído para execução em diferentes plataformas. Cada plataforma implementa uma VM capaz de carregar e executar o ISA virtual.
Máquinas virtuais de processo HLL VM: Java MS CLI Vantagem: fácil portar aplicação uma vez que a VM e bibliotecas estejam implementadas no hospedeiro. Implementação da VM demanda esforço, mas é mais simples que desenvolver compilador completo para cada plataforma e portar todas as aplicações através de recompilação.
Máquinas virtuais de sistema
Máquinas virtuais de sistema Fornece ambiente completo onde mais um sistema operacional e seus muitos processos podem existir. Utilização de VMM permite que única plataforma de hardware suporte múltiplos ambientes de sistema operacional simultaneamente. Característica importante: isolamento entre sistemas concorrentes no mesmo hardware. Sem interferência em caso de falha.
Máquinas virtuais de sistema VMM fornece, primordialmente, replicação de plataforma. Problema central: dividir recursos de hardware limitados entre múltiplos sistemas operacionais convidados. VMM tem acesso e gerencia todos os recursos de hardware. SO convidado e suas aplicações são gerenciadas sob controle (escondido) do VMM. SO realiza instrução privilegiada ou acesso a recurso: VMM intercepta a operação, realiza verificações, e a realiza em nome do SO convidado. SO convidado não é ciente dessa camada.
Máquinas virtuais de sistema Do ponto de vista do usuário, maioria dos sistemas de VM fornecem essencialmente a mesma funcionalidade mas diferem na forma de implementação. Sistema de VMs clássico VMM diretamente sobre o hardware. VMM roda no modo de privilégio mais alto. Sistemas convidados rodam com privilégios reduzidos de forma a permitir a interceptação pela VMM. Ações de SO convidado que normalmente seriam interação direta com o hardware são tratadas pela VMM.
Máquinas virtuais de sistema Hosted VMs: Software de virtualização roda sobre um sistema operacional hospedeiro. Vantagem: usuário instala VMM como um software típico. Software de virtualização pode se apoiar no sistema operacional hospedeiro para utilizar drivers de dispositivos e outros serviços de nível mais baixo. VMWare GSX Server
Máquinas virtuais de sistema Whole-system VMs: Hospedeiro e sistema convidado podem não utilizar mesmo ISA (Ex. Windows / Power-PC). Whole-system VMs virtualizam todo o software, incluindo SO e aplicações. ISA diferentes: necessário emular códigos das aplicações e do SO. Virtual PC.
Máquinas virtuais de sistema Multiprocessor virtualization Hospedeiro é máquina grande e multiprocessada. Particionar sistema em sistemas menores multiprocessados distribuindo os recursos de hardware Particionamento físico: recursos físicos separados para cada sistema virtualizado. Alto grau de isolamento. Particionamento lógico: hardware são multiplexados no tempo entre as diferentes partições. Melhorando utilização dos recursos. Perde-se alguns benefícios de isolamento de hardware.
Máquinas virtuais de sistema Codesigned VMs Implementam ISA novo e proprietário focado em melhoria de desempenho e eficiência energética. ISA do hospedeiro pode ser completamente novo ou extensão de ISA existente. Não possui aplicações nativas. VMM como parte da implementação de hardware com propósito único de emular ISA do software convidado. VMM reside em região de memória oculta dos softwares convencionais. Inclui tradutor binário que converte instruções do convidado em seqüências otimizadas de instruções do ISA do hospedeiro, usando um cache na região de memória oculta para reutilização. Transmeta Crusoe
Máquinas virtuais de sistema Transmeta Crusoe Hardware: VLIW. Convidado: Intel IA-32 Economia de energia.
Taxonomia
Computação em nuvem
Evolução Cluster Computing Um cluster (ou aglomerado) é um tipo de sistema de processamento paralelo ou distribuído, consistindo de uma coleção de computadores independentes interconectados e trabalhando cooperativamente como um único e integrado recurso computacional. Grid Computing Originalmente para colaborações científicas. Necessidade de compartilhamento de recursos coordenado e resolução de problemas em organizações virtuais dinâmicas e multi-institucionais. Computadores (PCs, estações de trabalho, clusters, supercomputadores, laptops, pdas, smartphones,...) Agrega: Software (por exemplo, uso sob demanda de aplicações caras). Bancos de dados (por exemplo, acesso transparente a bancos de dados de genomas/proteínas). Instrumentos especiais (microscópios, lasers, telescópios,...).
Evolução P2P Não necessita de um servidor sempre ligado. Sistemas finais comunicam-se diretamente. Peers intermitentemente conectados e mudam de endereço. Paradigma que pode ser utilizado para conectar e gerenciar, por exemplo, uma grade computacional. Processos que constituem o sistema são todos iguais. Funções necessárias são executadas por todos. Interação simétrica: cliente e servidor ao mesmo tempo. Organização em rede de sobreposição.
Evolução Utility Computing Computação como mercadoria / serviço. Pagamento e/ou troca. Associado a grades computacionais (utility grids). Diversos modelos de negócio / comercialização. Cloud Computing Traz uma combinação de utility computing com virtualização. Avanço das redes e conexão à internet mais barata e mais rápida permitiu que se tornasse muito mais popular que as grades computacionais pagas.
Evolução GridEcon (2007). Grades tiveram sucesso em alguns pontos, mas não tanto quanto esperado. Usada para consolidar recursos computacionais e economizar. Por exemplo, combinar poder computacional distribuído para otimizar cálculos e diminuir tempo de desenvolvimento de produtos.
Evolução Faltava acesso a poder computacional sob demanda, facilidade de acesso, modelo de pagamento pelo uso. Poder computacional sob demanda: permite que empresas atendam demanda inesperada ou planejada de forma economicamente eficiente. Simplicidade de acesso permite usuários utilizar recursos sem muito esforço ou conhecimento técnico. Pagamento pelo uso permite minimização de investimento, permitindo empresas menores competirem com maiores.
Evolução Necessário: Service oriented computing encapsulamento e facilidade de uso. Virtualização compartilhamento transparente e consolidação de servidores. Network computing acesso uniforme à Internet. Faltavam: serviços economicamente habilitados Permitiriam avaliação de risco e
Evolução
Evolução Provedor: fornece ferramentas para a comercialização de recursos. Ajuda a contornar problemas da grade, como risco na utilização de recursos externos, falta de confiança, risco de compromisso de compra, incerteza no planejamento de capacidade. Garantias contra perda financeira na indisponibilidade ou falha de recursos.
Evolução
Cloud Computing Acesso a computadores e suas funcionalidades via Internet ou rede local. Requisição de serviço via conjunto de serviços que gerenciam um conjunto de recursos computacionais. Usuário não precisa saber onde os recursos estão, ter conhecimento sobre a tecnologia, ou ter controle sobre a infra-estrutura de computação. Tipicamente envolve a provisão de recursos dinamicamente escaláveis e frequentemente virtualizados como serviço sobre a Internet.
Cloud Computing - características Recursos sob-demanda, self-service. Acesso ubíquo pela rede. Independente de localização. Elasticidade rápida (escalabilidade). Pagamento pelo uso.
Cloud Computing motivação 1.8 zettabytes (10^21 bytes giga, tera, peta, exa, zetta) de dados criados e replicados em 2011. Se cada um fosse armazenar seus dados em dispositivos pessoais: 57.5 bilhões de ipads de 32 GB ~ $34.4 trilhões PIB dos EUA, Japão, China, Alemanha, França, Reino Unido e Itália somados. Compartilhamento dependeria fortemente de uma rede P2P. 48 horas de vídeo enviados ao youtube por minuto. 80.5 exabytes por mês de tráfego de dados na internet (~28 milhões de DVDs por hora). Relatório de usuários (AFCOM): economia de 21% ao mover aplicações para a nuvem.
Cloud Computing motivos para adoção 61% Escalabilidade 54% Economia 53% Facilidade de gerência 49% Redundância 49% Maior flexibilidade 48% Elasticidade 34% Melhoria na utilização de hardware. 32% Segurança 6% Outros Cloud Computing Outlook 2011 http://www.cloud.com/cloud-computing-outlook/survey.pdf
Cloud Computing - implementação Datacenters ocupam até 100 mil metros quadrados (17 campos de futebol). 5.75 milhões de novos servidores instalados por ano para atender aumento da demanda de serviços online. Refrigeração consome até 30% da energia em um datacenter. 1 datacenter ~ energia usada por 25.000 casas. IT: responsável por 2% das emissões globais de carbono. EUA: 14%, Datacenters, 37% Telecom, 50% dispositivos de usuário. Datacenters: 0.28% do total de energia consumida.
Cloud Computing - utilização 74% das companhias utilizam alguma serviço de nuvem (março-abril 2011). 84% dos gerentes de TI dizem que a empresa usa pelo menos uma aplicação de nuvem (maio 2011). 79% dos diretores de TI citaram que executam alguma aplicação em produção na nuvem.
Cloud Computing - utilização 64% dos diretores de TI antecipam que precisarão de novas ferramentas de gerência ao mover mais sistemas para a nuvem. Estratégia de uso hoje: Nuvem privada: 24% Nuvem pública: 37% Nuvem híbrida: 39% Estratégia de uso no futuro: 19%, 24%, 57%.
Cloud Computing prós e contras http://www.mariaspinola.com/whitepapers/an_essential_guide_to_possibilities_and_risks_of_cloud_computing- A_Pragmatic_Effective_and_Hype_Free_Approach_For_Strategic_Enterprise_Decision_Making.pdf
Cloud Computing - atributos Substrato / infra-estrutura são abstraídos e oferecidos como serviço. Construída sobre infra-estrutura escalável e flexível. Oferece provisão de serviço sob demanda e garantias (?) de qualidade de serviço. Pagamento pelo uso de recursos computacionais sem a necessidade de compromisso prévio por parte dos usuários. Compartilhada e multi-tenant (1 software vários usuários).
Cloud Computing Coleção de computadores virtualizados interconectados e dinamicamente provisionados que se apresentam como um ou mais recursos unificados. Usa-se qualquer dispositivo computacional para acessar a nuvem. Em geral, acordos de nível de serviço (SLA service level agreements) são utilizados para estabelecer os termos de serviço.
Cloud Computing Cloud computing is a model for enabling convenient, ondemand network access to a shared pool of configurable computing resources (e.g., networks, servers, storage, applications, and services) that can be rapidly provisioned and released with minimal management effort or service provider interaction. This cloud model promotes availability. (NIST)
Cloud Computing Diferente de outros termos, não é uma nova tecnologia. Novo modelo de operação conjunta de tecnologias existentes. Tecnologias existentes aplicadas à negócio. Virtualização. Grid computing. Utility computing. Preço baseado em utilidade. Computação autonômica / auto-gerência. Elasticidade. Cloud computing alavanca tecnologias para promover o encontro de requisitos tecnológicos econômicos da atual demanda por tecnologia da informação.
Cloud Computing Modelos de camadas Qi Zhang; Lu Cheng; Raouf Boutaba. Cloud computing: state of the art and research challenges, JISA, 2010.
Cloud Computing Camadas Camada de hardware Gerência dos recursos físicos da nuvem. Servidores, roteadores, switches, energia, refrigeração. Tipicamente implementada em um datacenter, com milhares de servidores organizados em racks e interconectados por roteadores e switches. Problemas: Configuração de hardware, tolerância a falhas, gerência de tráfego, energia, gerência de refrigeração.
Cloud Computing Camadas Camada de infra-estrutura (ou camada de virtualização) Cria um conjunto de recursos computacionais e de armazenamento através do particionamento dos recursos físicos utilizando tecnologias de virtualização (Xen, KVM, VMWare...). Características, como atribuição dinâmica de recursos, podem ser realizadas graças à virtualização.
Cloud Computing Camadas Camada de plataforma: Construída sobre a camada de infra-estrutura. Sistema operacional e frameworks de aplicação. Minimizar o ônus de disponibilizar aplicações diretamente sobre VMs. Google App Engine opera no nível de plataforma para prover APIs que suportam implementação de armazenamento / bancos de dados e lógica de aplicações web típicas.
Cloud Computing Camadas Camada de aplicação: Nível mais alto da hierarquia. Aplicações em nuvem. Mais modular que aplicações tradicionais, permitindo que camadas evoluam independentemente (similar ao modelo ISO/OSI em redes).