Serviços em Nuvem: Oportunidade para Operadoras – Parte I Este artigo introduz os conceitos fundamentais de computação em nuvem, Cloud Computing, e a insere no contexto de mercado de serviços ao apresentá-la como uma boa oportunidade para o surgimento de novos produtos para as operadoras de telecomunicações. Autores Anderson Vinícius Alves Ferreira Especialista em Engenharia de Redes IP da FITec. É graduado em Ciências da Computação pela UFPB e possui especialização em Engenharia de Redes IP pela UPE. [email protected] Davi Sabino Barros Especialista em Engenharia de Redes IP da FITec. É graduado em Redes de Computadores pela Faculdade Maurício de Nassau e possui especialização em Engenharia de Redes IP pela UPE e Segurança de Redes pela Faculdade Santa Maria. [email protected] Rafael Bezerra Albuquerque Especialista em Engenharia de Redes IP da FITec. É graduado em Engenharia da Computação pela UPE e possui especialização em Engenharia de Redes IP pela UPE. [email protected] A FITec é um instituto de pesquisa e desenvolvimento que presta serviços na área de Telecomunicações, Tecnologia da Informação, Energia Elétrica e Automação. É um centro de excelência no desenvolvimento de tecnologias e na geração de soluções, produtos e serviços, suportando empresas no processo de inovação. [email protected] Categoria: Nível: Duração: Infraestrutura para Telecomunicações, Banda Larga Intermediário Enfoque: 20 minutos Publicado em: Técnico 30/09/2013 Computação em Nuvem e seus Serviços Neste primeiro capítulo são abordados conceitos e técnicas de Computação em Nuvem e serviços que podem ser providos com este modelo de computação. Inicialmente, são apresentados os conceitos básicos de computação em nuvem, em seguida os modelos de serviços e implantação e alguns dos desafios para implantação desta tecnologia. 1.1. Computação em Nuvem A Computação em Nuvem – ou também comumente conhecida pelo termo inglês Cloud Computing – é, em linhas gerais, um modelo de computação que permite oferecer como serviço recursos de software e/ou de hardware, de maneira transparente para os usuários, por intermédio de redes de computadores. Este modelo de computação segue a mesma ideia de serviços considerados básicos para a sociedade humana moderna. Serviços de utilidade pública como água, eletricidade, telefone e gás possuem uma infraestrutura que os permitem ser entregues em qualquer lugar e a qualquer hora, de forma que seja possível simplesmente abrir a torneira, acender a luz, realizar uma chamada ou usar o fogão sem que os usuários precisem entender como tais serviços chegam às suas casas. Além disso, o uso desses serviços é cobrado de acordo com as diferentes políticas de tarifação do usuário final. A Computação em Nuvem é uma área em evolução e tem diferentes conotações para os profissionais de TI, dependendo de seus pontos de vista e frequentemente dos seus produtos e serviços (Sridhar, 2009). Não existe uma definição universalmente aceita entre os profissionais de TI para o termo Computação em Nuvem. Entretanto, a definição provida pelo National Institute of Standards and Technology (NIST) pode ser encontrada em diversas publicações de cunho acadêmico e também será a definição utilizada como base neste documento. Em tradução livre, o NIST apresenta a seguinte definição: http://www.teleco.com.br 1 A Computação em Nuvem é um modelo que possibilita acesso, de modo conveniente e sob demanda, a um conjunto de recursos computacionais configuráveis (por exemplo, redes, servidores, armazenamento, aplicações e serviços) que podem ser rapidamente adquiridos e liberados com mínimo esforço de configuração ou interação com o provedor de serviços. (Mell & Grance, 2011, p. 2) Outra definição que pode ser encontrada na literatura é apresentada a seguir, em tradução livre: [Computação em Nuvem] é um modelo de serviço em Tecnologia da Informação em que serviços computacionais (ambos hardware e software) são entregues sob demanda para os usuários por intermédio de uma rede de comunicações de maneira autônoma, independente de dispositivo e localização. Os recursos necessários para prover os níveis de qualidade de serviço demandados pelos usuários são compartilhados, escaláveis dinamicamente, disponibilizados rapidamente, virtualizados e entregues com mínima interação do provedor de serviço. Os usuários pagam pelo serviço como um custo operacional sem impactar em qualquer despesa de capital inicial em ativos físicos. (Marston, Li, Bandyopadhyay, Zhang, & Ghalsasi, 2011) Em um modelo de computação tradicional, para construir ou atualizar infraestruturas de TI, os usuários têm que se preocupar com a instalação, configuração e atualização de softwares, adequação do espaço físico e de recursos humanos, além de outros gastos como com licenças de softwares. Com a Computação em Nuvem, os usuários passam a poder acessar os serviços sob demanda e independente de localização. A nuvem é uma metáfora para a Internet ou a infraestrutura de comunicação entre os componentes arquiteturais, deixando evidente uma abstração que oculta para o usuário toda a complexidade da infraestrutura e tecnologias empregadas para oferecer os serviços, como pode ser visto no exemplo apresentado na Figura 1. Para ter acesso aos serviços, os usuários necessitam ter em suas máquinas apenas um sistema operacional, um navegador e acesso a rede de dados ou Internet. Todos os recursos computacionais estão disponíveis na nuvem e os dispositivos dos usuários não precisam de altos recursos computacionais, o que leva à diminuição no custo de aquisição de equipamentos. A cobrança pela utilização dos recursos na nuvem é feita baseada na quantidade de uso. Portanto, paga-se apenas por aquilo que se consome. http://www.teleco.com.br 2 Figura 1: Computação em Nuvem [adaptado de (Johnston, 2009)]. Uma pesquisa realizada em 2008 com seis datacenters corporativos mostrou que a maioria dos servidores estava sendo subutilizada, apresentando uma taxa de utilização de apenas 10 a 30% da capacidade de processamento disponível, enquanto os computadores desktop apresentaram uma taxa média de utilização de menos de 5% (VMWare, 2008). Isto se deve ao modo como as corporações planejam suas infraestruturas. Comumente, as empresas são obrigadas a utilizar critérios de pico de carga ao dimensionar as suas necessidades de recursos computacionais. Com o conceito de computação em nuvem e a tecnologia de virtualização, a infraestrutura computacional de datacenter pode ser mais bem utilizada, levando a custos de aquisição e operacionais mais baixos. O gráfico da Figura 2 ilustra este ponto. A linha verde representa a infraestrutura presente no datacenter e mostra como o modelo atualmente utilizado para planejamento de infraestrutura pode deixar uma organização com excesso de capacidade ou com um excesso de demanda levando a uma degradação do serviço. Já a linha roxa, seguindo de perto a curva da demanda real, mostra os benefícios da http://www.teleco.com.br 3 computação em nuvem, que possibilita aumentar ou diminuir a infraestrutura computacional de acordo com a demanda. Figura 2: Curva de Capacidade e Utilização de Recursos Computacionais [adaptado de (Chades, 2010)]. A computação em nuvem permite, portanto: • Diminuir os custos de aquisição de equipamentos; • Facilitar o planejamento das empresas, que podem, a partir de então, adequar sua infraestrutura de acordo com a demanda dos clientes; • Que as empresas se concentrem em agregar valor aos serviços oferecidos aos clientes, em vez de se gastar esforços e recursos humanos com instalação e manutenção da infraestrutura de suporte. 1.1.1. Características Essenciais Algumas características são consideradas essenciais em um ambiente de computação em nuvem. Apesar de algumas delas poderem não estar presentes em uma solução específica, é o seu conjunto que guia o desenvolvimento da computação em nuvem e a difere de outros paradigmas como, por exemplo, os serviços hospedados. Estas características estão listadas e detalhadas a seguir. • Elasticidade e escalabilidade: capacidade de expandir ou reduzir a quantidade de recursos de acordo com as demandas específicas de http://www.teleco.com.br 4 cada serviço. Por exemplo, um grande número de servidores pode ser necessário para a realização de uma tarefa específica de duração limitada. Após a finalização da tarefa, tais recursos podem, então, ser liberados. Para os usuários, os recursos disponíveis para uso parecem ser ilimitados e podem ser adquiridos em qualquer quantidade e a qualquer momento (Sousa, Moreira, & Machado, 2009). • Contabilização por tempo de uso: o pagamento pela utilização dos serviços na nuvem é feito somente quando os serviços são, de fato, utilizados. O sistema de contabilização é utilizado em um nível de abstração que varia de acordo com o tipo de serviço tais como armazenamento, processamento, largura de banda e contas de usuário ativas. • Serviços sob demanda: capacidade de adquirir serviços apenas quando necessário, sem que se tornem partes permanentes da infraestrutura de TI – uma vantagem significativa em relação aos serviços de TI internos de uma empresa – e sem precisar de interação humana com os provedores do serviço. Com serviços na nuvem, não há necessidade de ter recursos computacionais dedicados esperando ser utilizados, como é o caso de serviços internos. • Amplo acesso: os recursos são disponibilizados pela rede e podem ser acessados por diferentes plataformas, como celulares, laptops, tablets ou desktops. A interface de acesso à nuvem não obriga os usuários a mudar suas condições e ambientes de trabalho como, por exemplo, linguagens de programação e sistema operacional. • Multi-inquilino: os provedores de serviços em nuvem podem hospedar serviços que são utilizados por múltiplos usuários dentro de uma mesma infraestrutura. O isolamento destes usuários pode ser físico ou virtual, dependendo das necessidades específicas de cada usuário (Sridhar, 2009). http://www.teleco.com.br 5 1.1.2. Arquitetura de Computação em Nuvem A arquitetura de computação em nuvem é baseada em camadas, em que cada camada trata de uma particularidade na disponibilização de recursos (Buyya, Yeo, Venugopal, Broberg, & Brandic, 2009). Sousa, Moreira, & Machado (2009) definem camada como uma divisão lógica de componentes de hardware e software, em que esses recursos são agrupados e organizados para realizar uma determinada tarefa do sistema como um todo. Ainda segundo estes autores, cada camada pode ter seu gerenciamento ou monitoramento realizado de forma independente das outras camadas, melhorando a flexibilidade, reuso e escalabilidade no tocante a substituição ou adição de recursos computacionais sem afetar as outras camadas. A Figura 3 ilustra as camadas referentes à arquitetura da computação em nuvem e suas respectivas associações. É possível distinguir na figura quatro diferentes camadas que se deslocam progressivamente da perspectiva do sistema para a do usuário final. A camada de mais baixo nível é a de infraestrutura física, que pode conter dispositivos de armazenamento, clusters, desktops e outros recursos de hardware. Esta camada fornece flexibilidade e facilidade de agregação de novos recursos à medida que se tornem necessários. Uma camada de middleware é responsável por gerenciar a infraestrutura física e tem por objetivos prover um ambiente de execução apropriado para as aplicações e explorar de maneira eficaz os recursos físicos. Esta camada pode ser dividida em duas subcamadas: uma resposável por garantir o isolamento de processos e aplicações, qualidade de serviço, podendo utilizar tecnologias de virtualização; e outra camada responsável por prover um conjunto de serviços que auxiliam os provedores de serviços comerciais e profissionais para os usuários finais – dentre os serviços dessa camada podem ser encontrados negociação de Qualidade de Serviço (QoS), gerenciamento de SLAs, serviços de cobrança, gerenciamento de requisições, entre outros. http://www.teleco.com.br 6 Figura 3: Arquitetura da Computação em Nuvem [adaptado de (Vecchiola, Chu, & Buyya, 2009)]. No nível acima da camada de middleware, encontra-se a camada responsável por prover suporte para a construção de aplicações e que contém ferramentas ou ambientes de desenvolvimento. Estes ambientes possuem interfaces Web 2.0, mashups, componentes, recursos de programação concorrente e distribuída, suporte a workflows, bibliotecas de programação e linguagens de programação. Esta camada de desenvolvimento não é utilizada pelos usuários finais, e sim, pelos usuários mais experientes, aqueles que desenvolvem as soluções para computação em nuvem. Esta camada middleware no nível de usuário constitui o ponto de acesso das aplicações à infraestrutura da nuvem. Por fim, encontra-se a camada das aplicações de computação em nuvem. Esta camada é de interesse do usuário, pois é por meio dela que eles utilizam os aplicativos. As camadas abaixo desta são responsáveis pelas características de escalabilidade, disponibilidade, ilusão de recursos infinitos e alto desempenho. 1.1.3. Virtualização Um dos conceitos mais presentes na literatura de Computação em Nuvem é o conceito de Virtualização. A virtualização de recursos está no coração da maioria das arquiteturas de nuvem (Baun, Kunze, Nimis, & Tai, 2011). O conceito http://www.teleco.com.br 7 de virtualização traz uma visão abstrata dos recursos físicos, o que inclui servidores, dispositivos de armazenamento de dados, redes e aplicações. A ideia básica é partilhar recursos físicos e gerenciá-los como um todo. Na Figura 4, destaca-se a virtualização de plataforma que é o tipo de virtualização que acelerou a adoção da computação em nuvem (Sridhar, 2009). Virtualização de plataforma é uma técnica para abstrair os recursos de um computador de tal maneira que o sistema operacional se separa dos recursos físicos do computador. Ao invés de utilizar diretamente os recursos de hardware, o sistema operacional passa a interagir com uma nova camada de software, conhecida como hypervisor. Esta nova camada acessa o hardware e apresenta ao sistema operacional um conjunto virtual de recursos de hardware. Isto possibilita que várias Máquinas Virtuais (VMs) possam ser executadas sobre um único servidor físico e novas instâncias podem ser geradas e executadas sob demanda, criando a base para a elasticidade de recursos computacionais (Baun, Kunze, Nimis, & Tai, 2011). Figura 4: Virtualização de plataforma (VMWare, 2007). Virtualização não é um conceito novo – foi inventado e popularizado pela IBM nos anos 60 com o objetivo de executar múltiplos contextos de software em seus mainframes. Na última década, o conceito voltou a ganhar popularidade em datacenters devido às preocupações com a utilização média dos servidores (VMWare, 2008). http://www.teleco.com.br 8 Um hypervisor pode ser implementado em um servidor, seja executando diretamente sobre o hardware (hypervisor Tipo 1) ou executando sobre um sistema operacional (hypervisor Tipo 2) (Sridhar, 2009). O hypervisor permite executar múltiplas VMs e é responsável por escalonar o acesso dessas VMs aos recursos de hardware, provendo um acesso consistente a CPU, memória e dispositivos de Entrada e Saída (E/S). Uma VM tipicamente executa um sistema operacional e aplicações. As aplicações não são informadas de que estão sendo executadas em um ambiente virtualizado, e dessa maneira não precisam sofrer alterações para serem executadas apropriadamente. A virtualização traz alguns benefícios para a computação em nuvem. Dentre estes benefícios, tem-se: • Elasticidade e Escalabilidade: Criar e remover VMs envolve menor esforço quando comparados a ligar e desligar servidores físicos; • Migração de workload: Com facilidades como a migração de VMs em tempo real, o esforço para migração de workload é muito menor se comparado à migração entre servidores físicos dispostos geograficamente separados; • Resiliência (confiabilidade): Falhas em servidores físicos podem ser facilmente contornadas, bastando migrar as VMs para outros servidores, preservando a disponibilidade dos serviços dos clientes. Apesar de estar presente em diversas soluções, a virtualização não é um pré-requisito para a computação em nuvem. Contudo, a virtualização provê um conjunto de ferramentas valiosas e permite uma flexibilidade significante em projetos de computação em nuvem. 1.2. Modelos de Serviços Os modelos de serviços podem ser considerados como a definição de uma fronteira que delimita onde terminam as responsabilidades, gerenciamento e a rede do cliente e onde começam as do provedor de serviços na nuvem. Existem diversos modelos de serviços descritos na literatura, geralmente descritos da forma: http://www.teleco.com.br 9 XaaS, do inglês “<Something> as a Service” (ou, em português, <alguma coisa> como um serviço). O NIST (2011) define três modelos de serviços para a computação em nuvem. São eles: Infraestrutura como um Serviço (IaaS), Plataforma como um Serviço (PaaS) e Software como um Serviço (SaaS). Muitos outros modelos foram mencionados na literatura como, por exemplo: StaaS (Armazenamento como um Serviço), IdaaS (Identidade como um Serviço), CaaS (Comunicação como um Serviço). Contudo, os modelos definidos pelo NIST englobam todas as outras possibilidades (Sosinsky, 2011). A Figura 5 ilustra esses três modelos de serviços e apresenta alguns dos serviços que podem ser disponibilizados dentro de cada modelo. As próximas subseções descrevem com mais detalhes esses três modelos de serviço. Figura 5: Modelos de serviços para a computação em nuvem [adaptado de (Zhou, et al., 2011)]. 1.2.1. Software como um Serviço (SaaS) Neste modelo de serviço, o provedor de serviços oferece a seus clientes a capacidade de utilizar sistemas de propósitos específicos que são executados sobre a infraestrutura física do provedor. Esses sistemas são acessíveis a partir de diversos dispositivos por intermédio de uma interface cliente, como um navegador Web, ou por uma Application Programming Interface (API). No SaaS, o usuário não administra ou controla a infraestrutura subjacente, incluindo rede, servidores, http://www.teleco.com.br 10 sistemas operacionais, armazenamento ou mesmo características individuais da aplicação, exceto configurações específicas limitadas ao domínio do usuário. No modelo organizacional tradicional de TI, as empresas possuem um conjunto de licenças de software para as várias aplicações que ela utiliza. Estas aplicações podem estar nos setores de recursos humanos, finanças ou vendas, por exemplo. No modelo SaaS, em vez de comprar licenças para desktops e servidores para as aplicações, a empresa pode obter as mesmas funções utilizando os serviços em nuvem de um provedor através da Internet ou alguma rede de comunicações. O modelo SaaS elimina a complexidade com instalação, manutenção e atualização de softwares para a equipe de TI dentro da empresa, pois o software é agora gerenciado de maneira centralizada pelo provedor do serviço. Como a aplicação está, geralmente, na Web, os usuários podem acessá-la de qualquer lugar com conectividade e a qualquer momento, permitindo maior integração entre unidades de uma mesma empresa ou outros serviços de software. A cobrança pelo serviço é feita tipicamente por usuário, para uma quantidade fixa de banda e de armazenamento. O monitoramento do desempenho da entrega do serviço é de responsabilidade do provedor. O modelo SaaS fornece para diferentes clientes a funcionalidade de aplicativos que são completamente hospedados em nuvem, mas os clientes possuem flexibilidade limitada. Por meio do modelo SaaS, o tempo para que a solução chegue ao mercado e o tempo de reação às demandas do segmento é bastante curto (Zhou, et al., 2011). Como exemplos de SaaS, destacam-se os sistemas de gerenciamento de relacionamento com clientes da Salesforce (Salesforce, 2012) e o GoogleDocs da Google (Google, 2012). 1.2.2. Plataforma como um Serviço (PaaS) O modelo de PaaS traz os benefícios que o SaaS trouxe para as aplicações, mas para o mundo de desenvolvimento de software. O PaaS provê uma plataforma de software na qual os usuários podem desenvolver e testar suas próprias aplicações e hospedá-las na infraestrutura do próprio provedor do serviço e sem a complexidade de comprar e manter o software e a infraestrutura necessária durante todo o ciclo de desenvolvimento. O usuário não administra ou controla a http://www.teleco.com.br 11 infraestrutura subjacente, incluindo rede, servidores, sistemas operacionais ou armazenamento, mas tem controle sobre as aplicações implantadas e, possivelmente, sobre as configurações das aplicações hospedadas nessa infraestrutura. O serviço fornece um sistema operacional, linguagens de programação e ambientes de desenvolvimento para as aplicações, auxiliando a implementação de sistemas de software, já que contém ferramentas de desenvolvimento e colaboração entre desenvolvedores. Em geral, os desenvolvedores dispõem de ambientes escaláveis, mas têm que aceitar algumas restrições sobre o tipo de software que se pode desenvolver, desde limitações que o ambiente impõe na concepção de aplicações até a utilização de sistemas de gerenciamento de banco de dados (SGBDs) do tipo chave-valor, em vez de SGBDs relacionais (Sousa, Moreira, & Machado, 2009). Como exemplos de PaaS têm-se o Google App Engine (Google, 2012)e o Microsoft Azure (Microsoft, 2012). 1.2.3. Infraestrutura como um Serviço (Iaas) O modelo de IaaS tem por principal objetivo tornar mais fácil e acessível o fornecimento de recursos, tais como servidores, rede, armazenamento e outros recursos de computação fundamentais em que o usuário pode instalar e executar softwares arbitrários, que podem incluir sistemas operacionais e aplicativos. A IaaS possui algumas características, tais como uma interface única para administração da infraestrutura, Application Programming Interface (API) para interação com hosts, switches, balanceadores, roteadores e o suporte para a adição de novos equipamentos de forma simples e transparente. Em geral, o usuário não administra ou controla a infraestrutura da nuvem, mas tem controle sobre os sistemas operacionais, armazenamento e aplicativos implantados, e, eventualmente, seleciona componentes de rede, tais como firewalls. Em geral, segundo (Sousa, Moreira, & Machado, 2009), o termo IaaS se refere a uma infraestrutura computacional baseada em técnicas de virtualização de recursos de computação. Esta infraestrutura pode escalar dinamicamente, aumentando ou diminuindo os recursos de acordo com as necessidades das aplicações. Do ponto de vista de economia e aproveitamento do legado, em vez de http://www.teleco.com.br 12 comprar novos servidores e equipamentos de rede para a ampliação de serviços, podem-se aproveitar os recursos disponíveis e adicionar novos servidores virtuais à infraestrutura existente de forma dinâmica. O modelo IaaS oferece aos usuários o maior grau de controle quando comparado aos outros dois modelos de serviços. Portanto, o usuário fica responsável por saber quais as necessidades de recursos para as aplicações. Escalabilidade e elasticidade, por exemplo, são responsabilidades do usuário – e não do provedor IaaS. O Amazon Elastic Cloud Computing (EC2) (Amazon, 2012) e o Elastic Utility Computing Architecture Linking Your Programs To Useful Systems (Eucalyptus) (Liu, Liang, & Brooks, 2007) são exemplos de IaaS. 1.3. Modelos de Implantação Os modelos de implantação tratam sobre o acesso e disponibilidade de ambientes de computação em nuvem. A restrição ou abertura de acesso depende do processo de negócio, do tipo de informação e do nível de visão (Sousa, Moreira, & Machado, 2009). Algumas empresas podem não desejar que todos os usuários possam acessar e utilizar determinados recursos no seu ambiente de computação em nuvem. Neste sentido, surge a necessidade de ambientes mais restritos, onde somente alguns usuários devidamente autorizados possam utilizar os serviços providos. Os modelos de implantação da computação em nuvem podem ser divididos em nuvem pública, privada, comunidade e híbrida (Mell & Grance, 2011). A Figura 6 ilustra a relação entre esses modelos de implantação, que se diferenciam pela localização onde o serviço está sendo executado e pelo nível de acesso à infraestrutura. http://www.teleco.com.br 13 Figura 6: Relação entre os tipos de implantação de computação em nuvem [adaptado de (Loeffler, 2011)]. 1.3.1. Nuvem Privada No modelo de implantação de nuvem privada, a infraestrutura de nuvem é utilizada exclusivamente por uma organização. A nuvem pode ser detida, gerenciada e operada pela própria organização, por terceiros ou uma combinação destes; e está localizada dentro da empresa. 1.3.2. Nuvem Privada Hospedada Este modelo se difere do anterior, nuvem privada, ao fazer uso de uma infraestrutura de nuvem situada remotamente. 1.3.3. Nuvem Pública No modelo de implantação de nuvem pública, a infraestrutura da nuvem é disponibilizada para o público em geral, sendo acessada por qualquer usuário que conheça a localização do serviço. A infraestrutura pode ser detida, gerenciada e operada por uma organização empresarial, acadêmica, governamental ou alguma combinação entre estes. A infraestrutura fica localizada internamente no provedor. http://www.teleco.com.br 14 1.3.4. Nuvem Comunidade No modelo de implantação de nuvem comunidade, a infraestrutura de nuvem é compartilhada por várias organizações e oferece suporte a uma comunidade específica que possui as mesmas preocupações (por exemplo, missão, requisitos de segurança, política e considerações de conformidade). Este tipo de modelo de implantação pode existir localmente ou remotamente e pode ser detida, gerenciada e operada por uma ou mais organizações pertencentes à comunidade, por terceiros ou alguma combinação destes. 1.3.5. Nuvem Híbrida No modelo de implantação de nuvem híbrida, existe uma composição de duas ou mais nuvens – que podem ser privadas, comunidade ou pública – e que permanecem como entidades exclusivas, mas que são agrupadas por tecnologia padrão ou proprietária, possibilitando a portabilidade de dados e de aplicativos (por exemplo, extrapolação de nuvem para balanceamento de carga entre nuvens). 1.4. Desafios da Computação em Nuvem A definição do modelo de Computação em Nuvem é uma área ainda em desenvolvimento e, portanto, existe uma série de desafios e preocupações que devem ser levados em consideração no momento da escolha por utilizar ou não este modelo. Alguns desses desafios e preocupações são apresentados a seguir. 1.4.1. Segurança Segurança é uma preocupação significativa para diretores de empresas de TI ao contratar um provedor de serviços na nuvem. Segurança física por intermédio do isolamento da infraestrutura é um requisito crítico para nuvens privadas, mas nem todos os usuários de serviços na nuvem necessitam desse nível de investimento. Para aqueles usuários, o provedor da nuvem deve garantir isolamento dos dados e disponibilidade da aplicação por intermédio do isolamento de múltiplos inquilinos. Além disso, autenticação e autorização dos usuários e criptografia do caminho da rede do usuário até o provedor da aplicação são outros fatores a serem considerados. http://www.teleco.com.br 15 No que diz respeito à confiabilidade e responsabilidade, o provedor deve fornecer recursos confiáveis, especialmente se a computação a ser realizada é crítica e deve existir uma delimitação de responsabilidade entre o provedor e o usuário (Sousa, Moreira, & Machado, 2009). Dessa forma, devem existir (ou devese ter) meios para impedir o acesso não autorizado a informações e que os dados sensíveis permaneçam privados, pois estes podem ser processados fora das empresas (Agrawal, Abbadi, Emekci, & Metwally, 2009). Em geral, cada sistema tem seu próprio modelo de dados e política de privacidade dos dados (Cooper, et al., 2009). Quando ocorre a movimentação de dados entre sistemas, deve-se garantir a privacidade dos dados - mesmo com a mudança entre modelo de dados e que aplicações multi-inquilino acessem dados de outras aplicações apenas de acordo com as políticas definidas. 1.4.2. Disponibilidade A disponibilidade de serviços permite aos usuários acessar e utilizar a nuvem onde e quando desejarem. Como geralmente os serviços são disponibilizados pela Internet podem ocorrer atrasos e sistemas indisponíveis. Os ambientes de computação em nuvem devem prover alta disponibilidade. Para tanto, esses podem utilizar técnicas de balanceamento de carga dinâmico e composição de nuvens de forma a atender às necessidades dos usuários. Por exemplo, podem-se construir aplicações altamente disponíveis com a implantação de duas ofertas de nuvem diferentes. Caso uma das nuvens falhe, a outra nuvem continua a apoiar a disponibilidade das aplicações (Kuyoro, Ibikunle, & Awodele, 2011). 1.4.3. Escalabilidade e Desempenho A escalabilidade foi uma das características fundamentais que conduziram ao surgimento da computação em nuvem (Sousa, Moreira, & Machado, 2009). As nuvens de serviços e as plataformas oferecidas podem ser dimensionadas levando em consideração diversos fatores, tais como localizações geográficas e desempenho. Apesar das limitações de rede e segurança, as soluções de computação em nuvem devem fornecer elevado desempenho, além de serem flexíveis para se adaptar diante de uma determinada quantidade de requisições. http://www.teleco.com.br 16 Como os ambientes de computação em nuvem possuem acesso público, é imprevisível e variável a quantidade de requisições realizadas, tornando mais complexo fazer estimativas e garantias de QoS. 1.4.4. Preocupações regulatórias e legais Estes são fatores que se tornam importantes, especialmente nos casos envolvendo armazenamento de dados na nuvem. Neste caso, poderia acontecer de as leis de onde os dados estão de fato armazenados não serem as leis de jurisdição onde a organização está localizada. As leis de proteção e privacidade de dados em alguns casos podem requerer que dados privados permaneçam em território nacional e em alguns casso que esses dados não possam ser hospedados fora da empresa. Alguns fornecedores já oferecem serviços especializados que levam em consideração tais requisitos, como serviços com datacenters com localização definida e políticas de acesso especiais. 1.4.5. Acordos de Nível de Serviço – Service Level Agreements (SLAs) Embora os usuários de serviços na nuvem não tenham controle sobre a infraestrutura de base, eles necessitam da garantia da qualidade de serviço, confiabilidade e desempenho dos recursos contratados, visto que a migração envolve transferir funções vitais de seus negócios para a nuvem. Em outras palavras, torna-se vital para os usuários obter garantias de entrega de serviço dos provedores. Tipicamente, essas garantias são providas por SLAs negociados entre os provedores e clientes. http://www.teleco.com.br 17 Tema Principal: Teste seu entendimento 1. Qual das alternativas abaixo não apresenta uma característica essencial da computação em nuvem? ( ) Escalabilidade. ( ) Elasticidade. ( ) Serviços sob demanda. ( ) Baixa disponibilidade. 2. Quanto ao modelo de implantação, qual a principal característica do modelo de Nuvem Privada? ( ) Utilizada por um grupo de organizações. ( ) Utilizada pelo público em geral. ( ) Composta por uma mescla de uma ou mais nuvens. ( ) Utilizada internamente por uma única organização. 3. No tocante à virtualização é incorreto afirmar que: ( ) É uma ferramenta valiosa para os serviços de computação em nuvem. ( ) Aumenta significativamente a resiliência do serviços utilizados. ( ) É estritamente necessária para a computação em nuvem. ( ) Facilita a resolução de problemas envolvendo a escalabilidade das soluções. http://www.teleco.com.br 18