Cloud Computing – Aplicando a Tecnologia no Mundo Corporativo Carlos Matheus Galvão Curso de Especialização em Redes e Segurança de Sistemas – 2009/1 Pontifícia Universidade Católica do Paraná Curitiba, Outubro de 2010. Resumo: Bastante difundido pelos fornecedores, o modelo de Computação em Nuvem começa a ganhar espaço no ambiente corporativo. Devido a questionamentos sobre segurança, custo, dúvidas sobre o que fazer com o legado e principalmente questões que dizem respeito à disponibilidade, torna-se ainda um pouco lenta e gradual a adesão à Nuvem. Esse ritmo permite que cada vez mais Gestores de Tecnologia aceitem aos poucos esse conceito e vejam a Computação em Nuvem como uma alternativa cada vez mais viável. Palavras – chave: Computação em Nuvem; Cloud Computing; Nuvens Privadas; Nuvens Corporativas; Google Apps; Microsoft Windows Azure; Amazon Web Services. 1) Introdução: A denominação Cloud Computing chegou aos ouvidos de muita gente em 2008, mas tudo indica que ouviremos esse termo ainda por um bom tempo. Também conhecido no Brasil como Computação nas Nuvens ou Computação em Nuvem, Cloud Computing se refere, essencialmente, à idéia de utilizarmos, em qualquer lugar e independente de plataforma, as mais variadas aplicações por meio da internet com a mesma facilidade de tê-las instaladas em nossos próprios computadores. [1] Para que possamos entender melhor esse conceito, é necessário compreender que ele se refere à utilização dos recursos e capacidades de armazenamento e cálculo de servidores e computadores, compartilhados e interligados através da Internet. O armazenamento de dados é feito em serviços e plataformas que podem ser acessados em qualquer lugar do mundo, a qualquer hora, não havendo necessidade de padrão no tipo da tecnologia de acesso, sistema operacional e nem da instalação de programas e ferramentas de acesso a bancos de dados. O acesso a programas, serviços e arquivos é remoto, através da Internet - daí a alusão à nuvem. [2] O instituto Gartner prevê que Cloud Computing será uma das três mais importantes tendências emergentes nos próximos três a cinco anos. [3] A previsão da pesquisa se comprova pelas facilidades e vantagens que a tecnologia agrega. Alguns serviços já exemplificam esse modelo, como, por exemplo, as ferramentas de e-mail. No formato habitual as mensagens são armazenadas no software de correio eletrônico, fisicamente no computador ou no servidor do DataCenter Corporativo. Com os emails baseados na web em um servidor alheio é possível acessar a partir de qualquer ponto. [2] Figura 1 – Visão geral do modelo de Computação em Nuvem. Com o avanço desse modelo, hoje já é comum para algumas Empresas e Profissionais da área de TI, armazenar seus arquivos de dados, fotos, vídeos e e-mails em servidores remotos e acessá-los via Web. Vantagens Gerais: - Economia e otimização de recursos de hardware; - Tecnologia escalável e elástica; - Acesso via Web; - Baseada em serviços; - Pago pelo uso. É importante também destacar que algumas certezas apontadas por analistas da área são relevantes nesse momento. Com a popularização da internet e o foco das operadoras no usuário final, o mercado de Nuvens crescerá de forma constante. É claro que falhas podem ser mais freqüentes nesse primeiro momento, porém com a tendência de grandes empresas começarem a comprar esse conceito, novas ferramentas de gerenciamento chegarão ao mercado e a tecnologia deverá ser cada vez mais utilizada, amplamente testada e homologada. Portanto, o conceito de nuvens seguras é somente uma questão de tempo. A seguir, analisaremos de forma sucinta e resumida, o conjunto mais popular das plataformas que se encaixam no uso comum das organizações que já estão desfrutando dos benefícios da Nuvem. A seção número 2 trata da Plataforma mais comum e amplamente usada devido a sua popularização, o Google Apps. Na seção número 3 trataremos da plataforma Microsoft Windows Azure, que por ser um Sistema Operacional de Nuvem possui o foco mais voltado a prover Serviços de Desenvolvimento Para Aplicações na Web e Hosting. Em seguida, na seção 4 deste artigo, analisaremos a plataforma Amazon Web Services, que dispõe de várias ferramentas orientadas a Computação em Nuvem, dentre elas, Aplicativos de E-Commerce (Amazon Fulfillment Web Service (FWS)), Banco de Dados (Amazon Relational Database Service (RDS)), Monitoramento (Amazon CloudWatch), Armazenamento de Dados (Amazon Elastic Block Store (EBS)), Controle de Tráfego Web (Alexa Web Information Service) dentre várias outras. Essas são somente exemplos da gama de serviços dessa plataforma. Ainda na seção número 4, mais especificamente na subseção 4.1, o foco será dado exclusivamente no serviço Elastic Compute Cloud EC2, que é um dos objetos de análise desse documento. 2) Google Apps. Segundo o próprio site da Google, mais de três milhões de empresas utilizam os serviços de aplicativos on-line disponibilizados por essa tecnologia. A ferramenta é destinada a vários tipos de público, desde empresas pequenas até grandes empresas como as Lojas Renner, General Eletric, entre outras, oferecendo serviços de e-mail, gerenciamento de agendas on-line, aplicativos para desenvolvimento e utilização de planilhas eletrônicas, documentos de texto, edição de imagens, vídeos e desenvolvimento de sites para web voltados para grupos de sites e intranet. Outra grande facilidade que a plataforma oferece é a mobilidade. O Google Apps oferece suporte ao acesso móvel OTA (Over-The-Air) sem custo adicional para dispositivos BlackBerry, iPhone, Windows Mobile, Android e outros com menos recursos [4]. Segundo o site da empresa, o serviço é seguro, pois conta com a ajuda de profissionais da área de segurança, infra-estrutura e integridade dos dados, possibilitando o armazenamento de documentos como e-mail por até dez anos. Figura 2 – Exemplo do painel de controle de contas de e-mail. Figura 3 – Visão geral da ferramenta para manipulação de documentos. Figura 4 – Visão da ferramenta para manipulação de apresentações. 2.1) Google App Engine. O Aplicativo de Desenvolvimento Google App Engine fornece um conjunto completo de ferramentas de desenvolvimento para a criação e hospedagem de Aplicativos Web. Uma vantagem dessa plataforma é o seu uso gratuito com ferramentas como Java, integração da linguagem com a plataforma de ferramentas de desenvolvimento e um plug-in do Google para o Eclipse. Esse conjunto oferece, por exemplo, uma solução Java completa para aplicativos Ajax. A vantagem disso é a capacidade de escalonar sua aplicação para milhões de usuários e fazer o pagamento de somente aquilo que usar. O uso inicial será sempre gratuito e se você precisar de mais recursos computacionais, eles estão disponíveis a preços de mercado. Dentre várias aplicações Web desenvolvidas utilizando-se dessa tecnologia, um exemplo desse tipo de aplicação é o Food Print (http://food-prints.appspot.com). Essa aplicação permite que sejam disponibilizadas informações nutricionais constantes nas etiquetas de alimentos de mercado ou se pesquise sobre um determinado alimento retornando, inclusive, além das informações, imagens do mecanismo do Google Search. Figura 5 – Exemplo de aplicação utilizando as ferramentas do Google App Engine. 3) Microsoft Windows Azure. Diferente das ferramentas do Google Apps, o Microsoft Windows Azure é um Sistema Operacional de Serviços em Nuvem, como define a própria Microsoft e tem o objetivo de prover Serviços de Desenvolvimento para aplicações na Web, Hosting, e Gerenciamento de Ambientes na Plataforma Azure. Voltado para o público corporativo, oferece uma maneira de desenvolver aplicações na Nuvem, que vão de simples aplicações Web, até estruturas mais elaboradas, como um sistema de gerenciamento corporativo por exemplo. O armazenamento de grandes massas de dados na Nuvem também é uma forte característica e um dos principais focos da plataforma. Utilizando ferramentas já conhecidas de programação da própria Microsoft, como o Visual Studio, complementadas por tecnologias externas, como linguagens de programação "não-MS" (PHP, Ruby, Eclipse), o desenvolvedor, trabalhando com o Windows Azure, só terá o trabalho de desenvolver seu software. Toda a parte estrutural, e isso inclui o armazenamento de dados, ficará a cargo da Microsoft, através do Azure. [5] A plataforma de serviços Azure é formada por um sistema operacional, Windows Azure, e um conjunto de serviços para o desenvolvedor que podem ser usados individualmente ou em conjunto. São eles: Azure AppFabric e SQL Azure. [6] Analisando esses conceitos, podemos chegar a um acordo comum: O Windows Azure faz duas coisas principais: Executa aplicativos e Armazena seus dados [7]. Figura 6 - As aplicações Windows Azure são executadas em data centers da Microsoft e acessadas através da Internet. 3.1) Windows Azure Plataform AppFabric. O AppFabric, é orientado a facilitar a conexão entre aplicativos on-premisses, ou seja, instalados em casa com a nuvem. Esta ferramenta torna a conectividade mais segura, através de um gerenciamento de identidades e barramento de mensagens seguro. 3.2) Microsoft SQL Azure. Estende as facilidades e qualidades já conhecidas do Microsoft SQL Server para a Nuvem como sendo um banco de dados relacional baseado na Web. Proporciona Web Services baseados em queries relacionais, pesquisas, sincronização de dados com dispositivos móveis, escritórios remotos e parceiros de negócio. Com o Microsoft SQL Azure é possível o armazenamento de dados estruturados, semi-estruturados ou sem nenhuma estrutura. Outra característica interessante na Plataforma Azure, e o acesso das diversas ferramentas do Live Services, que está se tornando uma forte tendência a usuários que usufruem dos serviços on-line da Microsoft para tarefas diversas, desde o puro lazer até a utilização profissional para busca, agenda on-line, centralização de contatos e várias outras ferramentas disponíveis. 3.3) Live Services. O que motiva a criação de novas plataformas de aplicação? A resposta é: Mudança. Mudanças em hardware, software e em como usamos aplicativos e dados. Telefones móveis transformaram-se em computadores, por exemplo, e servidores na nuvem se tornaram grandes partes de nossas vidas. Os aplicativos se tornaram mais pessoais, como os dados que armazenamos naqueles aplicativos. Combine essas mudanças e o palco está montado para um novo tipo de plataforma de aplicação. O Live Services e o Live Framework exemplificam isso. Aplicativos podem usar o Live Framework para acessar dados do Live Services, e também podem contar com o Live Framework para sincronizar esses dados em estações de trabalho, laptops e dispositivos. A Figura 7 mostra como o Live Services e o Live Framework combinam. [7] Figura 7 - O Live Framework permite que aplicativos acessem dados do Live Services e mais. 4) Amazon Web Services. Uma das pioneiras na área de Computação em Nuvem, a Amazon vem desde meados do ano de 2006 sendo uma plataforma de vários serviços orientados a Computação em nuvem, disponibilizando infra-estrutura para empresas de vários segmentos e porte diferentes. Com os serviços baseados na Web da Amazon, é possível exigir poder de computação, storage, e outros serviços, tendo acesso a uma elástica infra-estrutura de TI conforme as demandas do negócio. A plataforma Amazon Web Services permite flexibilidade na escolha de quais ferramentas e modelo de programação a corporação vai escolher para desenvolver suas aplicações e com isso ajudar a resolver os problemas que estão sob demanda. Como as demais plataformas estudadas nesse caso, a Amazon Web Services também dispõe e defende as premissas de serviço ininterrupto, larga capacidade de armazenamento e ambiente redundante por natureza [8]. Vários são os produtos disponibilizados pela Amazon Web Services. Na seqüência deste artigo daremos foco na solução Elastic Compute Cloud (EC2), por ser o produto que permite uma aplicação mais coerente com o proposto neste artigo. Figura 8 – Exemplo dos produtos e serviços oferecidos pela Amazon. 4.1) Elastic Compute Cloud (EC2). Com um foco um pouco diferente das outras, a Elastic Compute Cloud (EC2) é a principal oferta e o produto “carro chefe” da plataforma Amazon Web Services e foi uma das primeiras plataformas de computação em nuvem e ainda é uma das mais populares. Ela é baseada em instâncias que são servidores virtuais dedicados prontos para serem customizados e se ajustar a suas necessidades. [9] Para que seja possível começar a trabalhar com a plataforma, é necessário que exista uma AMI, ou seja, Amazon Machine Instance, que funciona exatamente da mesma forma que uma imagem de um sistema operacional em formato ISO, por exemplo, contendo o próprio sistema operacional escolhido, aplicativos, ferramentas de desenvolvimento e banco de dados. A partir da Amazon e da Comunidade EC2 existem muitas AMI´s disponíveis, que podem conter tantos os sistemas operacionais da Microsoft quanto sistemas operacionais da família Linux e ferramentas de desenvolvimento da plataforma livre como o Apache, MySQL ou outra linguagem qualquer. Caso a AMI necessária não for encontrada, a própria Amazon disponibiliza através de um conjunto de ferramentas a possibilidade de criar essa máquina virtual a partir da necessidade do cliente. Uma AMI pode ser implementada em “instâncias” de diversos tamanhos. Existem vários tipos de instâncias, sendo algumas com mais memória, outras com mais CPU, cada uma indicada para um tipo de trabalho computacional. Toda administração e controle das instâncias podem ser feito tanto manualmente através de SSH ou outras ferramentas, como em um servidor dedicado tradicional, como também através das API’s da Amazon EC2. Existem hoje inúmeras ferramentas para facilitar o gerenciamento de instâncias EC2. Por exemplo, há uma extensão do Firefox chamada Elasticfox que pode ser usada para gerenciar e ativar AMI´s diretamente a partir do Firefox [9]. A possibilidade e flexibilidade de escolha de diversos tipos de distribuição de sistemas operacionais Linux e também de várias versões do Windows é uma das grandes vantagens da EC2. A escolha entre diversos tipos de linguagens e aplicações também é um fator relevante, pois podemos rodar desde Java, PHP, Python, Ruby, até bancos de dados mais complexos como demandam estudos recentes sobre aplicações do banco de dados da IBM sobre a nuvem em cima da plataforma AWS. Abaixo serão descritos a título de exemplo e para um melhor entendimento do que realmente o produto oferece, algumas das instâncias que podem atender uma ampla gama de aplicações: [10] 4.2) Tipos de Instâncias: 4.2.1) Standard Instances: Instâncias dessa família podem ser apropriadas facilmente a várias aplicações. Small Instance (Default) 1.7 GB of memory, 1 EC2 Compute Unit (1 virtual core with 1 EC2 Compute Unit), 160 GB of local instance storage, 32-bit platform. Large Instance 7.5 GB of memory, 4 EC2 Compute Units (2 virtual cores with 2 EC2 Compute Units each), 850 GB of local instance storage, 64-bit platform. Extra Large Instance 15 GB of memory, 8 EC2 Compute Units (4 virtual cores with 2 EC2 Compute Units each), 1690 GB of local instance storage, 64-bit platform. 4.2.2) Micro Instances: Instâncias dessa família disponibilizam uma pequena quantidade de recursos de CPU e permitem a capacidade de explosão de CPU´s quando ciclos adicionais de CPU´s estão disponíveis. Elas são apropriadas para aplicações de baixa velocidade e Web Sites que consumem ciclos computacionais periodicamente. Micro Instance 613 MB of memory, up to 2 ECUs (for short periodic bursts), EBS storage only, 32-bit or 64-bit platform. 4.2.3) High-Memory Instances: Instâncias dessa família oferecem larga capacidade de memória para aplicações de alta velocidade, incluindo bancos de dados e aplicações que fazem cache de memória. High-Memory Extra Large Instance 17.1 GB memory, 6.5 ECU (2 virtual cores with 3.25 EC2 Compute Units each), 420 GB of local instance storage, 64-bit platform. High-Memory Double Extra Large Instance 34.2 GB of memory, 13 EC2 Compute Units (4 virtual cores with 3.25 EC2 Compute Units each), 850 GB of local instance storage, 64-bit platform. High-Memory Quadruple Extra Large Instance 68.4 GB of memory, 26 EC2 Compute Units (8 virtual cores with 3.25 EC2 Compute Units each), 1690 GB of local instance storage, 64-bit platform. 4.2.4) High-CPU Instances: Instâncias dessa família têm CPU e memória proporcionais e são oferecidas para aplicações que exijam computação intensiva. High-CPU Medium Instance 1.7 GB of memory, 5 EC2 Compute Units (2 virtual cores with 2.5 EC2 Compute Units each), 350 GB of local instance storage, 32-bit platform. High-CPU Extra Large Instance 7 GB of memory, 20 EC2 Compute Units (8 virtual cores with 2.5 EC2 Compute Units each), 1690 GB of local instance storage, 64-bit platform. 4.2.5) Cluster Compute Instances: Instâncias dessa família provêm altas taxas de CPU incrementadas ao alto desempenho de rede e são apropriadas para aplicações de computação de alto desempenho (HPC) e outras aplicações que demandem alta disponibilidade de rede. Cluster Compute Quadruple Extra Large 23 GB memory, 33.5 EC2 Compute Units, 1690 GB of local instance storage, 64-bit platform, 10 Gigabit Ethernet. EC2 Compute Unit (ECU) – One EC2 Compute Unit (ECU) provides the equivalent CPU capacity of a 1.0-1.2 GHz 2007 Opteron or 2007 Xeon processor. As figuras abaixo representam a gama de aplicações e sistemas operacionais oferecidos nas instâncias da Elastic Compute Cloud EC2. Figura 9 – Gama de sistemas operacionais para que se possa obter uma AMI dentro da EC2. Figura 10 – Aplicativos / Bancos de dados disponíveis na plataforma EC2 Figura 11 – Alguns Servidores de aplicação e ferramentas de desenvolvimento para EC2. 5) Análises Comparativas. A Plataforma de serviços do Google Apps proporciona uma gama ampla de aplicações já acessíveis e prontas para o uso comercial. Mostra-se uma aplicação mais simples e de fácil entendimento para o uso dos usuários finais. Praticamente não há necessidade de se desenvolver nada. Facilita o acesso a informações como dados e arquivos de usuários (file Server, agendas on-line e e-mail). A possibilidade de desenvolvimento de sites dinâmicos e a grande facilidade de acessar esses conteúdos tornam a ferramenta uma forte tendência para empresas nos próximos anos. A capacidade para o armazenamento de grandes quantidades de contas de e-mail torna-se uma opção de baixo custo e de fácil utilização para pequenas e médias empresas. A grande capacidade de armazenamento de dados e quase ininterrupta disponibilidade do serviço, atraem bastante as empresas, porém quando falamos em corporações de maior porte, acredito que a ferramenta de e-mail seja, por enquanto, o serviço por eles oferecido mais coerente nesse contexto. Com certeza podemos afirmar que as demais aplicações da plataforma ainda estão um tanto quanto básicas para a utilização em grandes corporações, mas perfeita para empresas de médio e pequeno porte, que não se utilizam de documentos de controle muito apurados, sendo sua principal preocupação o acesso ao e-mail e compartilhamento de arquivos de imagens, áudio e vídeo em qualquer lugar, sem nenhuma restrição e a um custo muito acessível. Os serviços oferecidos pelas ferramentas da Plataforma Azure da Microsoft se mostram mais profissionais e voltadas ao público corporativo que vê na Nuvem uma forma de hospedar as aplicações da empresa sem se preocupar com projetos e infra-estrutura local para DataCenters que demandam muito investimento e constante atualização e manutenção. O foco dessa ferramenta é mais voltado para o desenvolvimento e hosting de aplicações críticas. Levando em conta essa premissa voltada ao negócio, é possível desenvolver aplicações dentro do sistema operacional Azure utilizando as características do já conhecido SQL Server para hospedar toda massa de dados e transações dentro da Nuvem oferecida por ela em conjunto com ferramentas também conhecidas, como o Visual Studio. É notória a preocupação da Microsoft em tornar cada vez mais populares suas aplicações, oferecendo dentro das características da plataforma a integração de contas de email do Hotmail, agendas de contatos e as demais ferramentas do Windows Live Services. Essa característica visa o uso em massa, já que serviços como Messenger e Hotmail já estão impregnados no mercado corporativo e amplamente utilizados por usuários domésticos no mundo todo. A integração destes serviços e a grande capacidade de armazenamento dos DataCenters da Microsoft aliados a capacidade de desenvolvimento de aplicações e hosting são a grande vantagem dessa ferramenta. Apesar de oferecer praticamente toda gama de serviços das demais plataformas, o foco e funcionalidade da plataforma de serviços da Amazon Web Services que oferece como principal ferramenta a Elastic Compute Cloud EC2 está mais voltada ao conceito de máquinas virtuais prontas para o uso, as AMI´s. Cada AMI pode ser criada a partir de uma imagem dentro dos DataCenters da Amazon que disponibiliza inclusive as ferramentas necessárias para atender a demanda do negócio. Várias opções são possíveis dentro dessa nuvem, entre elas, máquinas virtuais com a capacidade exata para atender a demanda, porém com poder de “elasticidade”, ou seja, explosão de recursos virtuais de hardware e software caso necessário. Outra grande vantagem dessa plataforma é a possibilidade de escolha entre as várias distribuições de sistemas operacionais da plataforma Linux e as várias versões dos sistemas operacionais da Microsoft. Dentro dessa capacidade, ainda podemos optar pela utilização de bancos de dados e ferramentas de desenvolvimentos já embutidas na AMI que atendam a necessidade conforme o negócio demandar. No que diz respeito às características gerais de todas as plataformas abordadas, o que se pode afirmar, é que a capacidade de elasticidade de todas elas e a redundância natural da internet aliados a vantagem de se ter um ambiente quase ininterrupto é o que mais atrai os Gestores de Tecnologia para as aplicações em Nuvens. Hoje já é realidade em grandes corporações nacionais e mundiais a imersão na Nuvem através do e-mail. Servidores como o próprio Exchange, amplamente utilizado em grandes empresas, estão sendo substituídos pela facilidade e baixo custo da manutenção em Nuvens como a do Google Apps. 6) Conclusão Ainda para a maioria das organizações, as plataformas de execução de serviços em Nuvens ainda parecem uma opção um tanto quanto exótica, entretanto, na medida em que vamos construindo nossas experiências no Google Apps, Windows Azure, Amazon Web Services com o Elastic Compute Cloud (EC2) essa nova abordagem começará a causar menos estranheza e desempenhará cada vez mais um papel importante no mundo dos softwares. Outras plataformas de menor porte, porém não de menor importância que também poderiam ser estudadas são: Rackspace, GoGrid e EngineYard.Todas provêm serviço de armazenamento de dados em massa na grande Nuvem, serviços de hosting e virtualização de máquinas na Nuvem. Levando em consideração todos esses fatores, e somando-se a constante atualização de dispositivos e ferramentas que garantam a segurança da informação em Ambientes Computacionais de Nuvens, devemos considerar uma forte tendência desse tipo de serviço ser cada vez mais utilizado em empresas e corporações pelo mundo inteiro. 7) Referências: [1] O que é Cloud Computing? (Computação nas nuvens), Por Emerson Alecrim, em 06.03.2010. http://www.infowester.com/cloudcomputing.php [2] Cloud Computing - Novo Modelo de Computação. Sisnema, 22.01.2009. http://sisnema.com.br/Materias/idmat019433.htm [3] Information Week – Editora it mídia - Computação em Nuvem – Edição de Agosto de 2009. [4] Benefícios do Google Apps. http://www.google.com.br/apps/intl/pt-BR/business/details.html [5] Afinal, o que é o Windows Azure? – WinAjuda – 25/10/2010. http://www.winajuda.com/artigos/afinal-o-que-e-o-windows-azure.html [6] Plataforma Windows Azure. http://msdn.microsoft.com/pt-br/windowsazure/default.aspx [7] David Chappell – Apresentando a Plataforma de Serviços Azure. http://msdn.microsoft.com/pt-br/windowsazure/default.aspx [8] What is AWS – Amazon Web Services. http://aws.amazon.com/what-is-aws/ [9] Amazon Web Services – Um ecossistema para quem quer flexibilidade. Por Diego Gomes, em 23.02.2010. http://escalabilidade.com/2010/02/23/escolhendo-sua-plataforma-de-cloud-computing-parte1-amazon-ec2/ [10] Amazon Elastic Compute Cloud (Amazon EC2). http://aws.amazon.com/ec2/