Prévia do material em texto
1 DESENVOLVIMENTO E COMPUTAÇÃO EM NUVEM 1 SUMÁRIO 1. INTRODUÇÃO ...................................................................................................... 2 1.1 Impactos da Computação em Nuvem ............................................................ 2 1.2 Termos e Definições Sobre Computação em Nuvem .................................... 3 1.3 Mudança do Cenário Global Tecnológico ...................................................... 4 1.4 Caraterísticas e Vantagens da Computação em Nuvem ................................ 5 1.5 Atores da Computação em Nuvem ................................................................ 6 1.6 Diferenças entre Computação em Nuvem e Virtualização ............................. 7 1.7 Exemplos de uso da Computação em Nuvem ............................................... 9 2. TIPOS DE NUVENS ........................................................................................... 11 2.1 Infraestrutura Como um Serviço (Infrastructure as a Service – IaaS) .......... 12 2.2 Plataforma Como um Serviço (Platform as a Service – PaaS) .................... 12 2.3 Software Como um Serviço (Software as a Service – SaaS) ....................... 13 2.4 Modelos em nuvem ...................................................................................... 15 2.4.1 Nuvem Pública....................................................................................... 16 2.4.2 Nuvem Privada ...................................................................................... 16 2.4.3 Nuvem híbrida ........................................................................................... 16 3. TÉCNICAS E MÉTODOS DE DISTRIBUIÇÃO DE COMPUTAÇÃO EM NUVEM 17 3.1 Rede ............................................................................................................. 18 3.2 Automação (Self-Service) e sua Rápida Elasticidade .................................. 19 3.3 Federação .................................................................................................... 19 3.4 Padronização ............................................................................................... 21 3.5 Desafios Técnicos e Riscos da Computação em Nuvem ............................. 21 3.5.1 Consolidação dos Riscos ...................................................................... 23 3.6 Segurança .................................................................................................... 24 3.6.1 Modelo pra Segurança da CSA ............................................................. 25 3.7 Desenvolvimento de Aplicações Para Nuvem .............................................. 26 3.8 Iniciativas ..................................................................................................... 28 3.9 Flexibilidade Estratégica .............................................................................. 28 REFERÊNCIAS ......................................................................................................... 31 2 1. INTRODUÇÃO A Computação em Nuvem está sendo responsável por uma das maioresrevoluções ocorridas nos últimos anos na área de Tecnologia da Informação. Os impactos dessa transformação têm crescido e se acelerado, namedida em que a nuvem oferece cada vez mais serviços, com mais segurança,com maiores recursos e com custos cada vez mais atraentes e competitivos. É uma indústria que definitivamente muda o modo de fazer as coisas na área de TI e que, embora ainda jovem, já proporciona resultados consolidados, fazendocom que sua adoção seja uma opção segura. O fundamental a ser entendido na Computação em Nuvem é que não é umarevolução tecnológica encerrada em si mesma. Além de mudar o modo como seproduzem os serviços de TI das empresas, ela potencializa a mudança do modocomo a empresa oferece seus produtos e serviços, atinge seus novos clientes,acompanha os clientes existentes e pratica o seu marketing no dia a dia, tantopara a captação de novos clientes quanto para a manutenção dos existentes. Além disso, a Computação em Nuvem permite que organizações de qualquerporte tenham acesso a recursos que antes só estavam disponíveis para grandesempresas, por exigirem elevados investimentos, e agora podem ser pagos sobdemanda. Isso muda as condições de competitividade nos mercados, criandooportunidades ímpares de crescimento acelerado sem exigir a antecipação degrandes investimentos na área de infraestrutura de tecnologia. Nesse sentidoestamos num novo mundo, onde TI é fundamental para qualquer negócio e, por outro lado, qualquer negócio pode ter sofisticados serviços de TI. Isso muda as relações de força entre as empresas, em qualquer setor 1.1 Impactos da Computação em Nuvem É preciso entender bem o que é Computação em Nuvem, para não reduzi-la auma simples oportunidade de diminuir alguns custos de TI ou investimentos emtecnologia. Seu impacto é muito mais profundo: Muda o perfil de qualificação de todo o pessoal especializado em TI.Mais do que nunca, o homem de TI se transforma num profissional que precisa entender os negócios de sua empresa, além de enxergar quetudo o que é feito na sua área deve, 3 em última instância, se traduzir emserviços adequados, velozes, seguros e econômicos. Muda o modo como a empresa pensa e pratica o seu Marketing. Coma nuvem a internet se transforma de fato, cada vez mais, na internet dascoisas, onde tudo está interligado e qualquer dispositivo eletrônico podeestar permanentemente armazenando informações na rede e recebendoestímulos dela. Muda a forma como a empresa produz e entrega seus produtos e serviços. 1.2 Termos e Definições Sobre Computação em Nuvem Quem primeiro se referiu a um modelo baseado em utility como o avanço natural do modelo time-sharing para a TI foi John McCarthy em evento sobre o MIT em 1961. McCarthy antecipou o conceito de nuvem quando salientou que a tecnologia da informação poderia ser adquirida no futuro como água e energia. Mais recentemente Nicholas Carr sugeriu em 2006 que finalmente o modelo de computação pública já era uma realidade. Mesmo sem utilizar o termo computação em nuvem, Carr explicou as grandes mudanças que estavam acontecendo com a TI. A expressão “computação em nuvem” parece que foi empregada pela primeira vez em 2006 por Eric Schmidit, CEO do Google. Também em 2006 a Amazon lançou o serviço de armazenamento S3, seu primeiro serviço de nuvem. De lá para cá muita coisa aconteceu. São muitas definições e termos técnicos associados. Procuramos aqui trazer as definições mais aceitas: GartnerGroup: computação em nuvem é um estilo de computação no qual recursos de TI, massivamente escaláveis, são disponibilizados sob a forma de serviços, por meio da Internet, para múltiplos consumidores externos. IBM (International Business Machine): computação em nuvem é uma plataforma que dinamicamente provê, configura, reconfigura e libera servidores de acordo com as necessidades e que emprega grandes Datacenters e potentes servidores, nos quais hospeda aplicações e serviços para serem utilizados via Internet. NIST (National Institute of Standards and Technology): computação em nuvem é um modelo que permite acesso à rede de forma onipresente, conveniente e sob demanda a um conjunto compartilhado de recursos de computação configuráveis 4 que podem ser rapidamente alocados e liberados com o mínimo esforço de gerenciamento ou interação com o prestador de serviço. 1.3 Mudança do Cenário Global Tecnológico A figura 1.3ilustra a mudança sugerida pela computação em nuvem. Na nova situação os recursos de TI são acessados via Internet. Os recursos de TI ilustrados podem ser físicos ou virtuais baseados em software como um servidor virtual ou baseado em hardware como um servidor físico.Um conceito decorrente da computação em nuvem é o conceito de serviços de nuvem (cloud services) que trata de qualquer recurso de TI acessado remotamente via nuvem. Um serviço de nuvem pode ser um software baseado na web como uma interface invocada via protocolo de mensagem ou um ponto de acesso remoto para ferramentas de gerenciamento. Além disso, estamos assistindo a uma digitalização crescente da economia. Todos os negócios estão se transformando em negócios de Tecnologia da Informação, e a economia digital está se estabelecendo de forma rápida e irreversível. Figura 1: Computação em nuvem 5 1.4 Caraterísticas e Vantagens da Computação em Nuvem Com a Computação em Nuvem qualquer empresa, pormenor que seja, pode ter acesso a todos os recursos disponíveis. O mercadodo bairro pode usar a mesma tecnologia que dá suporte à Netflix, sem investimentos nem custos fixos, tendo somente custos variáveis. Como a utilização de recursos da empresa pequena ou média é bem menor que a das grandes empresas, sua conta é sempre proporcional ao uso. É isso que viabiliza economicamente sua utilização. Algumas das características essenciais da nuvem estão descritas a seguir: Autosserviço sob demanda: capacidade de prover funcionalidades computacionais de maneira automática, sem que haja a necessidade do usuário interagir com o provedor de serviço; Amplo acesso à rede: os recursos computacionais devem estar disponíveis para serem acessados via Internet e de uma forma padronizada, garantindo assim a possibilidade de uso através dos mais diversos tipos de dispositivos (smartphones, tablets, computadores etc.); Pool de recursos: múltiplos usuários podem fazer uso, concomitantemente, dos recursos computacionais (físicos ou virtuais) oferecidos pelo provedor. Esses recursos devem ser alocados e realocados de forma dinâmica e de acordo com a necessidade de cada usuário; Rápida elasticidade: as funcionalidades computacionais devem ser fornecidas de maneira rápida e elástica, ou seja, podem crescer ou diminuir rapidamente. O usuário precisa ter a percepção da existência ilimitada de recursos e que eles podem ser adquiridos no momento que ele quiser e na quantidade desejada. Serviços mensuráveis: controle e monitoramento automático dos recursos utilizados por cada serviço oferecido. Esse monitoramento deve acontecer de forma transparente, tanto para o provedor quanto para o usuário do serviço. A computação em nuvem habilita de forma simplificada o acesso conforme a demanda a uma rede, a qual possui um pool de recursos computacionais configuráveis, como servidores, armazenamento, aplicações e serviços. Esses recursos podem ser rapidamente provisionados, configurados e liberados com um esforço de gerenciamento mínimo e automatizado, promovendo a melhoria da disponibilidade e do desempenho do ambiente de TI. Para certas tarefas de 6 infraestrutura o usuário pode, ele mesmo, configurar a sua necessidade e liberar o recurso. A otimização dos recursos computacionais na computação em nuvem é atingida principalmente com o emprego da tecnologia de virtualização onde um único hardware pode dar suporte a vários sistemas ao mesmo tempo. Assim a computação em nuvem permite que organizações das mais diversas operem os seus sistemas otimizando o uso de recursos. Elas podem utilizar recursos de terceiros, recursos estes disponibilizados por provedores de nuvem, e pagar pelo uso. Por outro lado, o provedor de nuvem pode otimizar o uso dos recursos por fazer isto em uma maior escala. A internet, os datacenters, locais onde os dados são processados e armazenados e a tecnologia de virtualização formam a base para toda a computação em nuvem. Outras tecnologias que habilitam a nuvem são as tecnologias de clustering e grid. 1.5 Atores da Computação em Nuvem Os atores da computação em nuvem sugeridos pelo modelo do Instituto Nacional de Padrões e Tecnologia - NIST são descritos assim: Figura 2: Principais componentes da computação em nuvem Consumidor de Nuvem (Cloud Consumer): adquire e utiliza serviços de nuvem; Provedor de Nuvem (Cloud Provider): responsável por disponibilizar o serviço de nuvem; Broker de Nuvem (Cloud Broker): gerencia o uso, desempenho e entrega dos serviços de nuvem e negocia a relação entre o provedor e o consumidor de nuvem; 7 Auditor de Nuvem (Cloud Auditor): conduz a avaliação dos serviços de nuvem com foco em privacidade, desempenho e segurança; Operadora de Nuvem (Cloud Carrier): fornece conectividade e transporta os serviços entre o provedor e o consumidor de nuvem. 1.6 Diferenças entre Computação em Nuvem e Virtualização Existem diferenças importantes entre a virtualização e a computação em nuvem. A computação em nuvem vai além da virtualização, pois possibilita um maior nível de abstração para o ambiente computacional. Ela pode ser vista como um avanço em relação à virtualização. O maior nível de abstração propiciado pela computação em nuvem permite que uma aplicação possa ser construída e colocada em operação em menos tempo do que uma aplicação que utiliza unicamente a virtualização. Além disso o nível de utilização dos recursos é otimizado com a escala da computação em nuvem. Um outro aspecto importante é que o datacenter foi otimizado com a utilização do recurso de virtualização. O datacenter é o componente central da computação em nuvem e é lá que o armazenamento, a capacidade de computação e a rede interna estão presentes. As aplicações finalmente passaram a ser processadas nas mesmas máquinas físicas com segurança pois, como se sabe, a virtualização isola as aplicações da camada de hardware. A virtualização possibilitou a melhoria de uso dos datacenters com a otimização do uso de recursos. Basicamente um software implementa a camada de virtualização e possibilita um certo nível de abstração do hardware. Ela cria máquinas virtuais que são baseadas em máquinas físicas. A densidade de máquinas virtuais (VMs) (relação de máquinas virtuais para máquinas físicas) é função principalmente da qualidade do software de virtualização. A abstração permite carregar o servidor com aplicativos que rodam de forma independente consumindo recursos de forma mais inteligente. O software que implementa a virtualização normalmente é do tipo hypervisor. Ele é conhecido como monitor de máquina virtual (Virtual Machine Monitor – VMM) e representa a camada de abstração, já comentada, que entrega para o sistema operacional convidado um conjunto de instruções de máquinas equivalente ao 8 processador físico. O servidor físico virtualizado pode então rodar várias instâncias virtuais. Reforçando, com a virtualização cada VM utiliza um sistema operacional e suas respectivas aplicações. Diversas VMs podem coexistir no mesmo servidor físico. Figura 3: Virtualização A computação em nuvem, por sua vez, inclui a elasticidade como a sua principal característica. Ela é uma propriedade fundamental da nuvem e vai além do conceito de escalabilidade. A escalabilidade trata de recursos que podem ser expandidos de acordo com a demanda computacional. A elasticidade é um conceito mais amplo e representa o poder para dimensionar recursos computacionais diminuindo ou expandindo-os facilmente e com o mínimo de atrito. Ou seja, no caso da elasticidade os recursos não só podem ser expandidos como reduzidos. É importante compreender que a elasticidade acabará por propiciar a maioria dos benefícios da nuvem. Um sistema só baseado em virtualização tem dificuldade em implementar a elasticidade. A maior ou menor elasticidade de um ambiente de computação em nuvem vai depender das várias camadas envolvidas, incluindo a arquitetura da aplicação e a arquitetura da infraestrutura. Uma empresa pode com sistemas baseados em computação em nuvem adequara demanda por TI com a oferta. A elasticidade se encarrega de permitir este casamento. Para a empresa usuária da computação em 9 nuvem também o pagamento pelo uso dos recursos variará de acordo com a demanda. O benefício da elasticidade da computação em nuvem permite transferir o risco da baixa utilização, (subutilização) e da alta utilização (saturação) para uma situação de ajuste fino entre a carga de trabalho (workload) da TI e os recursos disponíveis. A ideia central da nuvem é possibilitar que as aplicações que rodam em datacenters isolados possam rodar na nuvem em um ambiente de larga escala e de uso elástico de recursos. Em resumo a elasticidade relaciona-se com a demanda atual e a demanda futura. Com o uso maciço da internet, as organizações já não sabem exatamente como os clientes se comportam. Deve ficar claro que a computação em nuvem é o avanço natural da virtualização. Ela representa uma espécie de nível a mais de abstração quando comparada à virtualização. Uma API (applicationprogram interface), componente central da computação em nuvem, permite a plena abstração do ambiente computacional. A computação em nuvem, por esse ponto de vista, é uma espécie de pilha de serviços em camadas onde cada camada da pilha oferece serviços com base na camada inferior. Desse ponto de vista o datacenter e a virtualização seriam camadas da computação em nuvem. Figura 4: Uso de API para abstração de acesso a nuvem 1.7 Exemplos de uso da Computação em Nuvem 10 Os exemplos de utilização da computação em nuvem são inúmeros. Vejamos o caso do Dropbox. O Dropbox é um serviço para armazenamento e compartilhamento de arquivos baseado no conceito de computação em nuvem. Ele pertence à Dropbox Inc., sediada em San Francisco, Califórnia, EUA. Ele disponibiliza servidores que armazenam os arquivos dos clientes. Uma vez que os arquivos sejam devidamente copiados para os seus servidores, passarão a ficar acessíveis a partir de qualquer lugar que tenha acesso à Internet. O princípio é o de manter arquivos sincronizados entre computadores que tenham o Dropbox instalado. Assim o usuário pode obter uma cópia atualizada de um determinado arquivo em qualquer das máquinas que utiliza. O Dropbox é um serviço premium (o cliente tem a opção de usá-lo gratuitamente, mas pode pagar para obter algumas funções extras) de armazenamento remoto de 2 GB de arquivos e pode ir até 100 Gb com o pagamento de uma taxa. Os arquivos podem ser carregados nos servidores do Dropbox a partir de qualquer dispositivo que possua o seu software e conexão com a internet, A partir daí, esses arquivos podem ser acessados de qualquer dispositivo conectado à internet. Um outro exemplo de uso da computação em nuvem para prover serviços aos usuários é a Netflix. A Netflix é uma empresa norte-americana que oferece serviço de TV por Internet, com mais de 183 milhões de assinantes em mais de 190 países assistindo a mais de dois bilhões de horas de filmes, séries de TV e produções originais por mês. Por uma assinatura mensal, o assinante pode assistir, pausar e voltar a assistir a quantos filmes e séries quiser, quando e onde quiser, em praticamente qualquer tela com conexão à Internet, sem comerciais e sem compromisso. Para utilizar o serviço, os clientes fazem uma assinatura no site da empresa. Os assinantes da Netflix podem assistir on-line a filmes e séries transmitidos pela Internet para aparelhos de Blu-ray, celulares, computadores, decodificadores de sinal, tablets, televisões e videogames. Os aparelhos podem variar de acordo com o país. A Netflix utiliza serviços baseados em computação em nuvem para prover as funcionalidades descritas aos clientes incluindo uma experiência de streaming de alta qualidade a clientes em todo o mundo. No caso da Netflix, boa parte da infraestrutura de computação em nuvem utilizada é provida por terceiros. Ou seja, o Netflix é um 11 software como serviço (SaaS) que utiliza uma infraestrutura como serviço (IaaS) de terceiros. 2. TIPOS DE NUVENS A computação em nuvem possui diferentes modelos de serviços. O NIST descreve os três principais modelos de serviços para computação em nuvem da seguinte forma: 12 2.1 Infraestrutura Como um Serviço (Infrastructure as a Service – IaaS) É a capacidade que o provedor tem de oferecer uma infraestrutura de processamento e armazenamento de forma transparente e representa uma abstração da infraestrutura propriamente dita. Neste cenário, o usuário não tem o controle da infraestrutura física, mas, através de mecanismos de virtualização, possui controle sobre as máquinas virtuais, o armazenamento, os aplicativos instalados e algum controle limitado sobre os recursos de rede. Podemos pensar que a grande vantagem dessa tarifa é a sua escalabilidade. Afinal, em um mês, você pode requerer alguns servidores virtuais onde armazenará poucos dados e terá pouco tráfego, enquanto pode pedir o dobro no próximo. Dessa maneira, o mecanismo funciona como a contratação de um serviço de TV a cabo, sendo possível cancelá-lo, aumentá-lo ou diminui-lo a qualquer momento. O uso do IaaS é recomendado para pequenas e médias empresas que estão crescendo tão rapidamente que a infraestrutura não seria capaz de acompanhar, além daquelas que tenham demandas voláteis, como lojas virtuais. No entanto, ele não é recomendado quando há um limite de desempenho ou restrições relativas à legislação do armazenamento ou terceirização dos dados. 2.2 Plataforma Como um Serviço (Platform as a Service – PaaS) São plataformas oferecidas pelo provedor para o desenvolvedor de aplicativos. Aplicativos estes que serão executados e disponibilizados na nuvem. A plataforma na nuvem oferta um modelo de computação, armazenamento e comunicação para os aplicativos. Imagine que você contratou uma ótima solução para a sua empresa, que funciona na nuvem, mas que não possui um recurso personalizado essencial para o seu trabalho. Nesse cenário, o PaaS surge como o ideal porque é, como o próprio nome diz, uma plataforma que pode criar, hospedar e gerir esse aplicativo. Nesse modelo de nuvem, contrata-se um ambiente completo de desenvolvimento, no qual é possível criar, modificar e otimizar softwares e aplicações. Tudo isso é feito utilizando a infraestrutura na nuvem. Ou seja, o time de 13 desenvolvimento tem uma infraestrutura completa e moderna à disposição, sem que sejam necessários altos investimentos. Aqui, a grande vantagem é que a equipe de desenvolvimento só precisa se preocupar com a programação do software, pois o gerenciamento, manutenção e atualização da infraestrutura ficam a cargo do fornecedor. Além disso, outro ponto a favor desse outro dos modelos de nuvem é que várias ferramentas de desenvolvimento de software são oferecidas na plataforma. Dessa maneira, ela se torna completa, robusta e totalmente disponível em uma nuvem pública ou privada, podendo ser acessada pela internet. Ou seja, é algo bom e barato que ainda facilita a utilização por pequenas e médias empresas, mas que acima de tudo supre todas as demandas do programador. Empresas que ficarem em dúvida os outros modelos de nuvem podem optar pela PaaS, caso tenham um time de desenvolvedores disponível para trabalhar simultaneamente. Isso, caso seja preciso utilizar uma infraestrutura complexa para executar as tarefas ou se houver uma grande integração com o banco de dados. No entanto, a PaaS não é indicada quando o desempenho geral do software pede algum hardware ou outros aplicativos específicos. Além disso, no futuro, a sua empresa também pode ter dificuldades em migrar para outro fornecedor, devido ao uso de determinadas linguagens. 2.3 Software Como um Serviço (Software as a Service – SaaS)É um tipo de aplicativo de interesse para uma grande quantidade de usuários que passam a ser hospedados na nuvem como uma alternativa ao processamento local. Eles são oferecidos como serviços por provedores e acessados pelos clientes através de aplicações como o browser. Todo o controle e gerenciamento da rede, sistemas operacionais, servidores e armazenamento é feito pelo provedor de serviço. Por fim, qualquer pessoa conhece o SaaS, mesmo que não saiba. Nesse terceiro modelo de nuvem, você pode ter acesso ao software sem comprar a sua licença, utilizando-o a partir da Cloud Computing, muitas vezes com recursos limitados. No entanto, também existem planos de pagamento nos quais é cobrada uma taxa fixa ou um valor que varia de acordo com o uso. Muitos CRMs ou ERPs trabalham no sistema SaaS. Assim, o acesso a esses softwares é feito usando a internet. Os dados, contatos e demais informações podem ser acessados de qualquer 14 dispositivo, dando mais mobilidade à equipe. Falamos que qualquer um conhece o SaaS porque sites como o Facebook e o Twitter ou aplicativos como o Skype, OneDrive, Google Docs e o Office 365 funcionam dessa maneira. Neles, tudo é disponibilizado na nuvem, para que muitos usuários consigam ter acesso ao serviço pelo browser ou por um software — como no caso do Skype. Nesse último modelo de nuvem, há a grande vantagem da escalabilidade e da praticidade. Afinal, todos os processos relativos aos custos da compra do software e do servidor — além da implementação — são eliminados, visto que o serviço está disponível a um clique de distância. Sendo assim, você só precisará testá-lo gratuitamente e — caso aprove-o — treinar os funcionários, que ainda terão a vantagem de poder trabalhar simultaneamente em um mesmo arquivo! Por fim, o SaaS é bastante recomendado para: pequenas empresas, que não podem gastar com a compra de licenças; trabalhos que durem apenas um curto período de tempo; necessidades de acesso remoto aos aplicativos, como no caso de softwares de CRM ou de gestão de redes sociais. Porém, ele não é muito bom para instituições que precisem de um processamento de dados rápido ou para aquelas que seguem normas de legislação contrárias à hospedagem de dados em ambiente externos. Figura 5: Modelos de computação em nuvem 15 2.4 Modelos em nuvem Um aspecto importante da computação em nuvem é que ela padroniza o acesso e a comunicação entre aplicações utilizando como tecnologia de base os web browsers e os web services. Web browsers suportam as ofertas de SaaS e parte da oferta de PaaS. Web services entram na composição da oferta de IaaS e parte da oferta de PaaS. Web service é uma solução utilizada na integração de sistemas e na comunicação entre aplicações diferentes. Com esta tecnologia é possível que novas aplicações possam interagir com aquelas que já existem e que sistemas desenvolvidos em plataformas diferentes sejam compatíveis. Eles são componentes que permitem às aplicações enviar e receber dados em um único formato. Cada aplicação pode ter a sua própria “linguagem”, que é traduzida para uma linguagem universal, o formato XML ou JSON, na hora de fazer a comunicação. O web service faz com que os recursos da aplicação estejam disponíveis na rede de forma padronizada. Outras tecnologias fazem a mesma coisa, como, por exemplo, os browsers da Internet acessam as páginas web disponíveis usando por norma as tecnologias da Internet, HTTP e HTML. No entanto, estas tecnologias não são bem-sucedidas na comunicação e integração de aplicações. Importante reforçar que existe uma grande motivação para o uso da tecnologia web services pois essa tecnologia possibilita que diferentes aplicações se comuniquem entre si, mesmo que estas aplicações utilizem tecnologias e recursos diferentes.As formas de implementar a nuvem serão descritas a seguir. 16 2.4.1 Nuvem Pública É disponibilizada publicamente através do modelo pague-por-uso. São oferecidas por organizações públicas ou por grandes grupos industriais que possuem grande capacidade de processamento e armazenamento. Nos modelos de nuvem pública, tudo está disponível na web e é compartilhado entre vários usuários, tornando os recursos padronizados. Justamente por oferecer soluções unificadas, esse acaba sendo um modelo mais econômico. Portanto, a nuvem pública é indicada para negócios que querem manter um orçamento mais baixo. Porém, o suporte padronizado também pode ser insuficiente para empresas que demandam funções específicas. Além disso, em caso de dados sigilosos, algumas políticas podem impedir o uso de uma nuvem pública. 2.4.2 Nuvem Privada Compreende uma infraestrutura de computação em nuvem operada e quase sempre gerenciada pela organização cliente. Os serviços são oferecidos para serem utilizados pela própria organização, não estando publicamente disponíveis para uso geral. O GartnerGroup alerta que a nuvem privada é definida por privacidade, não propriedade, localização ou responsabilidade de gestão. A nuvem privada tem as mesmas funcionalidades da anterior, mas funciona num servidor da empresa. Sendo assim, só existe o acesso próprio, o que deixa todos os arquivos privados e, consequentemente, mais seguros. A grande vantagem da nuvem privada é oferecer à empresa a possibilidade de personalizar as funções e o suporte às suas necessidades. Como a nuvem é desenhada para ela, todos os processos são direcionados para a realidade do negócio. No entanto, é preciso lembrar que, ao optar pela nuvem privada, a empresa perde uma boa parte das vantagens do IaaS — o uso da infraestrutura conforme demanda. Para implementar uma nuvem privada, é necessário investir em servidores e outros equipamentos e em pessoal para instalar, manter e gerenciar as funcionalidades em nuvem. Mesmo em períodos de baixa demanda, todos os recursos terão que ser mantidos, ainda que ociosos. 2.4.3 Nuvem híbrida 17 A infraestrutura é uma composição de duas ou mais nuvens (privadas, públicas ou comunitárias) que continuam a ser entidades únicas, porém conectadas através de tecnologias proprietárias ou padronizadas que propiciam a portabilidade de dados e aplicações. A nuvem híbrida impõe uma coordenação adicional a ser realizada para uso das nuvens privadas e públicas com impactos na governança. Por fim, quando falamos da nuvem híbrida, podemos pensar na junção das duas anteriores. Sendo assim, de acordo com a necessidade e a estratégia do negócio e da TI, alguns recursos são utilizados privadamente, enquanto outros são usados publicamente. A nuvem híbrida pode ser uma boa opção para empreendedores e gestores que desejam encontrar um balanço entre a segurança da nuvem privada e a economia da nuvem pública. 3. TÉCNICAS E MÉTODOS DE DISTRIBUIÇÃO DE COMPUTAÇÃO EM NUVEM 18 O entendimento de técnicas de rede, automação, federação e aspectos da padronização da nuvem é algo fundamental para os que querem trabalhar nessa área. Abordaremos aqui de forma simplificada esses pontos. 3.1 Rede As técnicas utilizadas em redes convencionais valem para a nuvem. O que muda na nuvem é que a camada de rede passa a ser uma abstração (web services) permitindo utilizar os componentes de rede de forma mais simples e ágil. Quando você implementa aplicativos na nuvem, a solução de rede utilizada deve permitir manter o controle completo sobre a configuração de endereçamento IP. Isso significa que você deve continuar a usar os seus esquemas de endereçamento IP estabelecidos e se conectar a redes IP já existentes. A Amazon Virtual Private Cloud (Amazon VPC), por exemplo, permite provisionar uma seção da nuvem da Amazon Web Services (AWS) isolada logicamente onde pode-se executar recursos daAWS em uma rede virtual que você mesmo define. Você tem controle total sobre seu ambiente de rede virtual, incluindo a seleção do seu próprio intervalo de endereços IP, criação de subredes e configuração de tabelas de roteamento e gateways de rede. É como se você criasse um ambiente de rede exclusivo para você utilizando recursos de rede públicos. É possível personalizar facilmente a configuração da rede para o Amazon VPC. Por exemplo, você pode criar uma sub-rede voltada para o público com foco nos servidores web que tenham acesso à Internet e colocar seus sistemas back-end, como bancos de dados ou servidores de aplicativos em uma sub-rede de uso privado sem acesso à Internet. Você pode aproveitar várias camadas de segurança quando utiliza a rede na nuvem, incluindo grupos de segurança e listas de controle de acesso à rede, para ajudar a controlar o acesso às instâncias do servidor virtual Amazon EC2 em cada sub-rede. Figura 6: Conceito de rede na nuvem com a amazon VPC 19 3.2 Automação (Self-Service) e sua Rápida Elasticidade A automação trata da capacidade de prover funcionalidades computacionais de maneira automática, sem que haja a necessidade do usuário interagir com o provedor de serviço. Como no caso da nuvem USP, o usuário solicita recursos diretamente na plataforma sem precisar interagir com o provedor de serviço. Essa é uma grande conquista da nuvem pois permite integrar melhor o usuário ao ambiente de TI e torna o processo mais ágil. Tipicamente recursos de processamento e armazenamento são ofertados dessa forma por diversos provedores. Em relação à automação, diversos esforços têm sido feito pelos provedores de nuvem no sentido de fornecer a tão sonhada elasticidade. O Auto Scaling da Amazon AWS, por exemplo, permite escalar a capacidade do servidor virtual para cima ou para baixo, automaticamente, de acordo com as condições que você definir. O número de instâncias virtuais que está usando aumenta facilmente durante picos de demanda para manter o desempenho e diminui automaticamente durante quedas de demanda para minimizar custos. O Auto Scaling é particularmente útil para aplicativos que apresentam variabilidade de uso por hora, dia ou semana. 3.3 Federação A federação de Identidade permite que clientes habilitados usem suas identidades existentes (usuários, por exemplo) para ter acesso seguro a APIs de determinada nuvem e outros recursos usando controles provenientes do seu sistema de identidade e acesso, sem a necessidade de criar um usuário específico para cada identidade. A ideia da federação é que funcionários de uma determinada empresa 20 façam login uma vez em seu diretório corporativo, e depois usem recursos de nuvem sem ter de fazer novamente login, proporcionando um single sign-on (SSO).Ele vinha assinado por Thomas H. Davenport do MIT e D. J. Patil, este último cunhou o termo “Data Scientist” e se tornou no governo Obama o primeiro “US Chief Data Scientist” oficialmente contratado. A Microsoft na biblioteca MSDN explica o funcionamento do SSO. O single signon (SSO) permite que usuários digitem nome e senha ao se conectarem no sistema operacional no início do dia e, depois, podem ter acesso aos aplicativos e recursos da nuvem sem ter de apresentar suas credenciais para cada um, separadamente. Além da conveniência, o SSO representa para os usuários um número menor de conjuntos de credenciais para controlar e reduzir o risco de segurança de senhas perdidas ou esquecidas. A Microsoft sugere que os aplicativos SaaS podem fornecer autenticação SSO pelo uso de um servidor de federação na rede do cliente que faz interface com o serviço de diretório do usuário da própria empresa do cliente. Este servidor de federação possui uma relação de confiança com um servidor de federação correspondente, localizado na rede do provedor SaaS.Em resumo, “data- drivencompanies”, são empresas que utilizam eficientemente os dados, gerados por insights de profissionais chamados de “Data Scientist”. Se usuários finais tentarem ter acesso ao aplicativo, o servidor de federação da empresa autentica o usuário localmente e negocia com o servidor de federação SaaS para fornecer ao usuário um token de segurança, aceito pelo sistema de autenticação do provedor SaaS, que o utiliza para dar acesso ao usuário. Figura 7: Esquema de autenticação das premissas da empresa com a nuvem 21 3.4 Padronização Na atualidade, não faltam normas para a computação em nuvem. O problema é que há uma profusão delas e muitas pessoas não sabem o que eles significam. O ambiente fragmentado e difuso em que se move a questão da padronização no ambiente de computação em nuvem, no entanto, caminha para a consolidação por meio de várias entidades que se destacam: Cloud Security Alliance: É uma organização sem fins lucrativos com a missão de promover a utilização das melhores práticas para a prestação de garantia de segurança na computação em nuvem. A entidade possui uma BrazilChapter, a primeira da América Latina e a segunda no mundo, segundo seu site, o CSABR. IEEE Standards Association: O IEEE (Institute ofElectricalandElectronicsEngineers) é uma organização reconhecida mundialmente pelo desenvolvimento de padrões para tecnologias globais de engenharia. Este ano, a organização lançou uma iniciativa para desenvolver padrões para a computação em nuvem. Distributed Management Task Force (DMTF): É um grupo da indústria, com a missão de permitir uma gestão mais eficaz de sistemas de TI em todo o mundo. Fundada em 1992, a DMTF permite a associação de companhias, outros tipos de organizações e pessoas. Possui atualmente um grupo de trabalho de padrões de governança da nuvem, para desenvolver um conjunto de normas que visam a melhorar a interoperabilidade de sistemas desenvolvidos para nuvem. National Institute of Standards and Technology (NIST): O NIST é uma agência da administração de tecnologia do Departamento de Comércio do governo dos EUA, que promove a inovação e a competitividade industrial por meio do avanço da ciência de medição, padrões e tecnologia. O NIST iniciou um programa para desenvolver um conjunto de padrões de computação em nuvem, com os primeiros resultados já publicados no NIST Cloud ComputingProgram. 3.5 Desafios Técnicos e Riscos da Computação em Nuvem Os desafios são os mais diversos na computação em nuvem. Quando olhamos para o aspecto técnico podemos elencar como principais desafios: 22 Falta de interoperabilidade e aprisionamento: A maioria dos modelos adotados pelos fornecedores de sistemas de computação em nuvem são integrados verticalmente e limitam a escolha da plataforma. Incompatibilidade entre aplicações: Aplicativos construídos para a computação em nuvem são muitas vezes incompatíveis com os aplicativos legados. Dificuldades em obedecer a normas regulatórias: A regulação pode limitar o uso da computação em nuvem para alguns ambientes. Nuvens privadas podem ser uma opção mais adequada para diversas organizações. Segurança inadequada: Em muitas situações a segurança pode ser o gargalo para adoção da computação em nuvem. Para os decisores envolvidos com projetos de nuvem os desafios técnicos devem ser superados naturalmente, e o foco é a conexão da TI ao negócio. Projetos de adoção de computação em nuvem, como qualquer projeto, apresentam benefícios e riscos associados. Os objetivos de um projeto de adoção de nuvem devem ser acompanhados do gerenciamento dos riscos associados. Existem várias características importantes no modelo de computação em nuvem e a combinação destas características fornecidas pelo modelo adotado pelos provedores faz o risco variar. O GARTNER recentemente sugeriu alguns cuidados que o cliente deve ter para mitigar o risco referente à aquisição de serviços de um provedorde computação em nuvem, descrito a seguir: Saber como é feito o acesso dos usuários; Saber como o provedor obedece às normas de regulação; Saber onde se localizam dos dados; Saber como os dados são segregados; Saber como os dados são recuperados; Saber como é feito o suporte; Entender a viabilidade do provedor no longo prazo. Os riscos precisam ser mitigados nas áreas de armazenamento, desempenho, integração de dados e segurança. 23 3.5.1 Consolidação dos Riscos O risco de TI é a possibilidade de que algum evento imprevisto, que envolva falha ou mau uso da TI, ameace pelo menos um objetivo empresarial. A computação em nuvem é uma opção para a arquitetura de TI com diversos riscos associados. Particularmente, a integração da computação na nuvem com a infraestrutura existente na empresa, como no modelo de nuvem híbrida, deve considerar aspectos de segurança e acesso. O risco da adoção e uso da computação em nuvem deve ser administrado como qualquer outro risco. Sidney Chaves, em sua dissertação de mestrado defendida na FEA-USP em 2012 cujo título é “A questão dos riscos em ambientes de computação em nuvem”, consolida os riscos inerentes à computação em nuvem em três grandes grupos: 1. Riscos operacionais Falta de privacidade: baixo grau de confidencialidade e deficiências de isolamento no ambiente de nuvem, possibilitando acessos indevidos e/ou adulteração e/ou aplicativos de consumidores. Falhas de integridade: permissividade para a introdução fraudulenta de agentes de software com funções destinadas a provocar o mau funcionamento de serviços operados na nuvem. Erros: falhas que implicam na necessidade de reprocessar rotinas e/ou recuperar dados. Suporte inadequado: falhas de natureza diversa no serviço de suporte: pessoal mal preparado, gargalos no atendimento, indisponibilidade do serviço, etc. Baixo desempenho: desempenho insatisfatório dos serviços contratados, em decorrência de picos de demanda, balanceamento inadequado e ou subdimensionamento dos recursos ou outros fatores assemelhados. Ataques por saturação: não detecção em tempo hábil de ataques que geram sobrecarga dos servidores ao tentar interpretar solicitações em sentido que desestabilizam o ambiente. Dificuldades para escalar: demora excessiva ou dificuldades para provisionar ou liberar recursos da nuvem. 24 Baixa interoperabilidade: dificuldade significativa ou no limite, impossibilidade de intercambiar dados e/ou aplicativos entre provedores distintos. 2. Riscos de negócio Indisponibilidade: interrupção temporária dos serviços em decorrência de problemas técnicos ou de outra ordem de parte do provedor. Não continuidade: interrupção definitiva da prestação de serviços do provedor. 3. Riscos estruturais Não conformidade: não atendimento a aspectos ditados pela legislação ou disciplinados por padrões de larga aceitação na indústria. Licenciamento de software: limitações impostas ao provedor por contratos de licenciamento de software inadequadamente pactuados com seus fornecedores. Aprisionamento: dificuldade significativa ou no limite, impossibilidade de trocar de provedor devido a particularidades do ambiente. Má reputação: ampla repercussão de aspectos negativos envolvendo a prestação de serviços a um determinado consumidor ou a um grupo de consumidores. 3.6 Segurança Todo sistema baseado em computadores precisa de algum nível de proteção. A segurança na computação em nuvem é um aspecto essencial a ser tratado e deve preservar as propriedades básicas de um ambiente dito seguro: confidencialidade, disponibilidade, integridade, autenticidade e não repúdio. O aspecto chave da computação em nuvem é o gerenciamento de identidade e controle de acesso. Como o ambiente é distribuído, é necessário implantar serviços de gerenciamento da segurança que funcionem de forma distribuída e que sejam seguros e confiáveis.Serviços de identidade devem possibilitar a delegação de direitos administrativos, como forma de possibilitar que gerentes individuais possam gerenciar contas dentro do seu próprio domínio. 25 Para fornecer acesso com diferentes níveis de serviço a organização consumidora pode utilizar um serviço SSO (Single Sign- On) que faça parte de uma federação, conforme já mencionado, para autenticar os usuários nas aplicações que são executadas na nuvem. Para aplicativos que armazenam, processam e transmitem informações de cartão de crédito, a conformidade do provedor de nuvem é um aspecto importante. A norma PCI DSS nível 1, por exemplo, pode ajudar na implementação desses aplicativos na nuvem. 3.6.1 Modelo pra Segurança da CSA O modelo de referência para segurança desenvolvido pela CSA e na versão 2.1 é mostrado na Figura 3.6.1. Esse modelo demonstra de forma abrangente as relações e dependências entre os modelos de serviços de computação em nuvem. O modelo é fundamental para compreender os riscos de segurança envolvidos em uma solução baseada em computação em nuvem, mesmo que a forma como alguns provedores implementem os serviços não seja exatamente assim. O modelo IaaS inclui os recursos de infraestrutura desde as instalações até as plataformas de hardware que ali residem. Incorpora a capacidade de abstrair recursos e oferecer conectividade física e lógica a esses recursos. Fornece também um conjunto de APIs que permite a gestão e outras formas de interação com a infraestrutura por parte dos clientes. O modelo PaaS acrescenta uma camada adicional de integração com frameworks de desenvolvimento de aplicativos, recursos de middleware e funções como banco de dados, mensagens e filas, permitindo aos desenvolvedores criar aplicativos para a plataforma cujas linguagens de programação e ferramentas são suportadas pela pilha. O modelo SaaS fornece um ambiente operacional autocontido usado para entregar todos os recursos do usuário, incluindo o conteúdo, a apresentação, as aplicações e a capacidade de gestão. 26 Figura 8: Modelo de referência para segurança de nuvem 3.7 Desenvolvimento de Aplicações Para Nuvem Um dos fundamentos essenciais para o desenvolvimento de aplicações para nuvem é a capacidade de desenhar aplicações que não sejam baseadas no estado ou simplesmente stateful apps. Aplicações stateful são tipicamente as que têm regras embutidas na própria aplicação e mantêm o estado da conexão com o servidor de destino. O problema deste formato para aplicações baseadas na nuvem é que, como o serviço é distribuído, não há nenhuma garantia de que o mesmo servidor de destino vai estar disponível para responder a chamada. O ideal é usar aplicações sem manutenção do estado (stateless apps). Neste formato as aplicações são mais eficientes e não requerem que objetos sejam mantidos durante as chamadas para o servidor de destino. Vimos que um dos pontos fundamentais antes adoção da computação na nuvem é identificar o modelo que será adotado. Muitas vezes durante o exercício inicial se chega à conclusão de que o modelo ideal é X, mas depois, à medida que testes e avaliações são realizados, chega-se à conclusão de que o ideal é Y. O fato é que do ponto de vista de aplicação, a empresa precisa entender que, se ela decidir ir para um modelo PaaS, terá que se adequar à plataforma de desenvolvimento do provedor. As APIs do PaaS são proprietárias da plataforma do provedor e não 27 necessariamente vai portar toda a sua plataforma de desenvolvimento sem requerer que o código seja reescrito. Por este motivo, existe uma tendência natural a se usar IaaS quando comparado com PaaS, a não ser que a sua empresa veja benefícios específicos na adoção do PaaS. Caso sua empresa decida desenvolver aplicações em um modelo IaaS, assegure que os elementos abaixo sejam avaliados durantea escolha do provedor: Preço e forma de pagamento: Muitos provedores oferecem serviços de pagar só pelo que se utiliza em um modelo IaaS. Pesquise e veja as opções de pagamento para o modelo que será usado. SLA: Novamente veja os detalhes de SLA para disponibilidade dos serviços que irão suportar a aplicação. Certificação: Avalie as certificações do provedor, entre elas PCI DSS, SSAE 16 e SAS 70. Custo de transferência de dados: Verifique com o provedor como é feita a taxação de transferência de dados. Alguns provedores cobram por saída, enquanto outros cobram por entrada. É importante ficar claro como este processo é realizado, pois isso vai impactar o desenho da aplicação. Suporte: Verifique qual o nível de suporte oferecido para as aplicações que vão residir na nuvem. Monitoramento: Verifique qual o nível de monitoramento oferecido, se é parte do pacote ou se é necessário contratar um serviço à parte para ter o monitoramento. Uma vez tendo estabelecido os fundamentos iniciais, as capacidades do provedor que vai receber as aplicações e o modelo que será usado, é necessário escolher as aplicações que deverão ser migradas. É possível que no início deste trabalho de escolher as aplicações você acabe com uma lista enorme de aplicações para serem migradas, o que é normal. Porém, é preciso iniciar um filtro destas aplicações baseado no custo benefício, prioridade, criticidade, atributos da aplicação e portabilidade (o quão fácil vai ser para migrar sem ter que reescrever código). As tecnologias HTML, JSON e XML são comumente utilizadas em serviços Web (Web Services) que por sua vez são inerentes ao modelo de computação em nuvem. 28 3.8 Iniciativas Diversas iniciativas de computação em nuvem surgem. Trata-se aqui das principais iniciativas mundiais na área. Google e SalesForce estão focados em provimento de software como serviço (SaaS) e plataforma como serviço (PaaS). Amazon é principalmente fornecedor de infraestrutura como serviço (IaaS). VMware é fornecedora de produtos de infraestrutura para datacenters empresariais e provedores regionais que entregam IaaS. Microsoft possui a oferta mais completa, funcionando como provedor global para soluções SaaS, PaaS e IaaS. Também entrega soluções para datacenters e provedores regionais. Figura 9: Iniciativas dos fornecedores de nuvem 3.9 Flexibilidade Estratégica Flexibilidade estratégica corresponde à capacidade da empresa de mudar sua estratégia de negócios sem perdas significativas. Flexibilidade no nível estratégico significa ter a capacidade de alterar ou escolher outro objetivo, se o escolhido for inadequado. O nível tático é a capacidade de escolher caminhos para se atingir objetivos. Mas o que isto tem a ver com computação em nuvem? Vamos supor, 29 como exemplo, que um executivo fez opção por ampliar a capacidade produtiva de sua empresa, já tendo, inclusive, alocado recursos visando esta ampliação. Repentinamente surge um plano econômico que sinaliza por aperto do crédito. O que fazer? Prosseguir com a ampliação da capacidade produtiva exatamente no mesmo volume previsto anteriormente, ou fazer modificações diminuindo a ampliação prevista? Ou atéquem sabe, suspender o projeto de ampliação? Esta decisão diz respeito ao aspecto estratégico da flexibilidade. Para que este aspecto seja devidamente contemplado é fundamental ter grande capacidade e discernimento para diagnosticar corretamente, propor e analisar efetivamente alternativas de solução e escolher a solução mais adequada. No caso específico da TI baseada na computação em nuvem as dificuldades impostas pelo cenário narrado acima passam a ser mais bem absorvidas. A computação em nuvem permite alterar a capacidade de processamento e armazenamento baseado na demanda. Portanto, todo o suporte da TI à ampliação ou redução da capacidade produtiva narrada acima seria feito de forma muito simples pois os ativos de TI são adquiridos na forma de serviços e são simplesmente devolvidos ou adquiridos. A computação em nuvem permite que a capacidade do sistema acompanhe a demanda, promovendo a otimização do uso dos recursos. A computação em nuvem permite que a capacidade do sistema acompanhe a demanda, promovendo a otimização do uso dos recursos. A Figura 3.9 ilustra a situação propiciada pela computação em nuvem onde existe um ajuste entre a capacidade na nuvem e a demanda. Figura 10: Capacidade e demanda na computação em nuvem 30 CONTEÚDO COMPLEMENTAR https://www.youtube.com/watch?v=9b04CQozjdwhttps://www.youtube.com/watc h?v=LG7AVqWR4rk 31 REFERÊNCIAS VARIA, Jinesh. Architecting for the Cloud: bestpractices, Amazon Web Services, Jan. 2010. VERDI, Fábio Luciano; ROTHENBERG, Christian; PASQUINI, Rafael; MAGALHÃES, Maurício Ferreira. Novas Arquiteturas de Datacenter para Cloud Computing. CSBC, 2010. STATEN, James. Deliver Cloud BenefitsInsideYourWalls. Forrester, Apr. 2009. UC BERKELEY RELIABLE ADAPTIVE DISTRIBUTED SYSTEMS LABORATORY. Abovethe Clouds: a Berkeley viewof cloud computing. US Berkeley ReliableAdaptativeDistributed Systems Laboratory, Feb. 2009. ISACA. Princípios norteadores de adoção e uso da computação em nuvem. ISACA, fev. 2012. NIST. The NIST Definitionof Cloud Computing (Draft), NIST 800-145, Jan. 2011. “Amazon Web Services (AWS) - Cloud Computing Services.” AmazonWeb Services, Inc. Web. 23 Dec. 2014 32