Introdu¸c˜ao a Computa¸c˜ao em Nuvem
Francisco Jos´e da Silva e Silva Laborat´orio de Sistemas Distribu´ıdos (LSD)
Departamento de Inform´atica / UFMA http://www.lsd.deinf.ufma.br
1 Introdu¸c˜ao a Computa¸c˜ao em Nuvem
Definindo Computa¸c˜ao em Nuvem
“Muitas pessoas est˜ao pulando neste barco mas eu nunca ouvi duas
pessoas dizendo a mesma coisa sobre a computa¸c˜ao em nuvem.
Existem m´ultiplas defini¸c˜oes para o termo nuvem” (Andy Isherwood, vice-presidente HP, 2008)
A Met´afora da Nuvem
Figura: O ´ıcone da nuvem representa “tudo o demais” que faz a rede funcionar. ´
E uma esp´ecie de etc para o resto da solu¸c˜ao. Tipicamente significa uma ´area do diagrama ou solu¸c˜ao que ´e de competˆencia de outros
Computa¸c˜ao em Nuvem
Uma infraestrutura de computa¸c˜ao abstrata, altamente escal´avel, gerenciada por demanda capaz de hospedar aplica¸c˜oes de usu´arios finais e tarifada pelo consumo
Refere-se a grandes quantidades de recursos computacionais que residem em algum lugar (ao inv´es de em sua sala de computa¸c˜ao) aos quais podemos nos conectar e utiliz´a-los quando necess´ario
Um tipo de sistema paralelo e distribu´ıdo que consiste de uma cole¸c˜ao de computadores interconectados e virtualizados que s˜ao
dinamicamente fornecidos e apresentados como um ou mais recursos computacionais unificados atrav´es de acordos de presta¸c˜ao de servi¸cos estabelecidos atrav´es de negocia¸c˜ao entre o provedor do servi¸co e seus consumidores
Breve Hist´orico
1961, John McCarthy, Universidade de Stanford: o compartilhamento de tempo em computadores permitiria, no futuro, que o poder computacional e algumas aplica¸c˜oes espec´ıficas fossem vendidas atrav´es do modelo de neg´ocio dos servi¸cos de utilidade p´ublica (´agua, eletricidade e telefone);
Computa¸c˜ao utilit´aria: provisionamento de infra-estrutura de hardware e software de modo que o uso destes recursos seja vari´avel sob a forma de servi¸co e possa ser mensurado a fim de que o usu´ario somente pague por aquilo que foi utilizado.
Breve Hist´orico: Bolha dot.com
Breve Hist´orico
Situa¸c˜ao da Amazon em 2006:
Propriet´aria de muitos datacenters
Uso m´edio de 10% da sua capacidade computacional (v´ıtima da bolha dot.com)
Agosto de 2006: vers˜ao beta do EC2 (Elastic Compute Cloud)
Breve Hist´orico
Entre 2006 e 2010 a Amazon conquistou milhares de consumidores Google Apps - 2006
Google App Engine - 2009 Sun Clound - 2010
Caracter´ısticas Importantes
Recursos dispon´ıveis sob demanda
Qualidade de servi¸co QoS (Quality of Service) especificada por acordos de n´ıvel de servi¸co (SLA -Service Level Agreement) Tarifa¸c˜ao “pague pelo uso”
Acesso ub´ıquo: recursos na nuvem est˜ao dispon´ıveis na rede e podem ser acessados por meio de mecanismos padronizados com uso de diversos tipos de dispositivos, tais como thin clients, computadores pessoais, laptops, PDAs (Personal Digital Assitents), smartphones e tablet-PCs
Elasticidade: capacidade do servi¸co de aumentar ou diminuir a quantidade de recursos (por exemplo, CPU , armazenamento, largura de banda para comunica¸c˜ao) disponibilizados, de forma dinˆamica e autom´atica, de acordo com a necessidade de quem
Computa¸c˜ao em Grade vs Computa¸c˜ao em Nuvem
Computa¸c˜ao em Grade Computa¸c˜ao em Nuvem Conceito Computa¸c˜ao utilit´aria Computa¸c˜ao utilit´ariaBenef´ıcio Resolu¸c˜ao de
com-puta¸c˜oes Ambiente para aplica¸c˜oes de alto desem-penho centradas na rede
Dom´ınios M´ultiplos Unico´
Caracter´ıstica Hist´orica
N˜ao comercial, fi-nanciada por go-vernos
Comercial
Hosting
vs Computa¸c˜ao em Nuvem
Hosting Computa¸c˜ao em Nuvem
Pagamento mensal ou anual Pagamento pelo uso
Capacidade limitada Elasticidade
Confiabilidade limitada Confiabilidade embutida
Benef´ıcios para os Usu´arios
Despreocupa¸c˜ao com tarefas administrativas, como backup,
atualiza¸c˜ao das vers˜oes de software, patches para corre¸c˜ao de bugs ou falhas de seguran¸ca
Economia na aquisi¸c˜ao de infraestrutura: necess´ario apenas um computador modesto. Pode-se utilizar aplica¸c˜oes executadas
totalmente ou por m´odulos no ambiente de nuvem, como ´e o caso de software do tipo (Cloud Antivirus)
Amplo acesso aos servi¸cos contratados em qualquer lugar, a qualquer momento
Novas ferramentas e facilidades para realiza¸c˜ao de trabalho colaborativo
Benef´ıcios para os Desenvolvedores
Baixo capital de investimento inicial para disponibilizar um servi¸co novo na Internet
Foco na codifica¸c˜ao da aplica¸c˜ao e n˜ao procedimentos complexos para sua implanta¸c˜ao e gerenciamento, como configura¸c˜oes de ambiente servidor (Web, aplica¸c˜ao, banco de dados), instala¸c˜ao de dependˆencias, procedimentos para o balanceamento de carga e disponibilidade das aplica¸c˜oes.
Benef´ıcios para os Empresas
Time-to-market
Minimiza¸c˜ao dos gastos com recursos e tempo para gerenciamento da infra-estrutura de TI
As vers˜oes de software mais recentes e as ´ultimas tecnologias est˜ao sempre dispon´ıveis
Resultados de grandes tarefas batch podem ser obtidos mais rapidamente
Desafios para Ado¸c˜ao em Larga Escala
Conex˜ao com a Internet inadequada
Receios quanto a poss´ıvel indisponibilidade de servi¸cos em nuvem Falta de interoperabilidade entre solu¸c˜oes de diferentes provedores de servi¸cos em nuvem
Dificuldades em portar dados e aplica¸c˜oes (APIs propriet´arias) Incerteza relativas a seguran¸ca, como o acesso a dados armazenados Gargalo na transferˆencia de dados
Desafios da Migra¸c˜ao para Computa¸c˜ao em Nuvem
Migra¸c˜ao das aplica¸c˜oes existentes
Integra¸c˜ao com servi¸cos e dados existentes na organiza¸c˜ao Gerenciamento de risco
Uso de SLAs
Novas maneiras de calcular o custo total de propriedade Aceita¸c˜ao de mudan¸cas organizacionais
Manifesto por Nuvens Abertas (Cloud Manifesto)
Publicado na primavera de 2009
Preocupa-se com o potencial para lock-in da computa¸c˜ao em nuvem Estabelece um conjunto de princ´ıpios para garantir que os usu´arios ter˜ao liberdade de escolha, flexibilidade e abertura ao adotarem os benef´ıcios da computa¸c˜ao em nuvem
Manifesto por Nuvens Abertas: Princ´ıpios
Provedores devem trabalhar em conjunto para garantir que os desafios ara a ado¸c˜ao da computa¸c˜ao em nuvem (seguran¸ca, integra¸c˜ao, portabilidade, interoperabilidade, gerenciamento/governan¸ca,
monitoramento e medi¸c˜ao) sejam abordados atrav´es de colabora¸c˜oes abertas e uso apropriado de padr˜oes
Provedores n˜ao devem utilizar sua posi¸c˜ao de mercado para prender consumidores a plataformas particulares, limitando a capacidade de escolha por provedores
Provedores devem usar e adotar padr˜oes existentes sempre que apropriado
Quando novos padr˜oes (ou ajustes a padr˜oes existentes) forem necess´arios, devemos ser cuidadosos e pragm´aticos para evitar a cria¸c˜ao de muitos padr˜oes. Devemos garantir que os
Manifesto por Nuvens Abertas: Princ´ıpios
Qualquer esfor¸co comunit´ario relativo a abertura da computa¸c˜ao em nuvem deve ser guiado pelas necessidades dos usu´arios, e n˜ao por necessidades t´ecnicas dos provedores, e deve ser testado considerando requisitos de usu´arios reais
Organiza¸c˜oes para padroniza¸c˜ao da computa¸c˜ao em nuvem, grupos de apoio e comunidades devem trabalhar juntas e permanecerem coordenadas, garantido que os esfor¸cos n˜ao conflitam ou se sobreponham
Manifesto por Nuvens Abertas (Cloud Manifesto)
Mais de 400 empresas assinaram o manifesto Alguns destaques: Adobe AMD At&T Cisco Hewlett Packard IBM Red Hat Samsung SAP VMWare
Software como Servi¸co (SaaS)
Fornece aplica¸c˜oes atrav´es da Internet, desenvolvidas para serem acessadas por meio de um navegador Web e por muitos usu´arios simultaneamente
Usualmente gratuitas, pagas com propagandas
Para o usu´ario, reduz custos de aquisi¸c˜ao, instala¸c˜ao e gerenciamento Tipos:
Empresarial P´ublico em geral
Exemplos:
Salesforce Customer Relationships Management (CRM) GoogleApps, Gmail, GoogleDocs, Calendar
Plataforma como Servi¸co (PaaS)
Oferece ferramentas e APIs que facilitam a constru¸c˜ao de aplica¸c˜oes e a implanta¸c˜ao das mesmas em nuvem
Foco nas regras de neg´ocio de sua aplica¸c˜ao. Preocupa¸c˜oes como volume de tr´afego, balanceamento de carga, desempenho,
armazenamento de dados e escalabilidade s˜ao tratadas pela plataforma
Maior desvantagem atualmente ´e que as APIs e interfaces s˜ao propriet´arias, de modo que dificilmente ser´a poss´ıvel mover a aplica¸c˜ao de uma nuvem para outra
Exemplos:
Google App Engine
Infra-estrutura como Servi¸co (IaaS)
Oferece um pool de recursos computacionais virtualizados sob a forma de servi¸co
Elasticidade
Armazenamento de Dados como Servi¸co (DaaS)
Permite o armazenamento de dados em discos remotos e os acesse a qualquer hora de qualquer lugar com as mesmas fun¸c˜oes l´ogicas de um armazenamento local
Exemplos:
Amazon S3 (Simple Storage Service) Amazon EBS (Elastic Block Store) Amazon SimpleDB
Amazon RDS (Relational Database Service) Microsoft SQL Azure
Microsoft Windows Azure Storage Google AppEngine Storage
Comunica¸c˜ao como servi¸co (CaaS)
Oferece servi¸cos como voz sobre IP (Voip), v´ıdeo-chamadas, mensagens instantˆaneas, v´ıdeo-conferˆencias e PBX (Private Branch Exchange)
Exemplos:
Akamai Limelight
Tipos de Nuvem
P´ublica: servi¸cos s˜ao disponibilizados aos clientes atrav´es da Internet por provedores de servi¸co terceirizados
Privada: servi¸cos s˜ao gerenciados e providos dentro da organiza¸c˜ao. Desta forma, s˜ao menos suscept´ıveis a largura de banda da rede e menos expostos a problemas de seguran¸ca
Nuvem P´ublica vs Privada
Benef´ıcio P´ublica Privada
Ilus˜ao de recursos infinitos Sim Improv´avel
sob demanda
Pague pelo uso Sim N˜ao
Economia de escala Sim N˜ao
Melhor utiliza¸c˜ao de recursos Sim Sim
e opera¸c˜ao simplificada atrav´es de virtualiza¸c˜ao
Tecnologias Habilitadoras
Comuta¸c˜ao em grade
Gerenciamento em larga escala de recursos distribu´ıdos heterogˆeneos
Virtualiza¸c˜ao
SOA e Servi¸cos Web
Virtualiza¸c˜ao
Virtualiza¸c˜ao ´e um termo que se refere a abstra¸c˜ao de recursos de computadores
Uma m´aquina virtual (Virtual machine - VM), ´e uma implementa¸c˜ao
em software de uma m´aquina (computador) que executa programas
Topologia Grandes DataCenters (fat tree)
Topologia Grandes DataCenters (fat tree)
M´ultiplos caminhos para qualquer par de servidores Facilita o balanceamento de carga e tolerˆancia a falhas
N´os finais conectados aos ToRs podem ser qualquer servidor de aplica¸c˜ao (f´ısico ou virtual), inclusive os que oferecem servi¸cos para suportar o funcionamento da infraestrutura como, por exemplo, o Rack Manager e o sistema de armazenamento de dados
Provedores de Computa¸c˜ao em Nuvem
P´ublica Amazon Google Microsoft Privada IBM VMWare Sun/Oracle 3TeraAmazon Elastic Compute Cloud (EC2)
Disponibiliza um ambiente de computa¸c˜ao virtualizado, com interfaces servi¸cos Web para:
Configurar instˆancias de MVs com variadas op¸c˜oes de sistemas operacionais
Carregar as mesmas com um ambiente de aplica¸c˜ao customizado Gerenciar permiss˜oes de acesso a rede
Uso do EC2
Selecione uma imagem pr´e-configurada ou crie sua Amazon Machine Image (AMI) contendo suas aplica¸c˜oes, bibliotecas, dados e
configura¸c˜oes associadas
Configure as op¸c˜oes de seguran¸ca e rede para sua instˆancia EC2 Selecione as instˆancias desejadas e inicialize, encerre e monitore quantas instˆancias AMI desejar, utilizando as APIs baseadas em servi¸cos Web ou as ferramentas de gerenciamento disponibilizadas Determine se vocˆe deseja executar suas instˆancias em v´arias localiza¸c˜oes, usando IP est´atico e sistema de armazenamento de blocos
Pague somente pelos recursos que consumir, como horas de instˆancias ou transferˆencia de dados
Servi¸cos EC2
Elasticidade
Aumenta ou diminui da capacidade computacional em minutos Devido ao controle disponibilizado pelas APIs, aplica¸c˜oes podem automaticamente promover uma auto-escalabilidade de acordo com suas necessidades
Controle
Acesso root a cada instˆancia, permitindo a intera¸c˜ao com as mesmas utilizando-se as formas usuais utilizadas com qualquer m´aquina Permite a pausa, rein´ıcio e reinicializa¸c˜ao de qualquer instˆancia
Flexibilidade
Diversos tipos de instˆancias, sistemas operacionais e pacotes de software
Diversos Servi¸cos Web adicionais dispon´ıveis
Amazon Simple Storage Service (Amazon S3), Amazon Relational Database Service (Amazon RDS), Amazon SimpleDB and Amazon
Servi¸cos EC2
Confiabilidade
O compromisso SLA do Amazon EC2 ´e de 99,95% de confiabilidade
Seguran¸ca
Inclui interfaces para servi¸cos Web que permitem configurar firewall e controle de acesso a rede para e entre instˆancias
Amazon Virtual Private Cloud (Amazon VPC) permite isolar as instˆancias especificando-se uma faixa de IP a ser utilizada
Possibilidade de execu¸c˜ao de instˆancias dedicadas na VPC. Instˆancias dedicadas s˜ao executadas em um hardware dedicado a um ´unico cliente para aumentar o n´ıvel de isolamento
Funcionalidades EC2: Amazon Elastic Block Store
Disponibiliza armazenamento persistente para instˆancias EC2 Volumes EBS disponibilizam armazenamento fora da instˆancia que persiste independentemente da instˆancia
Volumes EBS s˜ao automaticamente replicados
Maior confiabilidade: habilidade de criar snapshots de volumes, que s˜ao automaticamente replicados em m´ultiplas Availability Zones
Funionalidades EC2: Diversas Localiza¸c˜oes
Pode-se executar instˆancias em diversas localiza¸c˜oes Compostas de Regions e Availability Zones
Regions consistem de uma ou mais Availability Zones, s˜ao geograficamente dispersas em diferentes ´areas ou pa´ıses
Availability Zones s˜ao localiza¸c˜oes distintas projetadas para n˜ao apresentarem falhas correlacionadas
Compromisso de disponibilidade de 99.95% para cada Region Disponibilidade atual de 7 regi˜oes: US East (Northern Virginia), US West (Oregon), US West (Northern California), EU (Ireland), Asia Pacific (Singapore), Asia Pacific (Tokyo) e AWS GovCloud
Funcionalidades EC2: Amazon Virtual Private Cloud
Permite a empresas:
Conectar suas infraestrutura existente a um conjunto de recursos computacionais AWS isolados atrav´es de uma conex˜ao Virtual Private Network (VPN)
Estender suas capacidades de gerenciamento de seguran¸ca existentes, como servi¸cos gerais de seguran¸ca, firewalls, sistemas de detec¸c˜ao de intrusos para incluir seus recursos AWS
Funcionalidades EC2: Amazon CloudWatch
Servi¸co Web que disponibiliza monitoramento de recursos e aplica¸c˜oes AWS
Monitora a utiliza¸c˜ao dos recursos, seu desempenho operacional, incluindo m´etricas como uso da CPU, leituras e escritas em disco, tr´afego de rede
Pode-se obter estat´ısticas, visualizar gr´aficos e definir alarmes relacionados `as m´etricas utilizadas
Funcionalidades EC2: Auto Escalabilidade
Permite escalar automaticamente sua capacidade EC2 de acordo com condi¸c˜oes que vocˆe define
Particularmente ´util para aplica¸c˜oes que experimentam varia¸c˜oes de uso de acordo com a hora, dia ou semana
Funcionalidades EC2: Elastic Load Balancing
Distribui¸c˜ao autom´atica de tr´afego de entrada de uma aplica¸c˜ao para m´ultiplas instˆancias EC2
Permite atingir um maior n´ıvel de tolerˆancia a falhas
Detec¸c˜ao autom´atica de instˆancias com problemas de um conjunto de instˆancias, realizando um re-roteamento autom´atico de tr´afego para instˆancias saud´aveis at´e que as defeituosas tenham sido restauradas
Funcionalidades EC2: High Performance Computing
(HPC) Clusters
Adequado para clientes que possuem cargas de trabalho
computacional complexas, como processamento paralelo acoplado, ou que possuam alica¸c˜oes sens´ıveis ao desempenho da rede
Instˆancias de aglomerados de computadores ou aglomerados de GPUs
foram projetadas para prover alto desempenho de rede e podem ser
programaticamente executadas em aglomerados, o que permite `as
aplica¸c˜oes obter o desempenho e baixa latˆencia de rede necess´arios a aplica¸c˜oes acopladas
Funcionalidades EC2: VM Import
Disponibiliza meios para a importa¸c˜ao de imagens de m´aquinas virtuais do ambiente computacional existente para instˆancias EC2 Permite aproveitar o investimento feito em virtualiza¸c˜ao por motivos de seguran¸ca, gerenciamento de configura¸c˜ao e problemas de
Google App Engine
Permite que vocˆe execute seus aplicativos da web na infraestrutura do Google
Vocˆe pode compartilhar seu aplicativo com o mundo ou limitar o acesso aos membros de sua organiza¸c˜ao
Ambientes de execu¸c˜ao:
Java: uso de tecnologias Java padr˜ao, incluindo JVM, servlets Java e a linguagem de programa¸c˜ao Java, ou qualquer outra linguagem que usa um interpretador ou compilador com base na JVM, como JavaScript ou Ruby
Python
In´ıcio gratuito: at´e 500 MB de armazenamento e CPU e largura de banda suficientes para suportar um aplicativo eficiente que ofere¸ca cerca de cinco milh˜oes de visualiza¸c˜oes de p´agina por mˆes
Recursos do Ambiente do Aplicativo
Servi¸co da web dinˆamico, com suporte completo a tecnologias da web comuns
Armazenamento persistente com consultas, classifica¸c˜ao e transa¸c˜oes Escalonamento e balanceamento de carga autom´aticos
APIs para autentica¸c˜ao de usu´arios e envio de e-mails usando Contas do Google
Um ambiente de desenvolvimento local com todos os recursos, simulando o Google App Engine em seu computador
Filas de tarefas para realizar trabalho fora do escopo de uma solicita¸c˜ao da web
Tarefas programadas para iniciar eventos em hor´arios espec´ıficos e em intervalos regulares
O Sandbox
aplicativos s˜ao executados em um ambiente seguro que fornece acesso limitado ao sistema operacional subjacente
isola o aplicativo em seu pr´oprio ambiente seguro e confi´avel, independentemente de hardware, sistema operacional e localiza¸c˜ao f´ısica do servidor da web
O Sandbox: Exemplos de Limita¸c˜oes
Um aplicativo pode acessar outros computadores na Internet somente por meio dos servi¸cos de busca de URL e de e-mail fornecidos. Outros computadores podem se conectar ao aplicativo somente fazendo solicita¸c˜oes HTTP (ou HTTPS) nas portas padr˜ao
Um aplicativo n˜ao pode gravar no sistema de arquivos. Um aplicativo pode ler arquivos, mas somente os enviados junto com o c´odigo do aplicativo. O aplicativo deve usar o armazenamento de dados, o memcache ou outros servi¸cos do Google App Engine para todos os dados que persistirem entre solicita¸c˜oes
O c´odigo do aplicativo ´e executado somente em resposta a uma solicita¸c˜ao da web, a uma tarefa na fila ou a um trabalho do cron, e deve retornar dados de resposta em 30 segundos,
O Java Runtime Environment
suporta o desenvolvimento de aplicativos em Java 5 ou 6 Um aplicativo pode usar qualquer bytecode JVM ou recurso da biblioteca, contanto que n˜ao exceda as restri¸c˜oes do sandbox
Para o armazenamento de dados, inclui implementa¸c˜oes das interfaces JDO (Objetos de dados Java) e JPA (API persistente Java)
O armazenamento de dados
N˜ao ´e um banco de dados relacional tradicional
Objetos de dados, ou ”entidades”, tˆem um tipo e um conjunto de propriedades
Consultas podem recuperar entidades de um tipo determinado, filtradas e classificadas segundo os valores das propriedades
Diversas opera¸c˜oes de armazenamento de dados podem ser realizadas em uma transa¸c˜ao
Controle de concorrˆencia otimista: uma atualiza¸c˜ao de entidade ocorre em uma transa¸c˜ao com um n´umero fixo de tentativas, caso outros processos estejam tentando atualizar a mesma entidade simultaneamente
Contas do Google
O aplicativo pode permitir que um usu´ario fa¸ca login com uma conta do Google e acesse o endere¸co de e-mail e o nome de exibi¸c˜ao associados `a conta
Economiza o esfor¸co de implementar um sistema de contas de usu´ario somente para um aplicativo espec´ıfico
Servi¸cos do Google App Engine
Busca de URL
Aplicativos podem acessar recursos da Internet, como servi¸cos da web ou outros dados
Aplicativos podem enviar mensagens de e-mail usando o servi¸co de e-mail
Memcache
Cache de mem´oria essencial de alto desempenho, que pode ser acessado por diversas instˆancias de seu aplicativo
Manipula¸c˜ao de imagens
API para redimensionar, cortar, girar e inverter imagens nos formatos JPEG e PNG
Tarefas agendadas e filas de tarefas
Realizar essas tarefas seguindo um cronograma configurado
Permite tamb´em realizar tarefas adicionadas a uma fila pelo pr´oprio aplicativo, como uma tarefa de segundo plano