Computação em Nuvem (Cloud Computing) Prof. Ricardo J. Rabelo UFSC Universidade Federal de Santa Catarina DAS Departamento de Automação e Sistemas
Introdução Os modelos ASP e SaaS têm sido hoje usados não apenas como uma alternativa puramente de redução de custos e complexidades gerais de gestão da parte de TI,...... mas como uma estratégia de empresa para se atingir três objetivos, por vezes complementares:
Introdução Terceirização de atividades que não tenham a ver com o seu core business. Muitas empresas começam a terceirizar o setor de TI em si ou alguns dos seus processos, delegando-os a empresas especializadas, prestadores de serviços. Economia na aquisição de computadores e uso mais racional dos recursos já disponíveis. Melhoria de desempenho computacional para aplicações que demandam muita capacidade de processamento.
Introdução Este é o contexto geral dentro do qual surge a Computação em Nuvem Cloud Computing.
Introdução Cloud Computing é a continuação e convergência de uma série de tecnologias antecessoras que visavam conectar diferentes máquinas e nisso melhorar o aproveitamento do processamento e as possibilidades advindas dessa comunicação.
Introdução Cloud tem a premissa de tentar resolver três problemas antigos : Limitação de hardware Ilusão de recursos computacionais infinitos e disponíveis sob demanda. Eliminação de um investimento inicial em TI (e pessoas) e difícil (e custosa) escalabilidade da infraestrutura de uma empresa permite uma infraestrutura elástica, racionalizando investimentos, i.e. infraestrutura geral pode começar ou ser pequena e crescer sob demanda. Subutilização de software possibilidade de pagar apenas pelo que de fato se utiliza.
Computação em Nuvem Visão representada pela Computação em Nuvem: Acesso à informação e recursos: AAAA Anytime (from) Anywhere (via) Any (computing [lightweighted] environment) (by) Anybody (human or systems)
Tecnologias e Conceitos Predecessores e Complementares Grid Computing Virtualização Clustering Utility Computing Web 2.0 SaaS (já apresentado) e XaaS
Grid Computing Meados de 90 Analogia com sistemas de energia elétrica. A grade de energia elétrica disponibiliza energia elétrica (i.e. recursos computacionais) sob demanda e esconde do usuário detalhes como a origem da energia e a complexidade da malha de transmissão e distribuição.
Grid Computing Uma grade computacional, portanto, seria uma rede na qual o indivíduo se conecta para obter poder computacional (processamento/cpu, armazenamento, software, periféricos, etc) de forma análoga à grade de energia elétrica, provendo acesso consistente, persistente e transparente aos recursos independente da origem.
Grid Computing
Grid Computing O ponto chave é compartilhamento de recursos computacionais das máquinas.
Grid Computing Exige um middleware próprio, e uma parte deste é instalado (e configurado) em cada computador que se deseja colocar na grade.
Conceito derivado da Computação em Grade. Virtualização Tem o mesmo objetivo, mas na prática acaba por ter um foco mais voltado a uma empresa ou corporação. O conceito original de Grid (e depois suas plataformas de suporte) foi concebido para ser uma grade aberta, sem restrições, o que não era viável e nem necessário nas empresas.
Virtualização Cria uma máquina virtual, que é um ambiente operacional completo que se comporta como se fosse um único computador, independente de estar fisicamente no mesmo hardware do servidor que o hospeda. Desta forma, o usuário tem o poder de processamento local aumentado, de forma transparente, sem necessidade de comprar mais hardware.
Virtualização
Clustering Uma variação do grid computing é a técnica de clustering. Ela consiste da união de vários computadores, tipicamente num mesmo ambiente computacional / espaço geográfico, para computação de alto desempenho, ou seja, para juntar o poder de processamento de várias CPUs como se fosse um único computador.
Clustering
Utility Computing Conceito oriundo da forma tradicional de geração de energia elétrica, onde a empresa consumidora de energia (cliente de software e/ou hardware) era obrigada a manter usinas particulares (computadores, servidores, etc.) para o funcionamento de suas máquinas (processos da empresa). Posteriormente, a geração de energia deixou de ser uma função da empresa e se transformou numa utility, provida por uma empresa prestadora de serviço público ou privada.
Utility Computing Parte da ideia de que a energia (recursos computacionais) está disponível (sempre ou momentaneamente, total ou parcialmente) em qualquer lugar (como a energia elétrica) e basta que se plugue na rede para ter acesso aos recursos, pagando pelo uso e não mais uma taxa fixa. Pay Per Use
Web 2.0 Utilizado para descrever a segunda geração da World Wide Web, tendência que reforça o conceito de troca de informações e colaboração dos internautas com sites e serviços virtuais. Embora o termo tenha uma conotação de uma nova versão para a Web, ela se refere a uma mudança na forma como ela é encarada por usuários e desenvolvedores. Neste, o ambiente de interação e colaboração são largamente usados nas empresas para acesso e compartilhamento de informação, conhecimento, ferramentas, etc., através de ambientes apropriados e simples de usar.
Web 2.0
XaaS São modelos e arquiteturas de comunicação computacional que surgiram visando a facilitação, flexibilização e aumento das potencialidades de um determinado ambiente. O termo de refere a disponibilização de serviços quaisquer ( X -as-a-service) através da Internet, que são hospedados remotamente e podem ser acessados de qualquer lugar. Esses serviços são de modo geral gerenciados por terceiros, e funcionam de forma desacoplada. Cabe ao usuário apenas utilizá-los quando desejar.
XaaS O termo é inicializado por X pelo fato de diferentes aspectos poderem ser disponibilizados como serviços.
XaaS SaaS: Software-as-a-Service HaaS: Hardware-as-a-Service PaaS: Platform-as-a-Service IaaS: Infrastructure-as-a-Service Outras variações
Software as a Service (SaaS) Usuário tem acesso a aplicações ou serviços que rodam numa infraestrutura cloud (ex. Google Docs, web services diversos). XaaS Plataform as a Service (PaaS) Usuário pode colocar programas criados ou adquiridos por ele numa cloud usando linguagens de programação e ferramentas disponibilizadas pelo provedor de cloud (ex. Windows Azure da Microsoft) Infrastructure as a Service (IaaS) Usuário tem acesso a recursos computacionais fundamentais, como armazenamento e processamento, e pode rodar um software seu, que pode ser tanto uma aplicação qualquer quanto um sistema operacional. (ex. Elastic Compute Cloud (EC2) da Amazon).
Computação em Nuvem Cloud Computing é uma modelo que permite acesso via rede, de forma transparente e sob demanda, de um conjunto compartilhado de recursos de computação, configurável (por exemplo, redes, servidores, armazenamento, aplicações e serviços), que podem ter rápida provisão e lançamento com um mínimo de esforço ou interação com o provedor do serviço. NIST (National Institute of Standards and Technology)
Computação em Nuvem: características essenciais Acesso sob demanda e de acordo com a necessidade do usuário, podendo solicitar mais recursos computacionais, armazenamento, etc., sem se ater a qualquer aspecto de software, rede ou hardware que o provedor forneça. Acesso pela Internet, a partir de diversos dispositivos computacionais. Rápida elasticidade: de acordo com a demanda, a capacidade pode ser rapidamente aumentada (scale up) ou diminuída (scale down), de forma que o usuário tem a sensação de ter recursos infinitos a qualquer hora, por vezes sem custo adicional. A provisão de recursos disponibilizados tem certa independência, pois o usuário não sabe a localização exata deles, mas pode ter a possibilidade de indicar uma região com um estado ou país para a obtenção e armazenamento de seus dados e aplicativos. Diversos modelos de negócio podem ser aplicados na nuvem.
Tipos de Cloud Cloud Pública A infraestrutura cloud é disponibilizada para o público geral e pertence a uma organização que vende os serviços de cloud. É um tipo que tem popularizado o cloud, principalmente pelas grandes empresas como Google, Amazon e Microsoft. Cloud Privada Ocorre quando a infraestrutura cloud opera somente para uma organização, sendo gerenciada por esta ou uma empresa terceira. Para empresas, é necessário avaliar economicamente se é uma boa alternativa mudar para uma cloud pública se a diminuição de custos com manutenção e de infraestrutura for maior que a contratação dos serviços sob demanda.
Tipos de Cloud Cloud Comunitária Ocorre quando a infraestrutura é dividida por várias organizações que partilham alguns requisitos como de segurança, ou suas políticas e considerações de cumprimento dos serviços, entre outros. Cloud Híbrida A mesma infraestrutura é composta por 2 ou mais modelos de aplicação de cloud que é visto como uma única entidade com portabilidade de dados e aplicações entre os modelos. Pode-se, por exemplo, ampliar os recursos de uma cloud privada disponibilizando parte de seus recursos numa cloud pública.
Tipos de Cloud
Tecnologias envolvidas e Arquitetura macro do Cloud
Visão Geral das Tecnologias & Modelos
Alguns Produtos
Google App Engine É um pacote de serviços que o Google oferece que contém aplicativos de edição de texto, planilhas e apresentações (Google Docs), serviço de agenda (Google Agenda), comunicador instantâneo integrado (Google Talk), e-mail com o domínio da empresa, entre outros. Todos esses serviços são processados pelo Google e o cliente só precisa criar as contas do usuário. É altamente conveniente no sentido pois por sua simplicidade tem grande escalabilidade. Porém é pouco flexível. Utiliza o modelo SaaS.
Amazon EC2 e S3 Nasceu da necessidade de suportar a grande demanda no período do Natal, sendo que sua grande infraestrutura ficava ociosa durante a maior parte do ano. Apresenta duas soluções o Simple Storage Solution (S3), para armazenamento de dados, e Elastic Compute Cloud (EC2), para uso de máquinas virtuais. O EC2 se aproxima muito de um hardware físico sendo possível o controle de pilhas de software próximas ao kernel. Isso a torna muito flexível ao que o usuário quer, mas nisso tem intrinsicamente o problema de conseguir escalabilidade para um nível tão baixo de virtualização. Utiliza assim o modelo IaaS.
Microsoft Azure É escrita utilizando bibliotecas.net e compiladas com CRL (Common Language Runtime) o que a torna independente do ambiente. Como é comum em pacotes da Microsoft, apresenta linguagem proprietária e APIs de desenvolvimento rápida que serve para propósito geral mas não pode controlar o sistema operacional ou algo em tempo de execução. É um modelo intermediário na razão entre flexibilidade e conveniência. Utiliza PaaS.
Considerações Finais
O modelo de cloud prevê muitas vantagens,...... mas tem vários aspectos que devem ser ponderados e observados para a sua adoção nas empresas.
Disponibilidade de um serviço Já é conhecida por provedores de serviços de Internet a filosofia de não ter apenas uma fonte para evitar falhas. O modelo público de cloud se baseia numa única companhia / empresa que administra a cloud, mesmo elas tendo enormes Data Centers potencial problemas de QoS quando a demanda é muito alta. Grandes empresas, como Amazon e Google, já experimentaram quedas de algumas horas em seus serviços. Modelos híbridos e comunitários, ainda pouco explorados, podem fornecer uma alternativa para provisão de múltiplos provedores de cloud.
Padronização e interoperabilidade APIs para Cloud ainda são essencialmente proprietárias dificuldade em um programa feito para uma cloud ser executado (interoperar) em outra. Dependência a um provedor aumenta a vulnerabilidade em termos de: - preço de uso / acesso; - falhas nos contratos (SLAs); - tecnologias usadas; - a empresa provedora de cloud fechar.
Gargalos de Transferência de Dados Por ser sob demanda, muitas vezes enviar um conteúdo muito grande pode ser muito caro e demorado. Por exemplo: Para enviar 1TB num link de 20 Mbit/s levaria ~4 dias. O Amazon Cloudfront é um serviço que coloca seus dados nos vários Data Centers espalhados no mundo de forma a se acessar o servidor mais perto melhora da taxa de transmissão. Contudo, a manutenção da qualidade do modelo de cloud depende de permanentes investimentos em infraestrutura e novas tecnologias de transferência. Portanto, para aplicações que demandam fortes restrições de tempo de execução, isso pode ser um problema.
Segurança Por muitos, considerado o principal obstáculo para a adoção em maior escala da estratégica de Cloud pelas empresas. Muitas empresas são reticentes quanto a colocar dados importantes em cloud por receio de falhas de segurança, acessos não autorizado, vazamento ou perda de dados, especialmente os considerados sensíveis. Por outro lado, os protocolos de transmissão dos middlewares de Cloud e as empresas que lidam com isso costumam ser mais seguros do que armazenamentos locais....
Segurança Não há ainda um padrão de segurança em cloud, o que pode acarretar níveis desiguais de segurança em diferentes provedores. A Cloud Security Alliance (CSA) tem feito estudos e esforços para aumentar a confiabilidade e padronização de segurança Certificate of Cloud Security Knowledge (CCSK). Diferenças nas leis de diversos países. Nos EUA, por exemplo, existe uma lei que exige que dados de provedores de SaaS fiquem dentro do território. A Amazon tem uma configuração que permite dizer em qual País seus dados serão armazenados.
Licenças de Software O Cloud (e abordagens e TIs antecessoras) tem posto à prova o modelo tradicional de aquisição, onde o cliente compra uma licença de software. Para alguns, acredita-se que este modelo altamente pervasivo trazido pelo Cloud é irreversível e vai revolucionar por completo a indústria do software. Uso de software (livres ou não) com base nos provedores de cloud é uma alternativa importante de ser ponderada, pois flexibiliza e simplifica as relações comerciais. Softwares de código aberto (como o Eucalyptus e OpenNebula) para implementação de uma cloud têm se popularizado na medida que suportam uma comunicação com a cloud pública da Amazon (EC2 e S3). Máquinas virtuais, como Xen e KVM, rivalizam com a solução proprietária popular VMware.
Para ambientes empresariais, o modelo de cloud tem o potencial de trazer muitos pontos positivos; porém, uma série de aspectos muito importantes devem ser pensados antes de se aderir a ele. Há evidências que este modelo vai se popularizar ainda mais ao longo dos próximos anos. Não existe comparação entre as diferentes topologias (SaaS, PaaS e IaaS) em termos de qual é a melhor decisão de projeto, embora possam coexistir vários modelos numa mesma empresa. Nem sempre cloud será a melhor solução. Conclusões Dependendo da infraestrutura já existente, pode ser que uma migração para este modelo acarrete mais custos e impactos gerais do que manter o que já está funcionando.
FIM
Referências NIST Definition of Cloud Computing v15 - http://csrc.nist.gov/groups/sns/cloud-computing/ Above the Clouds: A Berkeley View of Cloud Computing http://www.eecs.berkeley.edu/pubs/techrpts/2009/eecs-2009-28.pdf The Open Cloud Manifesto - http://gevaperry.typepad.com/open%20cloud%20manifesto%20v1.0.9.pdf Cloud Computing Use Cases White Paper Version 4.0 - http://www.opencloudmanifesto.org/cloud_computing_use_cases_whitepaper-4_0.pdf Cloud Computing: New Wine or Just a New Bottle? - http://www.computer.org/portal/web/csdl/abs/html/mags/it/2009/02/mit2009020015.htm Cloud Security Alliance - https://cloudsecurityalliance.org/ Computação em nuvem - http://pt.wikipedia.org/wiki/computa%c3%a7%c3%a3o_em_nuvem#cite_note- COMPUTACAO-EM-NUVEM-IMPLANTACAO-3 Cloud Computing a practical approach, http://www.amazon.com/cloud-computing- Practical-Approach-Velte/dp/0071626948 Software as a Service Inflection Point, http://www.amazon.com/software-service- Inflection-Point-Computing/product-reviews/1440141967 The End of Software, http://www.amazon.com/end-software-transforming-business- Demand/dp/0672326981