Post on 05-Aug-2015
UNIVERSIDADE REGIONAL DO NOROESTE DO ESTADO
DO RIO GRANDE DO SUL
CURSO DE BACHARELADO EM INFORMÁTICA –
SISTEMAS DE INFORMAÇÃO
Camila Cerezer Possobom
ESTUDO DE CASO: CLOUD COMPUTING -
COMPUTAÇÃO EM NUVEM
Monografia apresentada ao Curso de Bacharelado em Informática – Sistemas de Informação da Universidade Regional do Noroeste do Estado do Rio Grande do Sul de Ijuí, para a obtenção do título de Bacharel em Informática – Sistemas de Informação.
Edson Luiz Padoin
Ijuí/RS, Novembro de 2010
ESTUDO DE CASO: CLOUD COMPUTING -
COMPUTAÇÃO EM NUVEM
Camila Cerezer Possobom
Esta Monografia foi julgada adequada para a obtenção do título de Bacharel em Informática – Sistemas de Informação e aprovada em sua forma final pelo Curso de Bacharelado em Informática – Sistemas de Informação.
______________________________________
Edson Luiz Padoin (Orientador)
Banca Examinadora
______________________________________
Marcos Ronaldo Melo Cavalheiro
Universidade Regional do Noroeste do Estado do Rio Grande do Sul – UNIJUÍ Curso Superior em Informática – Sistemas de Informação - Campus Ijuí Reitor:
Gilmar Antônio Bedin Vice-Reitores:
Antonia Carvalho Bussmann Telmo Rudi Frantz Martinho Luis Kelm
Chefe do Departamento de Tecnologia Prof. Ms. Edson Luiz Padoin
Coordenador do Curso de Informática – Sistemas de Informação Prof. Ms. Edson Luiz Padoin
Coordenador da Disciplina de Trabalho de Conclusão de Curso - Campus Ijuí Prof . Ms. Marcos Ronaldo Melo Cavalheiro
Banca Avaliadora composta por: Data da defesa: 16/12/2010 Prof. Ms. Edson Luiz Padoin (Orientador) Prof. Ms. Marcos Ronaldo Melo Cavalheiro
CIP – Catalogação na Publicação
Endereço: Universidade Regional do Noroeste do Estado do Rio Grande do Sul Campus Ijuí Rua São Francisco, 501 – Bairro São Geraldo CEP 98700-000 Ijuí – RS - Brasil
Possobom, Camila Cerezer
Trabalho de Conclusão de Curso (Graduação em Informática - Sistemas de Informações). Universidade Regional do Noroeste do Estado do Rio Grande do Sul, 2010.
1. Introdução. 2. Conceituando Computação em Nuvem. 3. Modelos de Implantação de Computação em Nuvem. 4. Modelos de Serviços na Computação em Nuvem. 5. Estudo de Caso: Provedores de Serviços de Computação em Nuvem.
"...É incansável buscar o conhecimento ! Interminável é sua procura !
Aos mestres, que nos abreviam esta procura ! O Reconhecimento sempre !!!!..."
Agradecimentos
Agradeço, primeiramente, a Deus pelas oportunidades que me foram oferecidas na
vida, principalmente por ter conhecido pessoas muito especiais e lugares diferentes, mas, além
disto, por estar sempre ao meu lado nas horas mais difíceis e me ajudando na conclusão deste
trabalho.
Não posso deixar de agradecer a toda a minha família, mas em especial aos meus pais
Ademir Luiz Possobom e Liane Cerezer Possobom, os responsáveis diretos pela minha
formação, sem os quais não estaria aqui, por terem me fornecido condições para me tornar
uma profissional, por me entenderem e me incentivarem a perseguir no que acredito, por mais
que isso traga restrições ao nosso convívio.
A minha avó Santina Menegazzi Cerezer, a qual me ajudou nas horas mais difíceis e me
incentivou muito para a conclusão deste curso.
Ao meu namorado Glauber e toda a família dele a Mari, o Marion, o Glauco e a avó
Otillia, pelo apoio recebido e pela compreensão nos momentos em eu mais precisei durante
toda a minha formação, as quais são pessoas muito especiais e fico muito feliz por eles
fazerem parte da minha vida.
Ao meu professor orientador Ms. Edson Luis Padoin pela sua disponibilidade, auxílio e
apoio.
Aos demais professores pelos anos de convivência e troca de informação, os quais
foram muito importantes na minha formação acadêmica.
A todos só posso dizer: Muito Obrigado!
Sumário
1. Introdução .............................................................................................................. 10
1.1 Objetivo Geral ....................................................................................................... 12
1.2 Organização do Trabalho ..................................................................................... 12
2. Conceituando Computação em Nuvem ............................................................... 14
2.1 Tecnologias Relevantes na Computação em Nuvem ............................................ 19
2.1.1 Recursos Compartilhados ................................................................................... 20
2.1.2 Escalabilidade ..................................................................................................... 20
2.1.3 Elasticidade ......................................................................................................... 21
2.1.4 Dispositivos de Acesso ....................................................................................... 22
2.1.5 Pay as you go ...................................................................................................... 22
2.1.7 Alta velocidade no acesso de banda larga .......................................................... 24
2.1.8 Os Dispositivos de Armazenamento................................................................... 25
2.1.9 As Tecnologias de Virtualização ........................................................................ 26
2.1.10 Orientada a serviços............................................................................................ 27
2.1.11 Pooling de Recursos ........................................................................................... 28
2.1.12 Serviço Medido .................................................................................................. 28
2.1.13 Service Level Agreement (SLA) ........................................................................ 29
2.1.14 Interoperabilidade ............................................................................................... 29
2.1.15 Portabilidade ....................................................................................................... 30
2.1.16 Integração ........................................................................................................... 30
2.1.17 Disponibilidade ................................................................................................... 31
2.1.18 Application Programming Interface (API) ......................................................... 31
2.1.19 Segurança............................................................................................................ 31
3. Modelos de Implantação de Computação em Nuvem ........................................ 35
3.1 Nuvens Públicas ............................................................................................... 36
3.2 Nuvens Privadas .............................................................................................. 38
3.3 Nuvens Híbridas .............................................................................................. 39
3.4 Comparativo entre os Modelos de Nuvens ...................................................... 41
4. Modelos de Serviços na Computação em Nuvem .................................................. 43
4.1 Infra-estrutura como Serviço (IaaS) ..................................................................... 48
4.2 Database-as-a-Service ........................................................................................... 50
4.3 Plataforma como Serviço (PaaS) .......................................................................... 52
4.4 Software como Serviço (SaaS) ............................................................................ 54
5. Análise de Caso: Provedores de Serviços de Computação em Nuvem ................ 57
5.1 Amazon Web Services .......................................................................................... 57
5.1.1 Elastic Compute Cloud (EC2) .................................................................................. 57
5.1.2 Simple Storage Solution (S3) .................................................................................. 60
5.1.3 Simple Queue Service (SQS) ................................................................................... 61
5.1.4 SimpleDB ................................................................................................................. 62
5.2 Eucalyptus ............................................................................................................. 63
5.3 Google ................................................................................................................... 64
5.3.1 Google Apps ............................................................................................................. 65
5.3.2 Google App Engine .................................................................................................. 66
5.4 IBM ....................................................................................................................... 68
5.5 Microsoft ............................................................................................................... 69
5.6 Salerforce .............................................................................................................. 73
5.7 Comparativo entre os Modelos de Serviços ......................................................... 75
6. Conclusão .................................................................................................................. 77
7. Referências Bibliográficas ....................................................................................... 79
Lista de Abreviaturas
TI – Tecnologia da Informação
IaaS – Infra-estrutura como Serviço
PaaS – Plataforma como Serviço
SaaS – Software como Serviço
SOA - Service Oriented Architecture (Arquitetura Orientada a serviço)
GB – Gigabytes
MB – Megabytes
KB – Kilobytes
GHz - Gigahertz
SGBD – Sistema de gerenciamento em Banco de Dados
API - Application Programming Interface
SLA - Service Level Agreement (Acordo de Nível de Serviço)
QoS – Qualidade de Serviço
VM – Virtual Machine (Máquina Virtual)
SO – Sistema Operacional
EC2 – Elastic Compute Cloud
AWS – Amazon Web Machine
AMI – Amazon Machine Instance
S3 – Simple Storage Solution
SQS – Simple Queue Service
SDB - SimpleDB
SOAP – Simple Object Access Protocol
GFS – Google File System
CPU - Unidade Central de Processamento
CRM - Gerenciamento de Relações com Clientes
PC - Computador Pessoal
Lista de Figuras
Figura 1. Evolução da Tecnologia (CAMBIUCCI, 2010) .................................................................... 15
Figura 2. Tipos de Nuvens (AMRHEIN, 2009) .................................................................................... 36
Figura 3. Nuvem Pública (MATHER, 2009) ........................................................................................ 37
Figura 4. Nuvem Híbrida (MATHER, 2009) ........................................................................................ 40
Figura 5. Os principais atores que estão relacionados com as camadas de aplicação, de plataforma e de intra-estrutura são, respectivamente, os usuários das nuvens, os prestadores de serviços e os prestadores de infra-estrutura (CHIRIGATI, 2009). ............................................................................. 44
Figura 6. Níveis de divisão da computação em nuvem segundo a ontologia proposta (AHRONOVITZ, 2010). .................................................................................................................................................... 46
Figura 7. Papéis na Computação em Nuvem (SOUZA, 2009).............................................................. 47
Figura 8. Modelos de Serviços (SOUZA, 2009) ................................................................................... 48
Figura 9. Aplicativos de Trabalho no Google Apps (LUIZ, 2010) ....................................................... 66
Figura 10. Serviços oferecidos no Windows Azure (ZUNINO, 2008) ................................................. 71
Figura 11. Tamanhos das instâncias no Windows Azure (CAMBIUCCI, 2010).................................. 72
10
1. Introdução
O setor da Tecnologia da Informação (TI) vem sofrendo muitas transformações nos
últimos anos. A virtualização e computação em nuvem, ou também tem pessoas usando o
termo computação na nuvem ou computação nas nuvens, quaisquer destes termos são achados
na web referindo-se todos ao mesmo conceito, estas duas tecnologias estão sendo as principais
estratégias em tecnologia nas empresas.
As evoluções constantes da tecnologia e das telecomunicações estão fazendo com que
o acesso à internet se torne cada vez mais amplo e mais rápido. Em países mais desenvolvidos
como Japão, Estados Unidos e Alemanha, é possível ter acesso rápido à internet pagando-se
muito pouco. Estes fatos criam uma situação perfeita para a difusão da computação em
nuvem, embora esse conceito esteja tornando-se conhecido no mundo todo, inclusive no
Brasil (PRADO, 2010).
Não há dúvidas de que esta evolução esteja ligada diretamente à evolução dos
processadores e ao crescimento da internet banda larga. A idéia de computação em nuvem não
pode ser considerada uma nova tecnologia, mas sim uma nova aplicação da internet a um
conceito que existia desde os primórdios da computação. O modelo computacional dos
datacenters começou com os mainframes em 1960. Posteriormente, os microcomputadores
surgiram no mercado e uma busca constante por altas capacidades de armazenamento se
estabeleceu. As estruturas computacionais baseadas nos mainframes e nos computadores
pessoais podem ser vistas como modelos de datacenters. O primeiro, como um modelo mais
concentrado e o segundo, como um modelo distribuído. Esta fase foi seguida pelos sistemas
distribuídos baseados no modelo cliente/servidor e, consequentemente, pelo crescimento
explosivo da internet e da web. Mais recentemente, a evolução das técnicas de virtualização
tem propiciado o desenvolvimento de aplicações que compartilham a mesma infra-estrutura
de hardware, alavancando o surgimento de soluções para serviços em nuvem (VERDI, 2010).
Cada vez mais o processamento e o armazenamento estão sendo movidos dos
computadores pessoais para grandes provedores de serviços, sendo que, o usuário não precisa
saber em que local estes dados estão sendo processados e armazenados, pois tudo fica na
nuvem. Fotos, vídeos e aplicações que antes eram armazenadas e processadas nos
11
computadores, agora migram para serem hospedadas e processadas por provedores sob o
formato de serviços web.
A computação em nuvem pode ser visto como um estágio mais evoluído da
virtualização, pois tem a possibilidade de virtualizar e compartilhar recursos entre diferentes
aplicativos para uma melhor utilização do servidor (TAURION, 2009).
Com a disseminação da internet, a computação em nuvem é a sua evolução natural.
Agora que temos tecnologia para transmitir dados em grande quantidade para qualquer ponto
do planeta, o que as empresas estão fazendo é “terceirizando” suas necessidades
computacionais para os grandes datacenters que são capazes de realizar as operações com
mais velocidade. Computação em nuvem é a computação considerada como um serviço, ou
seja, é considerada como um software. Você não compra hardware ou software, mas você o
aluga e paga apenas pelo que utilizar (FUGULIN, 2010).
De modo que, a computação em nuvem é a evolução da infra-estrutura de internet,
então como exemplo, vamos supor que existe uma empresa de vendas on-line ou de qualquer
outra atividade que necessite de uma infra-estrutura de hospedagem, a empresa precisa
adequar sua estrutura cada vez que a demanda aumenta, para acompanhar este crescimento
precisa-se investir em infra-estrutura o que custaria muito dinheiro e tempo. E se por acaso a
demanda for pontual esta estrutura toda torna-se ociosa, desperdiçando recursos importantes.
Com a computação em nuvem, a empresa tem acesso instantâneo a milhares de servidores
disponíveis na nuvem, sendo possível contratar mais recursos de processamento, espaço e
memória a qualquer instante, além de ser mais seguro, pois a tecnologia responde
imediatamente em caso de falhas movendo suas aplicações automaticamente garantindo
estabilidade.
Gartner avalia que o serviço de computação em nuvem em todo o mundo movimentou
US$ 56,3 bilhões no ano de 2009, chegando a US$ 153 bilhões em 2013. Com estes números,
podemos dizer que o conceito está evoluindo gradativamente (TAURION, 2009).
12
1.1 Objetivo Geral
O objetivo deste trabalho é elaborar uma pesquisa bibliográfica, na qual pretende-se
mostrar que a tecnologia está sempre em constantes mudanças e inovações, através do
esclarecimento do conceito de Computação em nuvem e suas funcionalidades, conforme
concepções apresentadas por diversos autores. Para isso, articulamos os conceitos de
computação em nuvem com os seus vários aplicativos e serviços já existentes.
Na computação em nuvem, os servidores podem ser compartilhados por sistemas
operacionais e aplicativos para ser melhor utilizados pelos servidores, reduzindo os custos.
Com o resultado desta pesquisa, se tem como objetivo principal trazer conhecimentos e
esclarecimentos referentes à computação em nuvem e também estabelecer um comparativo
entre os modelos de serviços que as empresas estão oferecendo no mercado, para que este
trabalho sirva de referência para desenvolvimento e aquisições futuras em aplicações na
nuvem.
1.2 Organização do Trabalho
No Capítulo 2 são apresentadas a evolução nas empresas do ramo de negócios atuais,
em seguida são introduzidos alguns conceitos de tecnologias relevantes para melhor
compreensão da computação em nuvem e logo após é inserido os conceitos e as opiniões de
diversos autores, dessa tecnologia que já esta inserida no mercado e se tornando a melhor
estratégia de negócios para as empresas no contexto da atualidade.
No Capítulo 3 trata dos quatro tipos de implantações de serviços na computação em
nuvem por grau de compartilhamento entre as nuvens empresarias, a nuvem pública, nuvem
privada e nuvem híbrida, por fim é feito um comparativo entre elas.
No Capítulo 4 está sendo abordado os modelos de serviços disponíveis para a
computação em nuvem. O modelo de banco de dados utilizado pela computação em nuvem
que se chama Database-as-a-Service (DaaS). Então a arquitetura da computação em nuvem
esta divida em camadas abstratas, primeiro temos a camada de infra-estrutura (IaaS). Na
13
camada acima temos a de plataforma (PaaS). E por fim temos a camada de arquitetura na sua
forma mais abstrata que é as aplicações (SaaS).
No capítulo 5 nos traz os conceitos de provedores de serviços na computação em
nuvem, cada um com seus devidos conceitos, por fim um comparativo entre os modelos de
serviços.
Por fim, são apresentadas as conclusões, trabalhos futuros e referências bibliográficas.
14
2. Conceituando Computação em Nuvem
Para entender o que é a computação em nuvem, é importante compreender como este
modelo de computação evoluiu. Como Alvin Toffler observa em seu famoso livro, “The
Third Wave” (Bantam, 1980), a civilização progrediu em ondas, sendo que, a primeira onda
foi em sociedades agrícolas, a segunda foi a era industrial e a terceira é a era da informação.
Dentro de cada onda, houveram fatos importantes. Neste pós-industrial da era de informação,
estamos agora no início do que muitas pessoas chamam de uma era da computação em nuvem
(MATHER, 2009).
Observando a Revolução Industrial e seu impacto na economia mundial, a própria
revolução não aconteceu de um dia para outro, mas sim através de uma série de mudanças.
Neste contexto se observarmos a internet, esta também tem se desenvolvido através de uma
sequência de mudanças. E a computação em nuvem é o assunto do momento (MATHER,
2009).
Então, vive-se o auge da era de informação, com os avanços da tecnologia, e também
com a introdução de tantos meios onde a informação torna-se cada vez mais acessível.
Desde a década de 90 que os grandes negócios mundiais estão sendo impulsionados
pela TI computacional. Isto acontece porque as empresas atualmente estão em um mercado
novo com desenvolvimentos tecnológicos muito grandes e rápidos (LIMA, 2009).
O cenário de negócios atual exige das empresas maior velocidade, flexibilidade e
consistência na implantação de suas estratégias para sobrevivência e crescimento. A execução
destas estratégias envolve certas etapas que competem por recursos (humanos, financeiros e
materiais) com as atividades rotineiras da organização, aumentando a complexidade da gestão
empresarial (ESCOBAR, 2009).
A inovação possibilita que a empresa cresça no mercado, aumente sua lucratividade,
enfrente a concorrência de maneira igual e se mantenha adequada no mercado, ou seja, seus
produtos, processos e práticas de marketing em permanente sintonia com as necessidades dos
15
seus clientes. É preciso inovar e renovar a organização do empreendimento e acelerar e
aumentar a produtividade (VERAS, 2009).
Então esta evolução de negócio ágil, de dispositivos e de tecnologias elas ocorrem ao
longo do tempo e isso acontece quando diferentes abordagens para construção de arquiteturas
direcionam a TI. De acordo com a visão de Waldemir Cambiucci arquiteto de Soluções
Microsoft Brasil, essa evolução ao longo do tempo se deu de dez em dez anos, onde para cada
período tem-se um destaque em especial, como mostra a Figura 1.
Figura 1. Evolução da Tecnologia (CAMBIUCCI, 2010)
• Nos anos de 1970, nós podemos observar que a visão da tecnologia era
centralizada, com aplicações monolíticas que exigia uma grande expertise para
programação, coordenação e administração deste ambiente.
• Nos anos de 1980, temos uma computação pessoal surgindo e com uma visão do
cliente/servidor, com o foco mais descentralizado, distribuído e tinha também o
usuário com poder de controle e de acesso na máquina desktop.
• Nos anos de 1990, é consolidada a visão da web, de fato as pessoas começam a se
conectar e a partir daí, obtemos a própria web tornando-se uma plataforma para
novos sistemas e novas aplicações.
1970 1980 1990 2000 2009+
16
• Nesses últimos anos, temos muitas discussões em volta de serviços e então
Waldemir Cambiucci fala de SOA (Service Oriented Architecture), esta arquitetura
orientada para serviços tem sido uma visão perseguida por várias empresas. Que
basicamente buscam a diminuição de custo operacional, a consolidação de
funcionalidades, a maior eficiência na operação de TI e a reutilização de recursos
implementados.
• Então depois de SOA, vai ter-se uma maturidade de serviços locais que as
aplicações já consomem, mas também será consumido serviços remotos, aonde
vem a aplicação do conceito de computação em nuvem.
Então pode-se destacar um fator complicador hoje em dia é que as mudanças ocorrem
muito rápido. Analisando o mundo atual e comparando com alguns anos atrás, quando não
havia o Google, Wikipédia, Orkut, iPhones e outros...e até hoje ela esta em constante
mudanças em um tempo mais curto para elas ocorrerem (TAURION, 2009).
E neste contexto de atualidade, que precisamos de uma infra-estrutura que permita que
o negócio seja tão flexível quanto à demanda do mercado. Daí então surgiu o conceito de
computação em nuvem. O qual refere-se à utilização da memória, das capacidades de
armazenamento, cálculo de computadores, servidores compartilhados e interligados por meio
da internet, ainda implementa o conceito de virtualização permitindo que estes computadores
fiquem interligados os quais geram uma imagem de um super computador (TAURION,
2009).
Então, a computação em nuvem surgiu como um novo modelo de computação
distribuída que aproveita conceitos de clusters e grids, além de basear-se nos avanços de
técnicas de virtualização conquistados nos últimos anos. O conceito de “nuvem” surge da
disposição física dos elementos envolvidos no modelo. Em outras palavras, os servidores que
hospedam dados e aplicativos ficam localizados em datacenters de empresas de qualquer
parte do mundo, o que nos leva à necessidade de um termo que abstraia esta localização. Para
tal, adotou-se o termo “nuvem”, significando então, um emaranhado de servidores disponíveis
via internet (PIGATTO, 2009).
17
De acordo com Andy Bechtolsheim (2008):
“O modelo de computação em nuvem é a quinta geração da computação, depois do mainframe, PC (Personal Computer), modelo cliente/servidor e web. Trata-se de uma evolução do modelo cliente/servidor, diferindo na distribuição do processamento, o qual é em grande parte centralizado no servidor remoto, cabendo ao terminal cliente efetuar pequenas tarefas de processamento locais” (PIGATTO, 2009).
Computação em nuvem, portanto, trata-se da utilização de softwares ou sistemas em
rede e da capacidade de prover recursos sob demanda ao usuário. Desta maneira, as
informações são permanentemente armazenadas em servidores na internet (localizados na
“nuvem”), sendo realizadas caches destes dados em computadores desktops, notebooks,
dispositivos móveis, entre outros, os quais estarão fazendo uso da infra-estrutura em nuvem
(PIGATTO, 2009).
O termo computação em nuvem, como qualquer novo termo, possui várias definições
possíveis, muito embora todas relativamente parecidas. O mais importante é entendermos que
a definição do conceito está ainda em evolução e novas definições poderão surgir. O trabalho
(Vaquero et al. 2009) faz uma análise das definições utilizadas na literatura atual e adota a
seguinte opção:
“Computação em Nuvem é um conjunto de recursos virtuais facilmente usáveis e acessíveis tais como hardware, plataformas de desenvolvimento e serviços. Estes recursos podem ser dinamicamente re-configurados para se ajustarem a uma carga variável, permitindo a otimização do uso dos recursos. Este conjunto de recursos é tipicamente explorado através de um modelo pay-per-use com garantias oferecidas pelo provedor através de acordos de nível de serviço (Service Level Agreements-SLAs)” (VERDI, 2010).
De acordo com Antônio Carlos Pina, líder técnico do projeto “Cloud Computing da
Tecla Internet”, de quatro anos pra cá, fala-se muito em computação em nuvem, desde então,
vários fornecedores se apropriaram da expressão computação em nuvem e suas variantes
(IaaS, PaaS, SaaS) para vender seus serviços. Fornecedores com diferentes plataformas
competem, isto é ótimo, pois a longo prazo, quem ganhará com esse movimento é o usuário
que poderá escolher o serviço do fornecedor que melhor atender suas demandas (PINA,
2010).
18
Antônio Carlos Pina ainda diz que, no ponto de vista do usuário, computação em
nuvem nada mais é, do que o fornecimento de serviços via internet pagos pelo uso. É muito
parecido com a eletricidade nos tempos atuais (Utility Computing), se o usuário usa muito
paga muito, se usa pouco paga pouco. E o usuário não precisou investir em geração própria
(geradores) para ter acesso a eletricidade, pois a companhia elétrica já faz isso (PINA, 2010).
É comum referir-se ao modelo como Utility Computing (computação como uma
utilidade), o que significa que o usuário poderá acessar aplicações de negócios online, a partir
de qualquer dispositivo virtualmente disponível, mediante um pagamento por uso.
Neste mesmo contexto, com a nuvem, o usuário não investe na compra de
computadores e infra-estrutura em geral (switches, roteadores, etc.), mas utiliza os
dispositivos na nuvem. O fornecedor de computação em nuvem possui uma estrutura
escalável e elástica, daí então consegue cobrar apenas o que foi demandado desta grande
estrutura (PINA, 2010).
Tratando-se especificamente da definição, ainda não se tem uma definição amplamente
aceita. Esta definição a baixo é do mais recente projeto da
NIST Trabalho de Definição de Cloud Computing publicado por os EUA Governo Instituto
Nacional de Padrões e tecnologia e pode ser encontrado no seguinte endereço:
http://csrc.nist.gov/groups/SNS/cloud-computing/
“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 gerencial ou interação com o provedor de serviços” (SOUZA, 2009).
Já (Armbrust et al. 2009) propõem a seguinte definição:
“A computação em nuvem é um conjunto de serviços de rede ativados, proporcionando escalabilidade, qualidade de serviço, infra-estrutura barata de computação sob demanda e que pode ser acessada de uma forma simples e pervasiva” (SOUZA, 2009).
19
Gartner afirma que:
“A computação em nuvem é como um estilo de computação onde capacidades de TI altamente escaláveis são fornecidas como um serviço para consumidores externos usando tecnologias de internet” (FREZENDE, 2009).
O termo computação em nuvem estará sendo considerado nas estratégias de tecnologia
de informações das empresas e dos prestadores de serviço. Estamos ainda no início da
computação em nuvem, por ser um tema muito recente, ainda existe muito desconhecimento.
Mas com certeza este termo computação em nuvem no futuro vai transformar o modo como
as empresas operam sua TI (TAURION, 2009).
2.1 Tecnologias Relevantes na Computação em Nuvem
O conceito de computação em nuvem, já não é mais tão abstrato como era há um
tempo. Hoje é possível não somente armazenar dados online, mas também trabalhar em uma
máquina remota, acessível de qualquer lugar e disponível o tempo todo, como se o usuário
estivesse levando seu computador sempre junto. Não é mais necessário preocupar-se com
hardware, sistema operacional ou aplicativos instalados. Até mesmo o backup passa a ser
uma preocupação a menos, já que a maioria das empresas fornece planos para garantir a
segurança e integridade dos seus dados (JOBSTRAIBIZER, 2010)
De fato a computação em nuvem não é vista como uma nova tecnologia, mas sim a
combinação de muitas tecnologias já existentes. Essas tecnologias têm amadurecido a ritmos
diferentes, em diferentes contextos e não foram concebidos como um todo coerente, no
entanto, elas se uniram para criar um ecossistema para a computação em nuvem. Novos
avanços tecnológicos em transformações como, a tecnologia de virtualização, discos de
armazenamento, acesso à internet de banda larga e rápida, servidores baratos, então se uniram
para fazer a nuvem uma solução mais atraente (MATHER, 2009).
O entusiasmo com a computação em nuvem se deve às inúmeras vantagens que ele
pode oferecer tanto aos fornecedores de tecnologia quanto aos usuários.
Em primeiro lugar, este é um modelo que prevê um melhor aproveitamento dos
investimentos em hardware. Um dos pilares da computação em nuvem é a consolidação dos
20
recursos de hardware para que eles possam ser aproveitados ao máximo e gerenciados de
forma inteligente, proporcionando economia de custos (MOREIRA, 2009).
Então nos próximos subtítulos abordaremos as tecnologias relevantes que fazem parte
desta evolução computacional, chamada de computação em nuvem, com definições
apresentadas por alguns autores.
2.1.1 Recursos Compartilhados
Ao contrário dos modelos anteriores de computação, que assumiram recursos
dedicados (isto é, a instalações dedicadas a um único usuário ou proprietário), a computação
em nuvem é baseada em um modelo de negócio em que os recursos são partilhados (isto é,
vários usuários usam o mesmo recurso) no nível de rede (MATHER, 2009).
De acordo com NIST, a proposta do modelo de computação em nuvem é ter uma
aplicação atendendo a múltiplos clientes, chamados de tenants ou inquilinos. Inquilinos não
são usuários individuais, mas empresas clientes do software. Uma arquitetura multi-inquilino
é essencial para a computação em nuvem pois permite que múltiplos inquilinos compartilhem
recursos físicos comuns (hardware e software), mas permanecendo logicamente isolados.
Recusos compartilhados é comum na maioria dos sistemas baseados em nuvem
(AHRONOVITZ, 2010).
2.1.2 Escalabilidade
Embora as organizações possam ter centenas ou milhares de sistemas, a computação
em nuvem fornece a capacidade de escala a dezenas de milhares de sistemas, bem como a
capacidade de massividade de escala, de banda e espaço de armazenamento (MATHER,
2009).
Se o usuário é surpreendido por uma demanda repentina, a computação em nuvem
pode ajudá-lo a gerenciar. Ao invés de ter que comprar, instalar e configurar novos
equipamentos, o usuário pode comprar os ciclos da CPU ou armazenamento de um terceiro.
Uma vez que os custos são baseados no consumo, provavelmente não teria de pagar tanto
21
como se tivesse que comprar o equipamento. Depois de ter cumprido a necessidade de
equipamento adicional, basta parar de usar o prestador de serviços em nuvem e o usuário não
terá que lidar com equipamentos desnecessários. Irá simplesmente adicionar ou subtrair com
base na necessidade da sua organização (RUSCHEL, 2008).
A escalabilidade é uma característica fundamental na computação em nuvem. As
nuvens de serviço e as plataformas oferecidas podem ser dimensionadas por vários fatores,
tais como a localizações geográficas, desempenho ou configurações. As aplicações
desenvolvidas para uma nuvem precisam ser escaláveis, de forma que os recursos utilizados
possam ser ampliados ou reduzidos de acordo com a demanda. Para que isso seja possível, as
aplicações e os dados devem ser flexíveis o suficiente. Porém, tornar estes dados “elásticos”
não tem sido uma tarefa muito fácil, dependendo da sua implementação (CHIRIGATI, 2009);
2.1.3 Elasticidade
Dimensionamento rápido e automático para a escalabilidade, freqüentemente
aparentando possuir recursos ilimitados. Os recursos podem ser adquiridos de forma rápida e
elástica, em alguns casos automaticamente, caso haja a necessidade de escalar com o aumento
da demanda e liberados, na retração dessa demanda. Para os usuários, os recursos disponíveis
para uso parecem ser ilimitados e podem ser adquiridos em qualquer quantidade e a qualquer
momento. O que ajuda muito na característica de elasticidade rápida na computação em
nuvem é a virtualização, criando várias instâncias de recursos requisitados utilizando um
único recurso real. Virtualização é a criação de ambientes virtuais com o propósito de abstrair
características físicas do hardware, podendo emular vários sistemas operacionais em uma
única plataforma computacional (AHRONOVITZ, 2010).
A elasticidade é definida como a capacidade de dimensionar os recursos, conforme
necessário. Para o consumidor, a nuvem parece ser infinita e o consumidor pode comprar
muita ou pouca potência de computação, como for necessário. Esta é uma das características
essenciais de computação em nuvem, na definição do NIST. (AHRONOVITZ, 2010).
22
2.1.4 Dispositivos de Acesso
A gama de dispositivos de acesso para a nuvem tem se expandido nos últimos anos.
Computadores domésticos, computadores empresariais, computadores pessoais, dispositivos
de telefonia móvel, dispositivos móveis personalizados, todos estão online. Curiosamente, o
crescimento do iPhone e da proliferação de aplicações disponíveis a partir de sua App Store
ilustra uma melhoria em termos de acesso à nuvem. Este maior acesso está resultando em uma
maior utilização e crescimento dos serviços utilizados na nuvem. Por exemplo, você pode
agora utilizar o Skype através do iPhone e outros dispositivos móveis, trazendo esta rede mais
próximo dos usuários, e a Salesforce.com lançou uma aplicação que permite aos usuários
acessar seus serviços a partir do iPhone, assim como muitos outros fornecedores. (MATHER,
2009).
Computadores de baixo custo para o usuário, aqui está uma vantagem quantitativa
financeira. Na qual o usuário não precisa de um computador potente (e, portanto, de alto
preço) precisa sim de um computador para executar a computação em nuvem que é baseado
nas aplicações da web. Como o aplicativo é executado na nuvem, o computador não precisa
do poder de processamento e espaço em disco rígido exigido pelo software tradicional. Por
isso os computadores de clientes em computação em nuvem pode ser de menor custo, com
menos discos rígidos, menos memória, processadores mais eficientes, e assim por diante. Na
verdade, um computador de usuário neste cenário nem sequer precisa de um drive de CD ou
DVD, porque não existem programas de software a serem carregados e os arquivos de
documentos não precisam ser salvos (MILLER, 2009)
2.1.5 Pay as you go
Este termo pay as you go refere-se que, os usuários irão pagar apenas os recursos que
eles realmente irão usar e só o tempo que lhes impõem os valores (MATHER, 2009).
O usuário tem um melhor controle de gastos ao usar aplicativos, pois a maioria dos
sistemas de computação em nuvem fornece aplicações gratuitamente e, quando não gratuitas,
são pagas somente pelo tempo de utilização dos recursos. Não é necessário pagar por uma
licença integral de uso de software (DELMIRO, 2010).
23
Embora pesquisas em computação tenham investigado vários modelos econômicos de
infra-estrutura computacional durante a última década, a computação em nuvem tem uma
abordagem mais aplicada aos negócios e relacionada ao custo. Assim, a computação em
nuvem apresenta diversos modelos de preço, sendo estes organizados em três grupos: preço
diferenciado, preços por unidade e assinatura de serviços básicos. Preço diferenciado é o
modelo adotado pela Amazon, onde os serviços são oferecidos em vários níveis de
especificações, tais como alocação de memória e tipo de CPU, o valor cobrado é um preço
específico por unidade de tempo. Preço por unidade é normalmente aplicado a dados
transferidos ou ao uso de memória. Este modelo é mais flexível do que o de preço
diferenciado, já que permite aos usuários personalizarem a alocação de memória de seus
sistemas baseados nas necessidades de aplicações específicas. O modelo de assinatura de
serviços básicos é o modelo de preços mais amplamente utilizado, permitindo aos usuários
preverem suas despesas previamente na utilização de um serviço. Contudo, este modelo não
tem a precisão em cobrar dos usuários o que eles têm realmente utilizado (SOUZA, 2009).
2.1.6 Auto Serviço sob demanda
O usuário pode adquirir unilateralmente recurso computacional, como tempo de
processamento no servidor ou armazenamento na rede na medida em que necessite e sem
precisar de interação humana com os provedores de cada serviço. Dentro de uma nuvem, o
hardware e o software podem ser automaticamente reconfigurados e estas modificações são
apresentadas de forma transparente para os usuários, que possuem perfis diferentes e assim
podem personalizar os seus ambientes computacionais, por exemplo, a configuração de rede
para a definição de determinados privilégios, instalação de algum software (RUSCHEL,
2008).
Os usuários provisionam a utilização de recursos, tais como sistemas complementares
(capacidade de processamento, software, recursos de armazenamento) e da rede (MATHER,
2009).
A computação em nuvem é um sistema autônomo gerenciado de forma transparente
para os usuários. Hardware e software dentro de nuvens podem ser automaticamente
reconfigurados, orquestrados e estas modificações são apresentadas ao usuário como uma
24
imagem única. Essa autonomia é importante, pois reduz o custo de equipe de monitoramento
do sistema tanto no âmbito centralizado quanto distribuído (Birman et al. 2009). Comparados
com sistemas tradicionais, é possível identificar três fatores complexos: intervenção humana
limitada, alta alternância na carga de processamento e uma variedade de infra-estruturas
compartilhadas. Na maioria dos casos, não existem administradores de sistemas para ajudar os
desenvolvedores que acessam a nuvem, fazendo com que a plataforma seja automatizada ao
máximo e os usuários podem variar a carga de trabalho habitual, necessitando de uma infra-
estrutura de virtualização eficaz. A gerência também é importante no contexto do
desenvolvimento de tecnologia de auto-sintonia. Assim sendo, técnicas adaptativas e online
deverão ser desenvolvidas para tornar estes sistemas viáveis (Aboulnaga et al. 2009)
(SOUZA, 2009).
Os usuários não são mais confrontados com a escolha entre software obsoleto e
atualização de alta despesas. Quando o aplicativo é baseado na web, as atualizações
acontecem automaticamente e são disponibilizados na próxima vez que o usuário ocupar a
nuvem. Sempre que o usuário acessar um aplicação baseado na web, ele está recebendo a
versão mais recente, sem a necessidade de pagar ou fazer o download de uma atualização
(MILLER, 2009).
2.1.7 Alta velocidade no acesso de banda larga
Um componente crítico da nuvem é a rede banda larga, que oferece os meios para
contato entre os componentes e proporciona uma das diferenças substanciais a partir do
conceito de Utility Computing de trinta anos atrás. Acesso à banda larga é hoje amplamente
disponível, especialmente em áreas metropolitanas. O acesso generalizado sem fio (por
exemplo, Wi-Fi, celular, emergentes WiMAX) está disponível, e estabelece dispositivos
móveis como pontos de entrada para os recursos de TI da empresa e da nuvem (MATHER,
2009).
Uma vez que não se pode exigir que os sistemas que constituem uma nuvem sejam da
mesma tecnologia. Os recursos estão disponíveis através da rede e acessados por meio de
mecanismos que promovam o padrão utilizado por plataformas heterogêneas (por exemplo,
telefones celulares, laptops e PDAs). A interface de acesso a nuvem não obriga os usuários a
25
mudarem suas condições e ambientes de trabalho, como por exemplo, linguagens de
programação e sistema operacional. Já os softwares clientes instalados localmente para o
acesso à nuvem são leves, como um navegador de internet (RUSCHEL, 2008).
2.1.8 Os Dispositivos de Armazenamento
Diminuir os custos de armazenamento e a flexibilidade com que o armazenamento
pode ser implantado mudou o conceito de armazenamento. O dispositivo de armazenamento
fixo de acesso direto (DASD) foi substituído por redes de armazenamento (SANs), que
reduziram os custos e permitiram muito mais flexibilidade em armazenamento no sistema
corporativo. SAN software gerencia a integração dos dispositivos de armazenamento e pode
independentemente alocar espaço de armazenamento sob demanda através de um número de
dispositivos (MATHER, 2009).
Vamos olhar mais para o que ocorre quando um computador não tem espaço para
armazenar e executar uma tonelada de aplicativos baseados em software. Com menos
programas sobrecarregando a memória do computador, os usuários verão melhor o
desempenho de seus computadores. Simplificando, computadores em um sistema de
computação em nuvem irão arrancar mais rápido e terão maior velocidade, porque eles têm
menos programas e processos carregados na memória (MILLER, 2009).
A nuvem oferece capacidade de armazenamento praticamente ilimitada. Considere
quando o seu computador está funcionando fora do espaço de armazenamento. Por exemplo,
um computador com 200 GB de disco rígido é muito pouco, quando comparado com as
centenas de petabytes (um milhão de gigabytes), disponíveis na nuvem. Tudo que é preciso
armazenar é possível, mas não podemos esquecer que a quantidade de dados armazenados
acarreta em valores pagos aos provedores de serviços de nuvem (MILLER, 2009).
O gerenciamento de dados é considerado um ponto crítico no contexto de computação
em nuvem. Os SGBDs relacionais não possuem escalabilidade quando milhares de sítios são
considerados (Weiet al. 2009). Assim, aspectos de armazenamento de dados, processamento
de consultas e controle transacional tem sido flexibilizados por algumas abordagens para
garantir a escalabilidade, mas ainda não existem soluções que combinem estes aspectos de
26
forma a melhorar o desempenho sem comprometer a consistência dos dados (Abadi, 2009).
Existe diversas abordagens para gerenciar dados em nuvens, dentre as quais podemos citar o
Microsoft Azure e HBase (Brantner et al. 2008). Um aspecto importante é o trade-off entre
funcionalidades e custos operacionais enfrentados pelos provedores de serviços. Os serviços
em nuvem para dados oferecem APIs mais restritas do que os SGBD relacionais, com uma
linguagem minimalista de consulta e garantia de consistência limitada (Abouzeid et al. 2009).
Isso exige mais esforço de programação dos desenvolvedores, mas permite aos provedores
construírem serviços mais previsíveis e oferecerem SLA. De acordo com (Armbrust et al.
2009), a criação de um sistema de armazenamento que combina os diversos aspectos de
computação em nuvem, de forma a aumentar a escalabilidade, a disponibilidade e
consistência dos dados é um problema de pesquisa em aberto (SOUZA, 2009).
2.1.9 As Tecnologias de Virtualização
A virtualização é uma plataforma tecnológica fundamental para promover a
computação em nuvem. O termo virtualização refere-se à abstração de recursos
computacionais (CPU, armazenamento, memória, rede, pilha de aplicativos e banco de dados)
de aplicações e usuários finais que utilizam o serviço. Fornece a capacidade de reunir recursos
para ser disponibilizado e acessível a qualquer pessoa autorizada a utilizá-las através de
métodos padronizados (MATHER, 2009).
É um arquivo (geralmente chamado de uma imagem) que, quando executado, olha
para o usuário como uma máquina real. A infra-estrutura como serviço muitas vezes é
fornecido como uma imagem de máquina virtual que pode ser iniciado ou parado, conforme
necessário (AHRONOVITZ, 2010).
A virtualização é uma técnica de projeto fundamental para todas as arquiteturas em
nuvem. Em computação em nuvem se refere principalmente à virtualização de plataforma. A
virtualização permite que os servidores, dispositivos de armazenamento e outros
equipamentos devem ser tratados como um conjunto de recursos, em vez de sistemas
discretos, de modo que esses recursos podem ser alocados por demanda. Na computação em
nuvem, estamos interessados em técnicas tais como virtualização, que permite que um único
27
servidor pode ser tratado como vários servidores virtuais, uma aglomeração, o que permite
múltiplos servidores serem tratados como um único servidor (MATHER, 2009).
O uso de nível de sistema operacional virtualizado ou de particionamento (como
LPARs, vPars, nPars, Sistema Dinâmico de domínios e assim por diante) nas arquiteturas em
nuvem pode ajudar a resolver alguns problemas do centro de segurança, privacidade e
questões regulatórias que poderiam dificultar a adoção de computação em nuvem (SUN,
2009).
Por exemplo, a virtualização do sistema operacional, como o previsto pelo Solaris
Containers torna possível manter um modelo de implantação de um aplicativo por servidor,
ao mesmo tempo se usa compartilhamento de recursos de hardware. De modo que, estes
isolam os aplicativos de software e serviços com limites definidos por software e permitem
que muitos ambientes de execução privados possam ser criados em uma única instância do
Solaris OS. Cada ambiente tem sua própria identidade, separado do hardware subjacente, de
modo que se comporta como se estivesse rodando em seu próprio sistema. Isso torna possível
para reduzir as despesas administrativas, a complexidade do gerenciamento de múltiplos
sistemas operacionais e a melhor utilização, ao mesmo tempo (SUN, 2009).
2.1.10 Orientada a serviços
Abstração e acessibilidade são dois pontos chaves para atingir a concepção de serviço
orientado. Através da virtualização e outras tecnologias, a arquitetura subjacente é abstraída
sem se expor muito ao usuário. A abstração reduz tanto a necessidade do usuário para
aprender detalhes da arquitetura sobre a nuvem e do limiar de aplicação de desenvolvimento.
Ao mesmo tempo, os elementos chave da arquitetura subjacente podem ser simplesmente
acessados pelo usuário da nuvem. O usuário pode facilmente explorar parâmetros do sistema,
tais como o desempenho de processamento e capacidade de armazenamento. Em geral, de
acordo com o tipo de capacidade, os serviços de computação em nuvem são amplamente
divididos em três categorias: Infra-estrutura como Serviço (IaaS), Plataforma como Serviço
(PaaS), e Software como Serviço (SaaS). Então, o usuário não precisa se preocupar com a
estrutura para executar a aplicação: hardware, procedimentos de backup, controle de
28
segurança, manutenção, entre outros, ficam de forma abstrata para o cliente, porém quem é
responsável por esta infra-estrutura é o fornecedor de serviço (RUSCHEL, 2008).
Na maioria das vezes o usuário não precisa se preocupar com o sistema operacional e
hardware que está usando em seu computador pessoal, podendo acessar seus dados na nuvem
computacional. A possibilidade de acessar arquivos a partir de qualquer lugar é o que mais
chama a atenção na computação em nuvem. Um dos motivos que tem feito o modelo
alavancar é a melhoria contínua dos serviços de internet, hoje está cada vez mais fácil de obter
acesso e estar online em tempo integral. Isso faz com que novos serviços possam ser
centralizados na web (CAROLINY, 2010).
O trabalho corporativo e o compartilhamento de arquivos se tornam mais fáceis, uma
vez que todas as informações se encontram no mesmo lugar, ou seja, na nuvem (CAROLINY,
2010).
2.1.11 Pooling de Recursos
O provedor de recursos de computação é agrupado para atender vários consumidores
através de um modelo multi-tenant ou também conhecido como Multi-Inquilino, com
diferentes recursos físicos e virtuais atribuídos dinamicamente e novamente de acordo com a
demanda do consumidor. Há um senso de independência local em que o cliente geralmente
não tem nenhum controle ou conhecimento sobre a localização exata dos recursos
disponibilizados, mas pode ser capaz de especificar o local em um nível maior de abstração
(por exemplo, país, estado ou do data Center). Exemplos de recursos incluem o
armazenamento, processamento, memória, largura de banda de rede e máquinas virtuais
(RUSCHEL, 2008).
2.1.12 Serviço Medido
Os sistemas em nuvem automaticamente controlam e otimizam a utilização dos
recursos, alavancando a capacidade de medição em algum nível de abstração adequado para o
tipo de serviço (por exemplo, armazenamento, processamento, largura de banda, e contas de
usuários ativos). Uso de recursos pode ser monitorado, controlado e relatado a existência de
29
transparência para o fornecedor e o consumidor do serviço utilizado. Podemos monitorar e
controlar o uso de recursos, garantindo a transparência para o provedor e o usuário do serviço
utilizado. Utiliza-se a abordagem baseada em nível de serviço SLA (Services Level
Agreement) para garantir a qualidade de serviço (QoS). O SLA fornece informações sobre os
níveis de disponibilidade, funcionalidade, desempenho ou outros atributos do serviço como o
faturamento e até mesmo penalidades em caso de violação destes níveis (RUSCHEL, 2008).
A computação em nuvem reduz bastante os custos com hardware e manutenção de
software para organizações de todos os tamanhos. Em primeiro lugar, o hardware. Com
menos hardware (servidores a menos) necessários na organização, os custos de manutenção
são imediatamente reduzidos. Quanto à manutenção de software, devemos lembrar que todas
as aplicações em nuvem são baseados em outros lugares, portanto não há software em
computadores da organização para a equipe de TI manter (MILLER, 2009).
2.1.13 Service Level Agreement (SLA)
Um SLA é um contrato entre prestador de serviço e um consumidor, que especifica as
exigências dos consumidores e o empenho do provedor para eles. Normalmente, um SLA
inclui itens como tempo de atividade, privacidade, segurança e procedimentos de backup
(AHRONOVITZ, 2010).
A política é um termo geral para um procedimento operacional. Por exemplo, uma
política de segurança pode especificar que todos os pedidos para um serviço na nuvem
particular devem ser criptografada (AHRONOVITZ, 2010).
A governança diz respeito aos controles e processos que garantem que políticas serão
aplicadas (AHRONOVITZ, 2010).
2.1.14 Interoperabilidade
A interoperabilidade está preocupada com a capacidade dos sistemas de se comunicar
entre eles. Ela exige que a informação comunicada seja compreendida pelo sistema de
recepção. No mundo da computação em nuvem, isso significa a capacidade de escrever
30
código que trabalha com mais de um fornecedor de nuvem simultaneamente,
independentemente das diferenças entre os prestadores de serviços (AHRONOVITZ, 2010).
A interoperabilidade diz respeito à capacidade dos usuários de executar os seus
programas e os seus dados em diferentes nuvens e plataformas. Isso permite, por exemplo,
que as aplicações não fiquem restritas a somente uma nuvem. Essa é uma característica
amplamente desejável no ambiente da computação em nuvem. Ultimamente, muitas
aplicações têm sido desenvolvidas considerando esse fator. Porém, ainda há a necessidade da
implementação de padrões e interfaces para que essa portabilidade seja possível
(CHIRIGATI, 2009).
Empresas de desenvolvimento de software têm interesse que aplicações possam ser
transferidas para a nuvem de forma simples. Essas empresas também esperam que exista
interoperabilidade entre diferentes serviços de nuvem, como por exemplo, entre serviços de
armazenamento. As APIs da Amazon estão se tornando um padrão de fato para serviços sob
demanda [OpenCloud 2009]. Contudo, a quantidade de tecnologias envolvidas é muito
grande, tornando-se um desafio padronizar as diversas interfaces e serviços (Brandic 2009)
(SOUZA, 2009).
2.1.15 Portabilidade
Portabilidade é a capacidade de executar os componentes ou sistemas de escrita de um
ambiente para outro ambiente. No mundo da computação em nuvem, este inclui ambientes de
software e hardware (físico e virtual) (AHRONOVITZ, 2010).
2.1.16 Integração
A integração é o processo de combinação de componentes na nuvem ou sistemas em
um sistema global. A integração entre os componentes baseados na nuvem e sistemas pode ser
complicado por questões como multiplas locações e regulamentos da federação dos governos
(AHRONOVITZ, 2010).
31
2.1.17 Disponibilidade
Dependendo do fornecedor, o usuário pode contar com alta disponibilidade, já que, se,
por exemplo, um servidor para de funcionar, os demais que fazem parte da estrutura
continuam a oferecer o serviço (RUSCHEL, 2008).
Os usuários da computação em nuvem possuem uma grande preocupação com a
questão da disponibilidade dos serviços. Eles esperam que as aplicações estejam sempre
disponíveis, ou seja, em execução durante todo o tempo, principalmente nos momentos
necessários. Esse tipo de problema pode ser prejudicial aos usuários quando os mesmos
possuem um ponto único de falha, ou seja, uma única nuvem com as suas aplicações e os seus
dados. Portanto, uma alternativa é ter mais de um prestador e, conseqüentemente, mais de
uma nuvem, o que permite aos usuários executar seus programas em uma nuvem enquanto a
outra apresenta problemas técnicos (CHIRIGATI, 2009).
2.1.18 Application Programming Interface (API)
É uma programação de aplicações interface é um contrato que diz para o
desenvolvedor escrever código para interagir com algum tipo de sistema. A API descreve a
sintaxe das operações apoiadas pelo sistema. Para cada operação, a API especifica as
informações que devem ser enviadas para o sistema, a informação de que o sistema irá enviar
de volta, e qualquer condições de erro que possam ocorrer (AHRONOVITZ, 2010).
2.1.19 Segurança
Um dos maiores desafios da computação em nuvem é a segurança, pois este modelo
utiliza a internet para disponibilizar seus serviços. Com isso, os usuários desconhecem tanto a
localização exata de seus dados quanto à fonte destes. Assim, devem existir formas para
impedir o acesso não autorizado a informações e que os dados sensíveis permaneçam
privados, pois estes serão processados fora da empresa. Questões de segurança devem ser
consideradas para prover a autenticidade, confiabilidade e integridade (SOUZA, 2009).
32
Um sistema é dito confiável se ele não falha com freqüência e, mais importante, se ele
não perde os dados ao falhar (SUN 2009a). As aplicações desenvolvidas para a computação
em nuvem devem ser confiáveis, ou seja, elas devem possuir uma arquitetura que permita que
os dados permaneçam intactos mesmo que haja falhas ou erros em um ou mais servidores ou
máquinas virtuais sobre os quais essas aplicações estão decompostas. Essa característica está
associada à realização de cópias de segurança dos dados. O armazenamento dessas cópias
deve ser feito em local seguro para que, caso haja alguma falha nas aplicações e elas percam
os dados, estes, ou pelo menos uma parte deles, possam ser recuperados (CHIRIGATI, 2009);
A disponibilidade de serviços permite os usuários acessar e utilizar a nuvem onde e
quando quiserem. Como se trata da internet pode ocorrer atrasos e sistemas indisponíveis. Os
ambientes de computação em nuvem devem possuir alta disponibilidade. Portanto, estes
podem utilizar técnicas de balanceamento de carga dinâmico e composição de nuvens de
forma a atender as 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 (SOUZA,
2009).
O fato de juntar todas estas tecnologias, que evoluíram de forma independente, geram
muitos problemas que ainda precisam ser resolvidos. A computação em nuvem é uma
tecnologia recente e esta em contínua evolução por isso ainda veremos muitas mudanças e
transformações (TAURION, 2009).
Um ponto adicional de atenção é a questão da plataforma de computação em nuvem
ser aberta ou proprietária (é portanto, fechada). Até o momento, as ofertas de nuvem, como o
Amazon Web Services, Salesforce e o Google Docs, são proprietárias. Isto significa que, por
exemplo, só pode-se usar o Google Docs na nuvem do Google e não em nenhuma outra
nuvem, como as nuvens da Yahoo ou Microsoft. Esta limitação às tecnologias proprietárias
gera o aprisionamento do usuário, restringindo sua liberdade de migrar de uma nuvem para
outra (VELTE, 2010).
Ainda não surgiram propostas de nuvens abertas que permitam a portabilidade de
aplicações entre os diversos fornecedores de serviços de computação em nuvem. Entretanto,
33
recentemente começaram a surgir alguns movimentos em direção a um padrão aberto para
interoperabilidade entre nuvens e foi, inclusive, criado um manifesto, chamado “OpenCloud
Manifesto” (www.opencloudmanifesto.org) que se propõe a aglutinar empresas em torno da
especificação de um padrão aberto para a computação em nuvem (TAURION, 2009).
O OpenCloud Manifesto estabelece um conjunto de princípios, denominados
princípios para nuvens abertas, que asseguram que as organizações que usarem nuvens
computacionais não ficarão restritas a padrões fechados, mas terão liberdade de escolha,
flexibilidade e abertura para não ficarem aprisionadas a uma nuvem. Embora a computação
em nuvem traga claros benefícios, existe o potencial de aprisionamento e perda de
flexibilidade, caso padrões abertos não sejam adotados. Dentro de dois meses após o seu
anúncio, mais de 250 organizações assinaram como patrocinadores. Esta atividade do grupo é
feito à luz de seis princípios do Open Cloud Manifesto, os quais estão descritos a seguir:
(AHRONOVITZ, 2010)
1. Os fornecedores de serviços em nuvem devem trabalhar juntos para garantir
que os desafios para adoção da nuvem (segurança, integração, portabilidade,
interoperabilidade, governança / gestão, medição / monitoramento) sejam
abordados através de colaboração aberta e ao uso adequado de normas.
2. Os fornecedores de serviços em nuvem não devem usar sua posição no
mercado em forma de bloqueio de clientes em suas plataformas específicas e
não devem limitar a sua escolha de fornecedores.
3. Os prestadores de serviço na computação em nuvem devem usar e adotar as
normas existentes, sempre que adequadas. A indústria de TI tem investido
fortemente em padrões existentes e as normas das organizações, não há
necessidade de duplicar ou reinventar elas.
4. Quando novos padrões (ou a adaptação às normas existentes) são
necessários, temos de ser criteriosos e pragmáticos para evitar a criação de
muitas normas. Devemos garantir que as normas promovam a inovação e
não inibi-la.
5. Qualquer esforço da comunidade em torno da nuvem aberta deve ser
impulsionada por necessidades do cliente, não apenas as necessidades
34
técnicas dos provedores de computação em nuvem, e devem ser verificados
em relação às necessidades reais dos clientes.
6. Os padrões de computação em nuvem em organizações, grupos de
advocacia e nas comunidades devem trabalhar em conjunto e coordenado,
certificando-se que os interesses não estão em conflito.
De forma que o modelo de computação em nuvem é composto, tipicamente, pelas
tecnologias mostradas anteriormente, três modelos de implantação na nuvem e três modelos
de serviços, conforme serão descritos nas próximas seções.
35
3. Modelos de Implantação de Computação em Nuvem
Tratando-se do acesso a da disponibilidade de ambientes de computação em nuvem,
tem-se tipos diferentes de implantação. A restrição ou abertura de acesso depende do processo
de negócios, do tipo de informação e do nível de visão desejado. Pode-se perceber que certas
empresas não desejam que todos os usuários possam acessar e utilizar determinados recursos
no seu ambiente de computação em nuvem. Dessa forma, surge a necessidade da criação de
ambientes mais restritos, onde somente alguns usuários devidamente autorizados possam
utilizar os serviços providos. Então neste sentido, podemos de afirmar que existem três tipos
de ofertas de computação em nuvem (TAURION, 2009).
O termo nuvem é uma metáfora usada para a internet e é uma representação simplificada da complexidade que esta se encontra, onde dispositivos são interconectados formando a internet. Nuvens privadas e públicas são subconjuntos da internet e são definidas com base na relação do usuário com a empresa. Nuvens privadas e nuvens públicas também podem ser referidas como nuvens internas ou externas, a diferenciação é baseado na relação da nuvem com a empresa (MATHER, 2009).
Os conceitos de nuvens públicas e privadas são importantes porque suportam a
computação em nuvem, que permite o provisionamento da dinâmica, são escaláveis e
possuem recursos virtualizados através da internet. Os usuários finais que utilizam os serviços
oferecidos via computação em nuvem pode não ter conhecimento, experiência, ou controle
sobre a infra-estrutura tecnológica que os suporta (MATHER, 2009).
As ofertas são classificadas pelo grau de compartilhamento entre os setores de uma
empresa, que pode dividir a nuvem em três tipos básicos de implantação: público, privado e
híbrido. Como mostra a Figura 2.
36
Figura 2. Tipos de Nuvens (AMRHEIN, 2009)
3.1 Nuvens Públicas
Em termos simples, serviços de nuvem pública são caracterizados por estar disponível
para os clientes de um provedor de serviços terceirizado através da internet. O termo
"público" não significa sempre livre, mesmo que ele possa ser gratuito ou razoavelmente
barato de usar. Uma nuvem pública não significa que os dados de um usuário é publicamente
visível, fornecedores de nuvem pública normalmente fornecem um controle de acesso e
mecanismo para seus usuários. Nuvens públicas oferecem um custo, elástico efetivo para
implementar meios de soluções (AHRONOVITZ, 2010).
São serviços em nuvem fornecidos por terceiros (fornecedor). Elas existem além do
firewall da empresa e são completamente hospedadas e gerenciadas pelo provedor da nuvem
(AMRHEIN, 2009).
Uma nuvem pública pode estar sendo hospedada, operada e gerida por um fornecedor
terceirizado de um ou mais centro de dados. O serviço é oferecido a múltiplos clientes sobre
uma infra-estrutura em comum, ver na Figura 3 (MATHER, 2009).
37
Figura 3. Nuvem Pública (MATHER, 2009)
Taurion (2009), diz que estas nuvens públicas podem oferecer às empresas um acesso
rápido a infra-estruturas computacionais, com custos mínimos. Entretanto, alguns desafios
referentes à segurança, confiabilidade e portabilidade com outras nuvens são reais e precisam
ser endereçados corretamente.
As nuvens públicas tentam fornecer aos consumidores elementos de TI sem
problemas. Seja software, infra-estrutura de aplicativo ou infra-estrutura física, o provedor de
nuvem assume as responsabilidades de instalação, gerenciamento, fornecimento e manutenção
(AMRHEIN, 2009).
No modelo de implantação público, a infra-estrutura de nuvens é disponibilizada
para o público em geral, sendo acessado por qualquer usuário que conheça a localização do
serviço. Neste modelo de implantação não podem ser aplicadas restrições de acesso quanto ao
gerenciamento de redes, e menos ainda, aplicar técnicas de autenticação e autorização
(SOUZA, 2009).
Um dos benefícios das nuvens públicas é que elas podem ser muito maiores do que
uma nuvem privada, por exemplo, já que elas permitem uma maior escalabilidade dos
recursos. Essa característica evita a compra de equipamentos adicionais para resolver alguma
necessidade temporária, deslocando os riscos de infra-estrutura para os prestadores de infra-
estrutura da nuvem. Há ainda a possibilidade de destinar algumas porções da nuvem pública
38
para o uso exclusivo de um único usuário, criando o chamado datacenter privado virtual, que
provê a esse usuário uma maior visibilidade de toda a infra-estrutura (CHIRIGATI, 2009).
3.2 Nuvens Privadas
Taurion (2009) diz que nuvens privadas, também são chamadas de nuvens
empresariais, correspondem ao uso do conceito de nuvem computacional aplicado aos
servidores localizados internamente no firewall da empresa e são gerenciadas pelas mesmas.
As nuvens privadas são construídas exclusivamente para um único usuário.
Diferentemente de um datacenter privado virtual, a infra-estrutura utilizada pertence ao
usuário, e, portanto, ele possui total controle sobre como as aplicações são implementadas na
nuvem. Uma nuvem privada é, em geral, construída sobre um datacenter privado
(RUSCHEL, 2008).
Nuvens privadas diferem das nuvens públicas em que a rede, computação e
armazenamento de infra-estrutura associada com nuvens privadas é dedicado a uma única
organização e não é compartilhado com outras organizações. Como tal, uma variedade de
padrões de nuvens privadas surgiram: (MATHEL, 2009).
- Dedicado
Nuvens privadas hospedada em um centro de dados do cliente ou em uma instalação
que são operadas por departamentos internos de TI.
- Comunidade
Nuvens privadas localizadas nas instalações de terceiros, gerenciados e operados por
um vendedor que está vinculado por SLAs de costume e cláusulas contratuais, com segurança
e requisitos de conformidade.
No modelo de implantação comunidade ocorre o compartilhamento por diversas
empresas de uma nuvem, sendo esta suportada por uma comunidade específica que partilhou
seus interesses, tais como a missão, os requisitos de segurança, política e considerações sobre
flexibilidade. Este tipo de modelo de implantação pode existir localmente ou remotamente e
pode ser administrado por alguma empresa da comunidade ou por terceiros. Os membros que
39
fazem parte da comunidade possuem acesso aos dados e aplicativos na nuvem (SOUZA,
2009).
- Dirigido
Infra-estrutura em nuvem privada, de propriedade de um cliente e gerido por um
fornecedor.
Neste modelo de implantação são empregados políticas de acesso aos serviços. As
técnicas utilizadas para prover tais características podem ser em nível de gerenciamento de
redes, configurações dos provedores de serviços e a utilização de tecnologias de autenticação
e autorização. Um exemplo deste modelo seria o cenário de uma universidade e seus
departamentos. A universidade pode estar interessada em disponibilizar serviços para seus
departamentos e outros órgãos desta instituição não devem ter acesso a esses serviços
(RUSCHEL, 2008).
As nuvens privadas oferecem vantagens com relação à variedade pública. O controle
com granularidade mais baixa com relação a diversos recursos que formam a nuvem fornece a
uma empresa todas as opções de configuração disponíveis. Além disso, as nuvens privadas
são ideais quando o tipo de trabalho que está sendo realizado não é prático para a nuvem
pública, devido a preocupações com segurança e regulamentação (AMRHEIN, 2009).
Caso o usuário aumentar os recursos utilizados em sua nuvem privada, ele deve
adquirir novos equipamentos, como sistemas de armazenamento, por exemplo, já que a sua
nuvem está limitada à capacidade de seu sistema físico. Em uma nuvem pública, não há essa
necessidade, uma vez que, como os recursos são facilmente escaláveis, basta o usuário
reservar uma quantidade maior deles. Devido a essas diferenças, diz-se que as nuvens
públicas são mais adequadas para aplicações temporárias, enquanto que as nuvens privadas
são um ambiente mais apropriado a aplicações permanentes que demandam níveis específicos
de qualidade de serviço e de localização dos dados (CHIRIGATI, 2009).
3.3 Nuvens Híbridas
A nuvem híbrida ou mista se trata de uma combinação de nuvens públicas e privadas.
Essas nuvens seriam geralmente criadas pela empresa e as responsabilidades de
40
gerenciamento seriam divididas entre a empresa e o provedor de nuvem pública. A nuvem
híbrida usa serviços que estão no espaço público e privado (AMRHEIN, 2009).
Nesse sentido, uma empresa pode determinar os objetivos e necessidades de serviços e
obter os mesmos da nuvem pública ou privada, conforme apropriado. Uma nuvem híbrida
bem construída poderia atender processos seguros críticos para a missão, como o recebimento
de pagamentos de clientes, assim como aqueles secundários para os negócios, como
processamento de folha de pagamento de funcionários (AMRHEIN, 2009).
Com uma nuvem híbrida, as organizações podem executar serviços que não são
necessariamente exigidos pela empresa, ou seja, que possam ser repassadas para terceiros,
hospedando eles em uma nuvem pública e mantendo os aplicativos principais e dados
sensíveis da empresa em casa, na nuvem privada, ver Figura 4 (MATHER, 2009).
Figura 4. Nuvem Híbrida (MATHER, 2009)
A nuvem híbrida pode ter sua configuração descrita pela combinação de um
dispositivo local como um computador conectado a uma nuvem de serviços. Também pode
ser descrita com uma configuração que combina recursos virtuais e físicos como, por
exemplo, um ambiente virtual que requer servidores físicos, roteadores ou outro tipo de
hardware como um firewall ou um filtro de spam. (VIEIRA, 2009).
Para Paul Korzeniowski “o modelo de nuvem híbrida tenta unir o modelo de datacenter local convencional com a capacidade variável que esses modelos de nuvem oferecem. Uma empresa pode comprar capacidade de computação sob demanda para lidar com tráfego de web em uma grande promoção ou por uma iniciativa de pesquisa sob demanda. Ao invés de comprar hardware que roda com uma capacidade bem mais baixa na maioria das vezes, a
41
abordagem híbrida promete permitir que as empresas rodem seus próprios servidores com utilização mais alta, comprando capacidade de fluxo sob demanda” (DUARTE, 2009).
É válido destacar que as nuvens híbridas introduzem a complexidade de determinar a
maneira como as aplicações são distribuídas entre nuvens públicas e privadas. A relação entre
os dados e os recursos de processamento, por exemplo, deve ser considerada. Se uma
aplicação possui uma grande quantidade de dados, o seu processamento em uma nuvem
pública pode não ser favorável, já que passar esses dados de sua nuvem privada para uma
nuvem pública pode ser muito custoso (TAURION, 2009).
3.4 Comparativo entre os Modelos de Nuvens
Nuvem é uma palavra que está hoje no vocabulário de TI das maiores empresas
brasileiras. Mas questões como segurança e disponibilidade fazem com que as companhias
adotem uma dose extra de cautela. Tanto que o conceito ganhou algumas variações: existem
as nuvens públicas, as nuvens privadas e as nuvens híbridas. No primeiro caso, estão grandes
provedores de serviços – como a Amazon e o Google – cujos equipamentos, infra-estrutura ou
aplicações são compartilhados por milhares de clientes em todo o mundo, por intermédio da
internet. Já a nuvem privada é a que fica dentro do ambiente protegido (firewall) da empresa e
tem o acesso restrito, geralmente aos seus funcionários e parceiros de negócio (SPOSITO,
2009).
As nuvens públicas são as mais conhecidas e possuem um fácil acesso. Sendo que, em
alguns casos a sua utilização pode ser gratuita ou não, isto vai depender do tipo de serviço que
o usuário vai precisar.
Nestas nuvens públicas, os dados dos usuários são armazenados em provedores de
serviço, os quais são terceirizados, estes vão ser responsáveis pelo gerenciamento correto
destes dados, pelas instalações, pela manutenção e fornecimento de recursos de infra-estrutura
quando for solicitado pelo usuário.
As nuvens privadas são elaboradas para atender somente uma organização. Sendo
assim, esta tem total controle sobre as operações na nuvem.
42
Então podemos perceber que com uma nuvem híbrida, uma empresa tem sua nuvem
privada, com serviços em execução no seu firewall. No entanto, com as nuvens híbridas, é
possível o usuário acessar os dados armazenados fora do local da empresa através da nuvem
pública.
Este modelo de nuvem híbrida é útil quando uma organização quer ter o controle sobre
o armazenamento de dados, mas precisa de espaço adicional para arquivar os seus dados.
Então, a empresa vai ter a segurança e a supervisão da nuvem privada em suas redes, mas
pode armazenar os dados em excesso em uma nuvem escalável e sob demanda que é a nuvem
pública.
Com base em todas estas concepções mostradas por diversos autores, vamos
estabelecer um quadro comparativo das principais diferenças entre os modelos de nuvens
pública e privada.
NUVEM PÚBLICA NUVEM PRIVADA
- Vários usuários podem usá-las - São feitas para somente um usuário - Quem possui o controle é o provedor de serviços, pois é responsável pelo gerenciamento
- A organização é quem possui o controle total sobre as aplicações na nuvem
- Não pode ser implementadas políticas de acesso, mas é possível destinar algumas porções de nuvem pública para o uso exclusivo de um único usuário, criando um datacenter privado virtual, que provê ao usuário mais visibilidade de toda a infra-estrutura
- Pode ser implementadas políticas de acesso ao serviço (gerenciamento de rede, configuração dos provedores de serviço, utilização da tecnologia de autenticação e autorização)
- Recursos facilmente escaláveis e consequentemente maior escalabilidade
- Se o usuário precisar aumentar os recursos utilizados em sua nuvem privada ele deve adquirir novos equipamentos a sua infra-estrutura, aumentando assim os custos para manter sua nuvem
- Aplicações Temporárias - Aplicações Permanentes
Tabela 1. Comparação entre os Modelos de Nuvem Pública e Nuvem Privada
43
4. Modelos de Serviços na Computação em Nuvem No modelo de software tradicional as aplicações destes softwares são baseados em um
modelo com grandes custos de licenciamento inicial e anual e custos de suporte. Aumentar o
número de usuários pode aumentar o custo da base do pacote, devido a necessidade de
implementações de servidores adicionais de hardware e suporte de TI. Os custos do
licenciamento são muitas vezes com base em métricas que não estejam diretamente alinhados
com o uso (tipo de servidor, o número de CPUs, etc, ou alguma característica física) e não são
virtuais. Um pacote de software empresarial típico requer a implantação de hardware,
servidores e backup de rede e provisionamento para acomodar o número de usuários dentro e
fora dos campos. Arquitetura de segurança também é tributada em um esforço para proteger
este valioso recurso contra acesso não autorizado. Então nos softwares tradicional as
aplicações tendem a ser altamente customizável, que tem um custo em dólares e mão de obra
(MATHER, 2009).
Existem muitos tipos de serviços oferecidos pela computação e nuvem. Esta
diversidade de serviços é muito apropriada, pois permite que a empresa adquira os serviços
mais adequados às suas necessidades (TAURION, 2009).
Então, a arquitetura da computação em nuvem pode ser divida em três camadas
abstratas a mais baixa das camadas é a de infra-estrutura como serviço (IaaS), a segunda
camada é a de plataforma como serviço (PaaS) e última, a camada de software como serviço
(SaaS). Cada camada pode possuir seu gerenciamento ou monitoramento de forma
independente das outras camadas, melhorando a flexibilidade, reusabilidade e escalabilidade
no sentido de substituição ou adição de recursos computacionais sem afetar as outras camadas
(SOUZA, 2009).
Pode-se observar na Figura 5 as camadas de aplicações, de plataforma e de infra-
estrutura (RUSCHEL, 2008).
44
Figura 5. Os principais atores que estão relacionados com as camadas de aplicação, de plataforma e de intra-estrutura são, respectivamente, os usuários das nuvens, os prestadores de serviços e os
prestadores de infra-estrutura (CHIRIGATI, 2009).
De acordo cam a Figura 5, o prestador de serviços oferece o serviço para o
consumidor. A tarefa real do provedor varia dependendo do tipo de serviço:
• Para software como serviço (SaaS), o provedor instala, gerencia e mantém o
software. Independentemente disso, o consumidor não tem acesso à infra-
estrutura, eles podem acessar somente os pedidos.
• Para a plataforma como serviço (PaaS), o provedor gerencia a infra-estrutura
para a plataforma da nuvem, normalmente varia para o tipo de aplicação. O
consumidor não pode acessar a infra-estrutura sob o plataforma.
• Para a infra-estrutura como serviço (IaaS), o provedor mantém o
armazenamento, banco de dados de fila de mensagens, ou outro middleware,
ou o ambiente de hospedagem para máquinas virtuais. O consumidor utiliza o
serviço como se fosse um disco banco de dados, unidade de fila de mensagem,
mas eles não podem acessar o infra-estrutura que o hospeda.
No diagrama de prestador de serviços, na Figura 6, a camada mais baixa da pilha é o
firmware e hardware em que tudo se baseia e é composto pelo hardware e pelos componentes
de rede, os quais formam o esqueleto da nuvem. Acima disso é o kernel de software o qual
tem a possibilidade de ser implementado como um kernel de SO ou o gestor da máquina
45
virtual que hospeda a infra-estrutura sob a nuvem. Os recursos virtualizados e imagens
incluem os serviços básicos de computação em nuvem, como processamento, armazenamento
de energia e middleware. As imagens virtuais controlados pelo gerenciador VM (Virtual
Machine) incluem tanto as próprias imagens como os metadados necessários para gerenciá-los
(AHRONOVITZ, 2010).
É crucial para as operações do prestador de serviços é a camada de gestão. Em um
nível baixo de gestão exige a medição para determinar quem usa os serviços e que medida, o
provisionamento para determinar como os recursos são alocados para consumidores e
monitoramento para acompanhar o status do sistema e seus recursos. Em um nível superior, a
gestão envolve cobrança para recuperar os custos, planejamento de capacidade para garantir
que as exigências dos consumidores serão atingidos, gestão de SLA para garantir que os
termos de serviço acordado entre o fornecedor e o consumidor sejam respeitados e relatórios
para os administradores (AHRONOVITZ, 2010).
Segurança se aplica a todos os aspectos das operações do prestador de serviços. Abrir
normas aplicáveis às operações do provedor também. Um conjunto de normas bem
arredondadas, normas para simplificar as operações dentro do provedor e interoperabilidade
com outros prestadores de serviços (AHRONOVITZ, 2010).
46
Figura 6. Níveis de divisão da computação em nuvem segundo a ontologia proposta (AHRONOVITZ, 2010).
Para entender melhor a computação em nuvem, pode-se classificar os atores dos
modelos de acordo com os papéis desempenhados (Marinos e Briscoe, 2009). A Figura 7
ilustra estes papéis (SOUZA, 2009).
47
Figura 7. Papéis na Computação em Nuvem (SOUZA, 2009)
O provedor é responsável por disponibilizar, gerenciar e monitorar toda a estrutura
para a solução de computação em nuvem, deixando os desenvolvedores e usuários finais sem
esses tipos de responsabilidades. Para isso, o provedor fornece serviços nos três modelos de
serviços. Os desenvolvedores utilizam os recursos fornecidos e provêem serviços para
usuários finais. Esta organização em papéis ajuda a definir os atores e os seus diferentes
interesses. Os atores podem assumir vários papéis ao mesmo tempo de acordo com os
interesses, sendo que apenas o provedor fornece suporte a todos os modelos de serviços
(SOUZA, 2009).
Do ponto de vista de interação entre os três modelos de serviços, a IaaS fornece
recursos computacionais, seja de hardware ou software, para a PaaS, que por sua vez fornece
recursos, tecnologias e ferramentas para o desenvolvimento e execução dos serviços
implementados, a serem disponibilizados na visão de SaaS (SOUZA, 2009).
Então em ambientes de computação em nuvem pode-se ter três modelos de serviços.
Estes modelos são importantes, pois eles definem um padrão arquitetural para soluções em
computação em nuvem. A Figura 8 exibe estes modelos de serviços (Armbrust et al. 2009)
(SOUZA, 2009).
48
Figura 8. Modelos de Serviços (SOUZA, 2009)
4.1 Infra-estrutura como Serviço (IaaS)
O termo original foi criado em março de 2006 pelo economista Nicholas Carr e
chamava-se Hardware as a Service (HaaS), mas no final de 2006 começou a ser chamado de
pelas empresas como Infra-estrutura como Serviço (IaaS) e hoje é assim comumente
denominado. A idéia básica é que o usuário, em vez de adquirir e instalar servidores e
equipamentos de rede em um datacenter poderia usar estes recursos a partir de um provedor
externo. Mas, diferentemente dos modelos tradicionais de outsourcing, a computação em
nuvem não reserva um determinado recurso ao contratante, e sim aloca de forma dinâmica e
automática os seus recursos para atender aos requisitos de demanda do cliente (TAURION,
2009).
A capacidade prevista para o usuário é a prestação de transformação, armazenamento,
redes e outros recursos computacionais fundamentais que o usuário seja capaz de implantar e
executar programas arbitrários, que podem incluir sistemas operacionais e aplicativos. O
usuário não administra ou controla a infra-estrutura de nuvem subjacente, mas tem controle
sobre os sistemas operacionais, armazenamento, aplicativos implantados, e, eventualmente, o
controle limitado de componentes de rede selecionar (por exemplo, firewalls host)
(RUSCHEL, 2008).
49
A mais baixa das camadas é a de infra-estrutura (IaaS), através dela que os prestadores
de infra-estrutura disponibilizam os serviços de rede e armazenamento da nuvem. Nesta
camada temos os datacenters, clusters, desktops e outros recursos de hardware, podendo ter
recursos heterogêneos (RUSCHEL, 2008).
Portanto, se o usuário contrata uma solução de IaaS, contrata uma infra-estrutura
capaz de executar e hospedar seu software sobre o sistema operacional que o usuário escolher,
instalar, administrar e gerenciar. Maior controle igual maior responsabilidade. (CAMBIUCCI,
2010).
A IaaS traz os serviços oferecidos na camada de infra-estrutura, nestes serviços
podemos incluir servidores, roteadores, sistemas de armazenamento de dados, bancos de
dados e outros recursos de computação. O IaaS traz algumas características, como uma
interface única para administração da infra-estrutura, a aplicação API para interação com
hosts, switches, roteadores e o suporte para a adicionar novos equipamentos de forma simples
e transparente (RUSCHEL, 2008).
O termo IaaS refere-se a uma infra-estrutura computacional baseada em técnicas de
virtualização de recursos de computação. Esta infra-estrutura pode escalar dinamicamente,
aumentando ou diminuindo os recursos de acordo com as necessidades das aplicações
(SOUZA, 2009).
O modelo IaaS é semelhante a Utility Computing, em que a idéia básica é oferecer
serviços de computação. Ou seja, você paga pela quantidade de poder de processamento,
espaço em disco, o que você realmente consumir. IaaS é tipicamente um serviço associado
com a computação em nuvem e se refere a serviços online em que é abstraido do usuário os
detalhes da infra-estrutura, incluindo os recursos de computação física, localização,
particionamento de dados, escalonamento, segurança, backup, e assim por diante. Na
computação em nuvem, o fornecedor do serviço tem o controle completo da infra-estrutura.
(PIGATTO, 2009)
O nível de infra-estrutura de software fornece recursos fundamentais para camadas de
nível superior, permitindo a criação de novos ambientes de software ou novas aplicações. De
50
acordo com Youseff (2008), este nível pode ser organizado em: recursos computacionais,
armazenamento de dados e comunicação. (PIGATTO, 2009)
a) Recursos computacionais: Neste nível, máquinas virtuais (virtual machines) são
a melhor maneira de oferecer recursos computacionais, já que oferecem ao usuário
maior flexibilidade, uma vez que ele normalmente possui permissão total para o
uso da máquina virtual, estando apto a personalizar o software e obter maior
performance e eficiência.
b) Armazenamento de Dados: O segundo recurso de infra-estrutura é o
armazenamento de dados, o qual permite ao usuário armazenar seus dados em
discos remotos e acessá-los a qualquer momento e de qualquer lugar. Este serviço
é comumente conhecido como DaaS – Data-Storage as a Service
(Aramazenamento de Dados como Serviço).
c) Comunicação: Uma vez que a necessidade de garantia de QoS – Quality of
Service (Qualidade de Serviço) para uma rede de comunicação cresce ao tratar-se
de um sistema em nuvem, a comunicação se torna um componente vital da infra-
estrutura em questão. Em consequência disto, estes sistemas possuem a obrigação
de fornecer certas capacidades de comunicação “orientada a serviço”,
configuráveis, programáveis, previsíveis e confiáveis.
4.2 Database-as-a-Service
Taurion (2009) diz que banco de dados são essenciais a qualquer negócio hoje em dia.
Não é incomum vermos empresas com centenas ou milhares de diferentes bancos de dados,
muitas deles críticos às operações, suportados por diversos softwares de gerenciamento de
banco de dados, os SGBD. Cada banco de dados colocado em operação significa um aumento
nas tarefas de gestão, que envolvem integração, segurança, disponibilidade e desempenho
adequados. E conseqüentemente maiores os custos. Fica claro que esta proliferação de banco
de dados aumenta bastante a pressão por meios mais eficazes de gerenciamento.
Diante deste contexto, nada mais natural que o conceito de computação em nuvem seja
também uma alternativa à problemática do banco de dados. Surge então o modelo Database-
51
as-a-Service (DaaS) provendo banco de dados por demanda. Com o DaaS uma empresa usa
uma nuvem para armazenar e acessar informações sem se preocupar com a infra-estrutura que
vai suportar os banco de dados. Neste modelo o usuário paga pelo volume de dados
armazenado e pela quantidade de dados transmitidos de e para nuvem. Os custos de infra-
estrutura e suporte ficam a cargo do provedor da nuvem que mantém o DaaS (TAURION,
2009).
Ainda, conforme Taurion (2009), o modelo DaaS pode ser implementado por três
arquiteturas básicas.
a) Modelo de Container
Neste modelo o provedor fornece um container que representa uma coleção de
entidades heterogêneas, da mesma maneira que um banco de dados possui múltiplas tabelas.
Os programas acessam essas entidades nos containers. Esse modelo se adapta bem a empresas
de pequeno porte. Um exemplo desse modelo é o serviço SimpleDB oferecido pela Amazon.
b) Modelo de cópia compartilhada
Neste modelo uma mesma cópia do software de banco de dados residente na nuvem é
compartilhada por vários clientes, embora cada um deles possua seu próprio espaço de dados
(tabelas). O compartilhamento é do software de banco de dados e da infra-estrutura
computacional.
c) Modelo de cópia exclusiva
Neste modelo cada cliente tem sua própria cópia do software de banco de dados
residente na nuvem. A diferença em relação ao modelo tradicional é que os clientes
compartilham a mesma infra-estrutura computacional.
Já existem algumas ofertas interessantes de DaaS, mas a medida que o mercado
amadurecer surgirão outras alternativas. Hoje existe algumas ofertas pioneiras como o
SimpleDB da Amazon, o EnterpriseDB e MySQL, oferecidos em cima da nuvem Amazon.
52
Além disso, empresas tradicionais de banco de dados como a Oracle, IBM e Microsoft já
começaram a endereçar este mercado (TAURION, 2009).
O Google também entra neste serviço com a oferta BigTable, um componente do
Google AppEngine. O BigTable é um ambiente de banco de dados especializado, com
aplicações escritas em Python, que usa o próprio Google File System (GFS) como método de
armazenamento. Foi projetado para trabalhar com imensos volumes de dados, distribuídos em
vários nodos GFS. Na prática, utiliza o modelo container. Não suporta o modelo relacional e é
voltado para massiva base de dados (TAURION, 2009).
4.3 Plataforma como Serviço (PaaS)
A PaaS oferece uma infra-estrutura de alto nível de integração para implementar e testar
aplicações na nuvem. O usuário que é assinante em uma plataforma hospedada remotamente,
não administra ou controla a infra-estrutura subjacente, incluindo desenvolvimento de
aplicativos, de interfaces e de banco de dados, armazenamento, teste e assim por diante, mas
tem controle sobre as aplicações implantadas e, possivelmente, as configurações de aplicações
hospedadas nesta infra-estrutura. A PaaS fornece um sistema operacional, linguagens de
programação e ambientes de desenvolvimento para as aplicações, auxiliando a implementação
de softwares, já que contém ferramentas de desenvolvimento e colaboração entre
desenvolvedores (SOUZA, 2009).
Em geral, os desenvolvedores dispõem de ambientes escaláveis, mas eles têm que
aceitar algumas restrições sobre o tipo de software que se pode desenvolver. Do ponto de
vista do negócio, a PaaS permitirá aos usuários utilizarem serviços de terceiros, aumentando o
uso do modelo de suporte no qual os usuários se inscrevem para solicitações de serviços de TI
ou de resoluções de problemas pela web. Com isso, pode-se descentralizar uma carga de
trabalho e responsabilidades nas equipes de TI das empresas (SOUZA, 2009).
A camada de plataforma como serviço (PaaS) esta acima da camada de infra-estrutura
e provê os serviços para que as aplicações possam ser desenvolvidas, implementadas, testadas
e trazidas para o ambiente da nuvem pelos prestadores de serviços. Nesta camada de
desenvolvimento os usuários finais não têm acesso, sendo ela destinada aos usuários mais
53
experientes, ou seja, os desenvolvedores das soluções para computação em nuvem
(RUSCHEL, 2008).
De acordo com a proposta de Youseff (2008), neste segundo nível se encontra o
ambiente de software. Este nível é utilizado por desenvolvedores de aplicações para as
nuvens, que implementam e implantam suas aplicações diretamente na nuvem. Os provedores
destes serviços nas nuvens oferecem aos desenvolvedores um conjunto definido de APIs, as
quais facilitam a interação entre o ambiente e as aplicações em nuvem, assim como o aumento
da agilidade de implantação e o suporte à escalabilidade necessárias para tais aplicações. Um
exemplo deste tipo de serviço é o Google App Engine, o qual oferece um ambiente de
desenvolvimento nas linguagens de programação Python e Java e APIs que permitem
aplicações interagirem com a nuvem do Google (PIGATTO, 2009).
Os prestadores de serviços que produzem um PaaS, por exemplo, podem construir essa
plataforma considerando a integração de um sistema operacional, de um mediador, de
softwares de aplicação e de um ambiente de desenvolvimento. Os prestadores de serviços que
usarão essa plataforma vêem-na como uma Interface de Programação de Aplicativos, ou API.
Eles irão interagir com a plataforma através da API sem ter a preocupação de gerenciar e
escalar os recursos, o que torna o processo de desenvolvimento de aplicações mais rápido e
simples. Por outro lado, esses prestadores de serviços ficam limitados pelas capacidades que a
plataforma pode oferecer (CHIRIGATI, 2009).
De acordo com Anthony T. Velte em seu livro “Cloud Computing: A Practical
Approach” PaaS fornece todos os recursos necessários para construir aplicações e serviços
completos a partir da internet, sem precisar baixar ou instalar software. A arquitetura PaaS
oferece serviços que incluem design, desenvolvimento, testes, implantação e hospedagem.
Outros serviços oferecidos é a colaboração em equipe, integração de serviços web, banco de
dados integrados, segurança, escalabilidade, gerenciamento de estado, armazenamento e
controle de versão (VELTE, 2009).
Uma falha de PaaS é a falta de interoperabilidade e portabilidade entre os provedores.
Isto é, se você criar um aplicativo com um fornecedor de cloud e decidir ir para outro
provedor, você pode não ser capaz de fazer isso ou você vai ter que pagar um preço elevado.
54
Além disso, se o provedor sai do negócio, suas aplicações e seus dados serão perdidos.
(VELTE, 2009).
4.4 Software como Serviço (SaaS)
Em sua essência o SaaS, trata-se de uma forma de trabalho onde o software é
oferecido como serviço, assim, o usuário não precisa adquirir licenças de uso para instalação
ou até mesmo comprar computadores ou servidores para executá-lo. Nessa modalidade, paga-
se um valor periódico, somente pelos recursos utilizados e/ou pelo tempo de uso (PRADO,
2010).
O modelo SaaS é um modelo que entrega software como um serviço, de forma
diferente do modelo tradicional, no qual a empresa adquire uma licença de uso e instala o
software nos seus próprios servidores. Este modelo transforma a maneira como o software irá
ser comercializado. Com o SaaS, também não são mais necessários os contratos de
manutenção, pois essas atividades ficam a cargo do provedor e não mais da empresa. O
usuário passa apenas a usar o software, sem preocupar-se com as atividades de instalação,
manutenção e upgrades (TAURION, 2009).
Enquanto o SaaS transfere a responsabilidade da implementação e manutenção do
software para o provedor e libera recursos para outros projetos, a TI fica nas mãos do
fornecedor em questão de disponibilidade, segurança e outros pontos-chave (BIDDICK,
2010).
A idéia é que o usuário deixe de utilizar o software “de caixinha” ou “sob encomenda”
e passe a comprar software de acordo com suas necessidades. Por exemplo: Uma empresa de
dez pessoas no lugar de encomendar um software pode pagar uma taxa mensal para usar um
software com a quantidade de usuários que ela precisa. Essas mensalidades são relativamente
baixas e se encaixam melhor na realidade de pequenas e médias empresas (GONÇALVES,
2008).
Como o software está na web, ele pode ser acessado pelos usuários de qualquer lugar e
a qualquer momento, permitindo mais integração entre unidades de uma mesma empresa ou
55
outros serviços de software. Assim, novos recursos podem ser incorporados automaticamente
aos softwares sem que os usuários percebam estas ações, tornando a evolução e atualização
transparente dos sistemas. O SaaS reduz os custos, pois é dispensada a aquisição de licença de
software, porém é cobrada uma taxa mensal baseada no numero de funcionários que acessam
o serviço (SOUZA, 2009).
Um SaaS é disponibilizado por prestadores de serviços na camada de aplicação. Ele
roda inteiramente na nuvem e pode ser considerado uma alternativa a rodar um programa em
uma máquina local. Softwares de aplicação, como processadores de texto e sistemas de banco
de dados, são exemplos de SaaS (CHIRIGATI, 2009).
A InformationWeek fez uma pesquisa, na qual três quartos das empresas que usam o
SaaS consideram os serviços do aplicativo muito importantes ou até essenciais, sendo que a
pesquisa foi realizada com duzentos e oitenta e um profissionais de tecnologia de negócio,
incluindo cento e trita e um que usam o SaaS. Cerca de um terço descreveu seu aplicativo de
SaaS como crítico ao negócio. Apesar da importância, muitos líderes ainda tratam SaaS como
ad hoc. Dentre os usuários, 59% dizem que é um ponto de solução tática e apenas 32% o
consideram parte das estratégias a longo prazo (BIDDICK, 2010).
A razão primeiramente citada, para 37% dos usuários do modelo é a rapidez na
implementação. Conforme as empresas saem da recessão, com alta demanda de novas
habilidades e, geralmente, com equipes de TI reduzidas, esse fator torna-se mais importante.
A velocidade é seguida pela economia nos gastos, citada por 25% dos adeptos. SaaS não é
universal, mas entre os 47% dos entrevistados que o usam, SaaS vai além de automação na
força das vendas. Aplicativos de RH, presença web, e-mail, serviço de suporte, colaboração,
financeiro e backup são usados por um quarto ou mais dos consumidores de software como
serviço (BIDDICK, 2010).
Outro benefício, que torna-se poderoso com o tempo, é a demanda dos funcionários
por mobilidade. SaaS força a TI a criar aplicativos acessíveis mais seguros fora do ambiente
corporativo, seja para uso em home Office, na estrada, via smartphone ou em computador
pessoal (BIDDICK, 2010).
56
Ao mesmo tempo, contratar uma solução SaaS exige o menor envolvimento sobre
desenvolvimento, gerenciamento ou administração da solução. Porém, o usuário irá depender
do software e funcionalidades oferecidas pela solução SaaS, o que deve oferecer um impacto
em caso de mudança do provedor contratado. Por exemplo, contratar uma solução SaaS CRM
da SalesForce.com é diferente de contratar uma solução SaaS CRM da Microsoft, via o
Dynamic CRM OnLine. Tem que ter cuidado e reconhecer o tipo de serviço de nuvem que
está sendo contratando. Reconhecer quais funcionalidades são únicas de cada provedor é
importante e deve esclarecer seu grau de dependência com a solução contratada
(CAMBIUCCI, 2010).
57
5. Análise de Casos: Provedores de Serviços de Computação em Nuvem
Vamos detalhar um pouco mais as estratégias e ofertas de alguns dos principais
provedores de computação em nuvem. Na verdade, com o imenso potencial do mercado de
tecnologias e serviços em nuvem, a maioria das empresas de TI está se mobilizando para criar
ofertas para computação em nuvem. Então os provedores selecionados vão estar listados em
ordem alfabética, para evitar qualquer valor subjetivo de sua importância no mercado.
5.1 Amazon Web Services
Um exemplo já bem conhecido de nuvem são serviços da Amazon. A Amazon criou
uma subsidiária chamada Amazon Web Service (http://aws.amazon.com/) para ofertar serviços
em computação em nuvem. Basicamente são quatro ofertas, o EC2 (Elastic Computing
Cloud), para alugar máquinas virtuais Linux, nos quais o usuário pode alugar dezenas ou até
milhares de CPUs, o S3, serviço de armazenamento (storage) em nuvem, o SimpleDB, oferta
de Database-as-a-Service e o SQS (Simple Queue Service) para serviços de mensagens. A
idéia é que os usários possam operar seu negócio sem ter a necessidadede investir em infra-
estrutura, como servidores storage. E a plataforma computacional oferecida é a própria
plataforma que roda os aplicativos da Amazon, uma infraestrutura de tecnologia que incluiu
milhares de servidores e que levou anos para ser construída e ajustada (TAURION, 2009).
Amazon Web Services (AWS) fornece infra-estrutura como serviço (IaaS) como ofertas
na nuvem, para as organizações que exigem poder de processamento, armazenamento e outros
serviços. Sendo que, a Amazon foi uma das pioneiras em oferecer serviços na nuvem para o
público, lançou seus primeiros serviços, os S3 e EC2, em 2006. AWS oferece uma série de
serviços, incluindo as seguintes (MATHER, 2009):
5.1.1 Elastic Compute Cloud (EC2)
Para começar a trabalhar com a EC2, é necessário o usuário, de posse de uma conta na
Amazon, criar uma Amazon Machine Instance (AMI). Uma AMI é uma imagem de máquina
58
(como uma ISO), contendo aplicações e bibliotecas de programas e componentes. Há muitas
AMIs comuns disponíveis a partir da Amazon e da comunidade EC2. Elas podem usar tanto
Windows quanto Linux, e os mais diversos conjuntos de software livre, como o Apache,
MySQL e quaisquer linguagens que escolha usar. Caso não encontre uma AMI que atenda suas
necessidades, a Amazon fornece ferramentas para criar sua própria AMI, que pode ser privada
ou compartilhada com a comunidade. O fato é que uma pequena empresa pode começar a
operar aplicações em poucos minutos, configurando seu ambiente virtual de forma bem rápida
e simplificada. Contrasta vivamente com o modelo tradicional, no qual é necessário adquirir
um servidor, instalá-lo em algum local adequado, configurá-lo e mantê-lo continuamente
atualizado com as últimas versões de software básico (TAURION, 2009).
O EC2, fornece um IaaS em que há cobrança pelo uso. O preço inicial, com base em
aspectos como o sistema operacional usado, RAM e espaço em disco partilhado em cada AMI ,
é de US$ 0,10 por hora. Ele provê um ambiente virtual que permite o desenvolvimento e a
execução de aplicações baseadas em Linux. Para isso, os prestadores de serviços devem criar
sua própria máquina virtual, conhecida como AMI que contém todas as aplicações, os dados e
as bibliotecas necessárias. Alternativamente, os prestadores de serviços também podem usar
AMIs que já estão prontas e disponíveis (CHIRIGATI, 2009).
A vantagem da flexibilidade da EC2 é que pode-se escolher entre diversas distros do
Linux e também pode-se utilizar diferentes versões do Windows como operacional para AMIs.
Qualquer linguagem de programação pode rodar: Java , PHP, Python, Ruby, etc. (TAURION,
2009).
O serviço EC2 permite rodar aplicações no ambiente de nuvem da Amazon. Os
servidores virtuais do EC2 são máquinas virtuais Linux que rodam em cima da plataforma de
virtualização Xen. Recentemente, a Amazon também permitiu que as máquinas virtuais sejam
imagens do OpenSolaris, mas a maioria continua sendo Linux. Essas máquinas virtuais podem
ser servidores de 32 ou 64 bits, baseados em equivalentes a processadores de 1.7 GHz,
Opteron ou Xenon.
As instâncias das máquinas virtuias podem variar da mais simples, uma máquina de 32
bits, com 1,7 GB de memória, uma unidade de computação EC2, (160 GB de armazenamento
59
e um moderado desempenho de I/O) até uma máquina “extra-large” de 64 bits, memória de 7
GB, 20 unidades de computação EC2 (8 virtual cores, cada um com 2,5 unidades de
computação EC2), 1.690 GB de armazenamento e alto desempenho de I/O (SOUZA, 2009).
A Amazon consegue cobrar preços baixos porque estes refletem diretamente os custos
do imenso parque computacional que a empresa possui. Porém, é importante lembrar que
estes preços incluem a tranferência de dados e não apenas o seu armazenamento. Assim,
aplicações intensivas em I/O podem ter seus custos bem mais elevados, pois muitas vezes o
usuário olha apenas o custo de armazenamento e minimiza os custos de I/O, sendo que, a
Amazon não cobra as transferências de dados entre os serviços de S3 e EC2.
A Elastic Compute Cloud (EC2) é a principal oferta da AWS 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 ser customizado e se ajustar a
suas necessidades (GOMES, 2010).
De acordo com MILLER (2009), a Amazon permite que seus clientes escolher três
tamanhos de servidores virtuais:
• Small, que oferece o equivalente a um sistema com 1,7 GB de memória,
160 GB de armazenamento e um processador de núcleo virtual de 32 bits;
• Grande, que oferece o equivalente a um sistema com 7,5 GB de memória,
850 GB de armazenamento e dois núcleos virtuais de processamento com 64
bits;
• Extra grandes, que oferece o equivalente a um sistema com 15 GB de
memória, 1,7 TB de armazenamento e quatro núcleos virtuais de 64 bits.
O EC2 fornece um ambiente altamente confiável, visto que a substituição de instâncias
pode ser realizada de forma rápida, garantindo o QoS.
60
5.1.2 Simple Storage Solution (S3)
O S3 é um sistema de armazenamento pela internet que pode ser usado para armazenar
e recuperar ilimitado quantidades de dados, a qualquer hora, de qualquer lugar na internet.
Diferentemente do SimpleDB que é um banco de dados, o S3 é um sistema de arquivos
distribuído, utilizado para recuperar e armazenar dados. O S3 fornece um repositório seguro,
confiável e rápido para armazenar as imagens AMI. E ainda armazena e recupera os resultados
intermediários durante a execução das tarefas de processamento. Durante a execução, cada
tarefa busca o arquivo no S3 e faz o devido processamento. As soluções EC2 armazenam
arquivos como objetos no S3 e todos os metadados relacionados ao objeto no SimpleDB
(SOUZA, 2009).
Geralmente, quando se fala em storage, pensa-se em armazenamento diretamente
ligado aos servidores, para evitar demoras (latências) causadas pelas distâncias e meios de
comunicação. O S3 muda este conceito ao ofertar um serviço de armazenamento remoto, em
nuvem. O usuário armazena seus arquivos nos discos da Amazon e os seus servidores acessam
estes dispositivos para obter os dados. Em quais discos e onde eles estão fisicamente
localizados é transparente à aplicação do usuário (TAURION, 2009).
O S3 é uma oferta de “storage on demand” porque o usuário paga apenas pela
quantidade de dados armazenada, sem a necessidade de reservar espaço adicional, prevendo,
por exemplo, aumento futuro. Se a demanda por espaço aumentar, o sistema automaticamente
aumenta o espaço disponível. Se diminuir, o sistema diminui o espaço alocado. O preço
sempre é baseado no uso real do espaço em disco e inclui basicamente três variáveis: bytes
tranferidos para a nuvem, bytes transferidos da nuvem e gigabytes armazenados. Em
novembro de 2008 os preços praticados para os EUA e Europa eram de 12 a 15 centavos de
dólar para GB armazenado e 10 centavos por GB lido (TAURION, 2009).
Os dados transferidos dentro de uma Amazon S3 local através de uma solicitação de
cópia é gratuita. Dados transferido através de uma solicitação de cópia entre os locais é
cobrada em preços regulares. Os dados transferidos entre a Amazon EC2 e Amazon S3 dentro
da mesma região é gratuito (ou seja, 0,00 dólares por GB). Os dados transferidos entre a
Amazon EC2 e Amazon S3 entre regiões (ou seja, entre os EUA e a UE), será cobrada na
61
internet taxas de transferência de dados em ambos os lados da transferência. Armazenamento
e tamanho de banda inclui todas as despesas gerais do arquivo.
(Source: http://aws.amazon.com/s3/#pricing.) (CHEE, 2010).
5.1.3 Simple Queue Service (SQS)
Amazon Simple Queue Service (SQS) oferece um serviço de fila de distribuição de
mensagens que suporta o envio de mensagens programadas através de aplicações de Web
Services como uma forma de comunicação através da internet. Os desenvolvedores podem
mover dados entre distribuídos componentes de seus aplicativos que executam tarefas
diferentes, sem perda de mensagens ou exigindo que cada componente deve estar sempre
disponível. SQS permite um fluxo de trabalho automatizado a ser criado e trabalha em estreita
colaboração com Amazon EC2 e outros Amazon Web Services. SQS expõe infra-estrutura web
de mensagens como um serviço na internet. Como tal, qualquer computador na internet pode
adicionar ou ler mensagens sem nenhum software especial instalado, firewall ou
configurações especiais. Os componentes da SQS podem ser executados de forma
independente, e não precisam estar na mesma rede (VELTE, 2010).
O Amazon SQS fornece confiabilidade e escalabilidade ao enfileirar e armazenar
mensagens que estão sendo trocadas entre os recursos computacionais. Os desenvolvedores
podem, de maneira simples, mover dados entre os recursos distribuídos das aplicações entre
diferentes domínios com garantia de entrega (SOUZA, 2009).
SQS fornece uma maneira para serviços baseados na web para trocar informações de
uma maneira segura. É constituída por três componentes principais:
1. Autenticação dos serviço é conseguido através do uso de editamentos às
credenciais AWS padrão. Através de um processo de registro, o
desenvolvedor cria um conjunto apropriado de credenciais para que os
processos possam atingir um modo seguro;
2. A entrega de mensagens é válida até 8 KB. O que se destaca é que a
seqüência não é garantida, e se for necessário, então, os números devem
possuir algum tipo de seqüência que deve ser incorporado na mensagem;
62
3. Mensagem deletadas do sistema devem ser tratadas através da aplicação do
programador, mas existem temporizadores para a exclusão automática.
5.1.4 SimpleDB
Outro serviço interessante é o SimpleDB (SDB), um framework que permite aos
usuários armazenar e recuperar informações baseadas na oferta de Web Services da própria
Amazon. Com o SDB o usuário pode, em tese, construir todo ou grande parte do seu portfólio
de aplicações no ambiente da Amazon. O SDB não é a solução para todo e qualquer problema
de negócio, devido ás suas restrições de desempenho e escalabilidade, mas serve muito bem
para aplicações simples (TAURION, 2009).
SDB é um serviço web que fornece as funções de banco central de dados e indexação
de consulta. Este serviço funciona de forma integrada com o S3 e o EC2, coletivamente, a
capacidade de armazenar e processar, define consulta de dados na nuvem, tornando a
computação na escala da web mais fácil e mais rentável para os desenvolvedores. Um
exemplo simples desta integração pode ser uma aplicação de compartilhamento de fotos e
vídeos pela web, no qual a aplicação é executada no EC2, as fotos e vídeos em si ficam
armazenados no S3 e os comentários e opiniões dos usuários do site ficam no SDB
(MATHER, 2009).
O serviço tem limitações de recursos (por exemplo, não suporta a linguagem SQL) e
seus custos são também baseados no modelo usou – pagou (TAURION, 2009).
O SDB é um serviço web que fornece as funcionalidades de um banco de dados como
armazemanento, indexação e consultas em ambientes de nuvem. A arquitetura do SDB é
utilizada para o armazenamento e recuperação dos estados do sistema. A vantagem dessa
abordagem é que em caso de falhas, um novo nó pode ser iniciado quase que imediatamente
baseada nas mensagens contidas na fila do Amazon SQS e seu estado pelo SDB (SOUZA,
2009).
63
5.2 Eucalyptus
A Elastic Utility Computing Architecture for Linking Your Programs To Useful
Systems (Eucalyptus) é um exemplo de software livre que implementa um IaaS. Foi iniciado
como um projeto de pesquisa do Departamento de Ciência da Computação de University of
California Santa Bárbara e comercializado recentemente como Eucalyptus Systems Inc.
Eucalyptus ainda é mantido e desenvolvido como um projeto de software livre. Eucalyptus
Systems está criando produtos adicionais com base no Eucalyptus de software livre e oferece
também serviços de suporte (SOUZA, 2009).
O projeto Eucalyptus (Liu et al. 2007) é uma infra-estrutura de código aberto que
fornece uma interface compatível com o Amazon EC2, S3, EBS (Elastic Block Store) e
permite aos usuários criarem uma infra-estrutura e experimentar a computação em nuvem. A
arquitetura do Eucalyptus é simples, flexível e modular e contém uma concepção hierárquica
que reflete os recursos comuns do ambiente (SOUZA, 2009).
O Eucalyptus tem como objetivo auxiliar a pesquisa e o desenvolvimento de
tecnologias para computação em nuvem e o possui as seguintes características: interface
compatível com o EC2, instalação e implantação simples usando ferramentas de
gerenciamento de clusters, apresenta um conjunto de políticas de alocação extensível de
nuvem, sobreposição de funcionalidade que não requer nenhuma modificação em ambiente
Linux, ferramentas para administrar e auxiliar a gestão do sistema e dos usuários e capacidade
de configurar vários clusters, cada um com endereço privado de rede interna em uma única
nuvem (SOUZA, 2009).
Esse sistema permite aos usuários iniciar, controlar o acesso e gerenciar todas as
máquinas virtuais utilizando uma emulação do protocolo SOAP (Simple Object Access
Protocol) do Amazon EC2 e interfaces de consulta. Neste sentido, os usuários interagem com
o Eucalyptus utilizando as ferramentas e interfaces exatamente do mesmo modo que eles
interagiriam com o Amazon EC2 (SOUZA, 2009).
O Eucalyptus implementa o conceito de IaaS (infrastructure-as-a-Service),
implementando nuvens privadas. Também, por ser um ambiente compatível com o EC2 da
64
Amazon, permite que as nuvens privadas criadas por ele, interajam com a nuvem publica da
Amazon, pois usa a mesma interface de programação. A NASA tem um projeto de
computação em nuvem baseado no Eucalyptus, que é o NEBULA. Este projeto pode ser
observado em http://nebula.nasa.gov/ (TAURION, 2010).
O projeto NEBULA foi iniciado em 2007 pela NASA, que fornece grande capacidade
de processamento e armazenamento, além de conectividade, para a própria NASA e outros
órgãos governamentais americanos (ORTEGA, 2010).
Assim como outras empresas (Google, Microsoft e Sun, entre outras) que fornecem
computação na nuvem, a NASA montou sua estrutura dentro de containers (ORTEGA, 2010).
Utilizar containers tem sido uma tendência e segundo especialistas permite agilidade
na expansão do datacenter e também controle eficiente no uso de energia, já que é mais fácil
controlar a temperatura (ORTEGA, 2010).
Recentemente o Eucalytpus foi incorporado à iniciativa de Cloud Computing Open
Source do Ubuntu, que é uma bem conhecida distribuição Linux. A base desta iniciativa, o
Ubuntu Enterprise Cloud (UEC), é o Eucalyptus (http://www.ubuntu.com/cloud). O
Eucalyptus pode também ser instalado em outros ambientes Linux, como os das distribuições
RedHat e Debian (TAURION, 2010).
5.3 Google
O modelo de Computação em Nuvem ganhou espaço na mídia pelos exemplos
pioneiros de empresas como o Google. Uma nuvem computacional que todos nós usamos,
embora muitas vezes passe despercebida, é o conhecido mecanismo de busca Google. Uma
simples query no Google demanda o acesso a milhares de megabytes e consome dezenas de
bilhões de ciclos de processador. Na verdade, o Google mantém em seus datacenters uma
cópia de grande fração da internet, cópia esta continuamente atualizada através de softwares
“spiders” que percorrem a rede, link por link, procurando o conteúdo das suas bilhões de
páginas. Construir uma infra-estrutura computacional que permita milhares de queries por
segundo, e completar o processo em poucos segundos, nos moldes tradicionais, requereria
65
inúmeros supercomputadores de centenas de milhões de dólares cada. Então o Google
resolveu o problema, a um custo bem menor, agrupando centenas de milhares de servidores
Intel/Linux em seus datacenters espalhados pelo mundo (TAURION, 2009).
A aplicação Google é por natureza altamente paralelizável, permitindo plena
exploração do conceito de nuvem. Diferentes consultas rodam em diferentes processadores e
o índice é particionado de modo que uma única query possa também usar múltiplos
processadores em paralelo (TAURION, 2009).
O resultado é que o Google consegue operar pesquisas rápidas, com uma infra-
estrutura de TI baseada em milhões de servidores comoditizados, reduzindo sensivelmente os
custos quando comparado ao que seria necessário para adquirir um supercomputador que
oferecesse a mesma capacidade computacional.
Embora à primeira vista poucas aplicações sejam similares ao Google em termos de
paralelismo, existem inúmeras outras aplicações que permitem explorar o paralelismo com
bastante eficiência. O próprio Google começou a expandir o uso das suas nuvens para
acomodar outros serviços como o YouTube, o Google Maps, o Google Apps entre outros, mas
recentemente criou o Google AppEngine (http://code.google.com/intl/pt-BR/appengine),
plataforma para desenvolvimento de aplicações que rodarão na nuvem do Google
(TAURION, 2009).
5.3.1 Google Apps
Um exemplo muito conhecido da arquitetura SaaS é o Google Apps. Google Apps é a
forma de computação em nuvem do Google voltada para empresas. São serviços baseados na
Web, que não usam hardwares ou softwares, e exigem o mínimo de manutenção, o que gera
uma grande economia de tempo e custos. A empresa pode usar domínio próprio em diversos
aplicativos disponibilizados pelo Google. Uma solução acessível, que permite o
compartilhamento de informações importantes entre os usuários.
O Google Apps é um conjunto de aplicações da Google que são fornecidas aos
usuários na forma de SaaS, como está exibida na Figura 9. Entre essas aplicações, podemos
66
encontrar um serviço de correio eletrônico (Gmail), um programa de mensagens instantâneas
(Google Talk), um editor de textos, planilhas e apresentações (Google Docs), um
gerenciamento de agendas on-line e compartilhadas (Google Calender) e compartilhamento
de vídeos privados (Google Vídeos) (CHIRIGATI, 2009).
Figura 9. Aplicativos de Trabalho no Google Apps (LUIZ, 2010)
A edição padrão é gratuita e oferece a mesma capacidade de armazenamento que as
contas normais de Google. A edição premier, que oferece 25 GB de armazenamento, tem um
valor de 50 dólares anuais por conta de usuário. A edição Educação oferece um conjunto
gratuito e sem anúncios de ferramentas personalizáveis permitem que professores,
funcionários e estudantes trabalhem em grupo e aprendam de forma mais eficiente.
Podemos citar como exemplo aqui no Brasil, o Google Apps passou a ser o pacote de
aplicativos de escritório de mais de 3.500 funcionários das lojas Renner. A Renner, rede de
120 lojas espalhadas pelo Brasil, decidiu adotar o Google Apps em busca de flexibilidade.
5.3.2 Google App Engine
Desta forma, o Google App Engine tornou-se uma das ferramentas mais conhecida na
arquitetura PaaS. Ele fornece um conjunto de APIs e um modelo de aplicação que permite aos
desenvolvedores utilizarem serviços adicionais fornecidos pelo Google, como o e-mail,
armazenamento, entre outros. Os serviços disponibilizados proporcionam um ambiente seguro
e eficaz para aplicações que apresentam grandes demandas, fornecendo soluções para
67
empresas e desenvolvedores que necessitam superar os desafios de escalabilidade em seus
projetos (SOUZA, 2009).
O armazenamento de dados no Google App Engine não é um banco de dados
relacional. O serviço de armazenamento de dados do Google App Engine é baseado no
BigTable, um sistema distribuído de armazenamento de dados em larga escala. O BigTable
funciona como um banco de dados orientado a colunas e utiliza o GFS (Google File System)
para gerenciar informações. Uma restrição nesta base de dados é que para acessar estes dados,
o AppEngine oferece uma linguagem específica, chamada GQL, que, apesar de ser baseada no
SQL, não suporta o modelo relacional e portanto não permite comandos como join. O acesso é
limitado a apenas uma tabela. (TAURION, 2009).
Por enquanto Bigtable é uma ferramenta robusta, os desenvolvedores têm sido
cautelosos quanto ao seu uso. Porque é um sistema proprietário, eles ficam presos em Google.
Esse é também o caso da Amazon Web Services e outros provedores de computação em
nuvem.
As aplicações desenvolvidas para o App Engine serão executadas no Google, que
realiza, caso necessário, o dimensionamento automaticamente. Atualmente, o suporte de
linguagens de programação no App Engine são Python e Java. O Google App Engine pode ser
iniciado gratuitamente. Todos os aplicativos podem usar até 500 MB de armazenamento e
CPU e largura de banda suficiente para suportar um aplicativo eficiente que oferece cerca de
cinco milhões de visualizações de página por mês, totalmente grátis. Ao ativar o faturamento
para o aplicativo, os limites gratuitos aumentam e o usuário paga somente pelos recursos que
ultrapassam os níveis gratuitos (SOUZA, 2009).
Então, o AppEngine é oferecido, gratuitamente, para cada desenvolvedor 500 MB de
memória, 200 megaciclos de CPU e 10 GB de transferência de dados, após isso são cobradas
as seguintes taxas:
• $ 0.10-$ 0.12 núcleo do processador por horas
• $ 0.15-$ 0.18 GB de armazenamento por mês
• $ 0.11-$ 0.13 por GB de banda de saída
• $ 0.09-$ 0.11 por GB de largura de banda de entrada
68
5.4 IBM
A IBM entrou no setor de computação em nuvem em novembro de 2007 com uma
oferta chamada Blue Cloud. Esta oferta é um conjunto de tecnologias, algumas proprietárias
como o Tivoli Provisioning Maneger e outras open source como o Xen e o Hadoop (versão
open source do ambiente de computação paralela do Google, o MapReduce), que permitem
uma a organização contruir sua própria infra-estrutura de nuvem. Com esta infra-estrutura, a
empresa pode utilizar o conceito de computação em nuvem para uso interno ou para prover
serviços para clientes externos (TAURION, 2009).
Detalhando um pouco mais a arquitetura do Blue Cloud, observamos algumas
tecnologias que são fundamentais a um ambiente de nuvem. Uma delas é a funcionalidade de
provisionamento automático. Uma função básica de qualquer nuvem é a capacidade de
automaticamente provisionar servidores para atender à demanda. No Blue Cloud, atráves de
um portal web, o usuário especifica que plataforma de hardware vai necessitar, selecioando
tipo de processador, capacidade de memória e armazenamento, sistema operacional e assim
por diante. Outra função é a monitoração dinâmica dos recursos computacionais. A nuvem
precisa ser monitorada continuamente e em tempo real, para ajuste e balanceamento da carga.
A Bue Cloud adota o Hadoop, uma plataforma de computação paralela de alto desempenho.
(TAURION, 2009).
O Hadoop é um software open source gerenciado pela comunidade Apache, projetada
para distribuir e processar tarefas em computação distribuída e paralela. Os programas que
operam no Hadoop são escritos em um estilo de programação próprio, chamado de estilo
Map/Reduce (desenvolvido pelo Google) no qual a tarefa é dividida em centenas ou milhares
de pequenos pedaços que são processados independentemente, em centenas ou milhares de
computadores reais ou virtuais, de acordo com um mapa execução. Os resultados gerados por
estes processos independentes são agrupados e sintetizados (reduzidos) para produzir o
resultado final em uma fração de tempo (TAURION, 2009).
69
O Blue Cloud usa os servidores IBM BladeCenter, um sistema operacional Linux,
virtualização baseada em Xen e o software de gerenciamento Tivoli da IBM. Em síntese, o
Blue Cloud é uma série de ofertas de computação em nuvem baseadas em padrões abertos e
software livre que ajudam as corporações a fornecerem recursos Web 2.0, como mashups,
colaboração aberta, redes de relacionamentos e comércio remoto (SLACK, 2009).
Há dois benefícios chave do IBM Blue Cloud, de acordo com Cezar Taurion. Primeiro,
o uso de Tivoli na nuvem ajuda as corporações a reduzirem custos e economizar energia. Por
exemplo, reduz as etapas manuais envolvidas em gerenciamento de dados e aumenta a
automação do centro de dados. Fornecendo dinamicamente e alocando recursos para melhor
gerenciar flutuações de carga de trabalho, os recursos de TI são executados em níveis mais
consistentes. E Tivoli tem a capacidade de gerenciar o consumo de energia alternando
servidores para o modo de espera quando não estão em uso e restaurando-os instantaneamente
quando necessário.
Segundo, em vez de parar na idéia geral de "rede das redes", o Blue Cloud oferece um
desvio: permite que a arquitetura de seus serviços de TI imite configurações básicas de
provedores de serviço. Portanto, obtém-se a capacidade de integrar seus serviços internos
àqueles de seus parceiros, clientes, fornecedores e provedores (SLACK, 2009).
5.5 Microsoft
Uma ferramenta bem conhecida do PaaS é o Microsoft Azure a qual se trata de uma
plataforma para a implementação de computação em nuvem que oferece um conjunto
específico de serviços para desenvolvedores. Esta plataforma pode ser usada por aplicações
em execução em nuvem ou fora desta. A plataforma Azure é formada pelo sistema
operacional Windows Azure e um conjunto de serviços: Live Services, .NET Services, SQL
Services, SharePoint Services e Dynamics CRM Services (SOUZA, 2009).
A Microsoft iniciou suas ofertas para o modelo de computação em nuvem com o Live
e com o “Online Services”, voltados principalmente para usuários finais e pequenas empresas.
Posteriormente, no final de 2008, lançou o Windows Azure e um conjunto de serviços de
70
PaaS, chamada Azure Services Platform. A proposta da Azure é oferecer uma plataforma e
serviços hospedados nos seus datacenters. O Azure não é uma adaptação da tecnologia .NET,
mas uma plataforma nova (TAURION, 2009).
O Azure Services Plataform é uma estratégia e um conjunto de produtos que se propõe
a implementar a visão de nuvem da Microsoft, baseada no conceito de “software-plus-
services”(TAURION, 2009):
• Ser uma nova geração do ambiente Windows para ambiente de computação em
nuvem. A função básica do Azure é automaticamente ligar a aplicação do
usuário a máquinas virtuais operando nos datacenters da Microsoft. Na
verdade o Windows Azure é essencialmente uma versão modificada do
Windows 2008 e do mecanismo de virtualização chamado Hyper-V,
suplementada com software projetado para hospedar e gerenciar aplicações e
serviços em nuvem;
• Fornecer serviços orientados aos desenvolvedores, como SQL Services, .Net
Services, Live Services, cada um contendo um pequeno número de funções, a
ser expandido ao longo do tempo. Além destes serviços estão incluídos o Share
Point Services e Dynamic CRM Services. O Share Point Services oferece APIs
para funcionalidades do Share Point como sites de colaboração e workflows. O
Dynamic CRM Services oferece APIs para interface com as funções do
aplicativo Dynamics CRM.
• Ser um novo modelo de programação. Para a aplicação extrair todos os
benefícios do Azure, deve ser desenvolvida com este conceito desde o início.
71
Figura 10. Serviços oferecidos no Windows Azure (ZUNINO, 2008)
Como podemos observar na Figura 10, a plataforma de serviço no Azure é formada
por camadas, dentre elas a camada de nível mais baixo é o windows azure que é um sistema
operacional distribuído, no nível mais acima existe um conjunto de serviços como Live
services, .NET Services, SQL Services e assim por diante, que são serviços disponibilizados
para que o usuário use ou dentro do windows azure ou em uma aplicação externa. E por fim
disponibiliza um conjunto de serviços para o usuário final como Windows live, Office Live,
Exchange Online, onde o usuário já utiliza suas capacidades de uso para tarefas do dia-a-dia
(COELHO, 2008).
Então, na nuvem temos que abstrair centenas ou ate milhares de servidores que são
disponibilizados para que o usuário execute a sua aplicação. Dentro do Windows Azure
existem maneiras de abstração, onde o usuário vai ter o seu serviço sendo gerenciado, vai ver
sua computação sendo virtualizada e vai possuir um conjunto de mecanismos como blobs,
Tables, Queues, Locks etc.. estão la disponibilizados como primitivas, para que o usuário
desenvolva seu programa sem ter que saber aonde esta rodando em que hardware que esta
rodando. Portanto o Windows Azure é um sistema operacional para a nuvem que roda em um
conjunto grande de computadores de forma organizada e que abstrai do usuario todo esse
hardware e toda esta infraestrutura (COELHO, 2008).
Uma máquina virtual (VM) executa uma função de imagem do disco rígido virtual um
VHD. Este VHD é criado usando uma máquina no local do Windows Server, em seguida,
enviados para o Windows Azure. Uma vez que é armazenada na nuvem, o VHD pode ser
72
carregado sob demanda em uma função na VM e executado. Os clientes podem configurar,
manter o sistema operacional e usar o Windows Services, etc tarefas agendadas no papel VM.
Os desenvolvedores têm a capacidade de escolher o tamanho das VMs para executar a
sua aplicação com base nos requisitos da aplicação de recursos. O Windows Azure calcula
casos e possui cinco tamanhos originais para permitir aplicações complexas e cargas de
trabalho. Introduziram o Extra Windows Small para tornar o Windows Azure mais acessível
para os desenvolvedores interessados em executar aplicativos menores na plataforma, como
podemos observar na Figura 11.
Figura 11. Tamanhos das instâncias no Windows Azure (CAMBIUCCI, 2010)
O Live Services é um conjunto de componentes dentro do Azure para o tratamento de
dados do usuário e recursos da aplicação. Live Services possibilita aos desenvolvedores
construírem aplicações ricas que podem conectar com usuários do Windows Live. O Live
Services inclui as tecnologias do Live Mesh para sincronização de dados dos usuários e
possibilita a extensão de aplicações Web entre múltiplos dispositivos (SOUZA, 2009).
A Microsoft .NET Services é um conjunto da Microsoft que hospeda serviços de
desenvolvimento orientado para fornecer os componentes exigidos por muitas aplicações
baseadas na nuvem. .NET Services é semelhante ao .NET Framework, oferecendo bibliotecas
de classes de alto nível que tornam o desenvolvimento muito mais robusto. .NET Services
pode ajudar os desenvolvedores a se concentrar mais em seu produto final do que na
construção e implantação de infra-estrutura própria nuvem. .NET Services também está
disponível para outras tecnologias de desenvolvimento através do uso de protocolos padrão da
indústria, como REST, SOAP e HTTP (VELTE, 2010).
73
O SQL Services é um serviço de armazenamento de dados e de processamento de
consultas escalável, sendo construído com base na tecnologia do SQL Server. O SQL Services
possui suporte a interfaces SOAP e REST (Representational state transfer), permitindo que
seus dados sejam acessados de várias formas. Para garantir a escalabilidade, o SQL Services
implementa apenas partes do modelo relacional e não possui suporte completo para a
linguagem SQL. O componente SharePoint Services permite colaborar e criar aplicações
Intranet e o Dynamics CRM Services é um sistema totalmente integrado de CRM (SOUZA,
2009).
O SQL Services amplia as capacidades de armazenamento para a nuvem, como
serviços baseados na web. Isso permite o armazenamento de dados estruturado, semi-
estruturadas e dados não estruturados. SQL Services oferece um conjunto de serviços
integrados que permitem consultas relacionais, pesquisa, elaboração de relatórios, análises,
integração e sincronização de dados. Isso pode ser feito por usuários móveis, escritórios
remotos ou parceiros de negócios (VELTE, 2010).
5.6 Salerforce
Um dos exemplos mais conhecido de SaaS é a Salesforce.com esta foi fundada em
1999 pelo ex-executivo da Oracle Marc Benioff, que foi o primeiro a promover o conceito de
fornecimento de aplicativos empresariais através de um simples site da web. A Salesforce é
uma empresa norte americana de tecnologia que desenvolve soluções no conceito de
computação em nuvem (TAURION, 2009).
A proposta do Salesforce era diferente. Em vez de venda de licenças e contratos de
manutenção e a necessidade de adquirir servidores para hospedar os caros aplicativos
contratados, o cliente precisava apenas assinar um contrato de uso aplicativo de CRM (gestão
de relacionamento com o cliente). Todo o software e a plataforma por trás residiriam no
Salesforce.com. O cliente não precisaria mais se preocupar com a infra-estrutura (TAURION,
2009).
Hoje, além as oferta tradicional, que o CRM via SaaS, oferece ainda duas soluções: a
Force.com, plataforma de desenvolvimento (PaaS), e o AppExchange, mercado on-line com
diretório de aplicações desenvolvidas para o ecossistema Salesforce (TAURION, 2009).
74
A plataforma como um serviço é um serviço oferecido aos desenvolvedores de
software. Ao se desenvolver aplicativos para a plataforma Force.com eles ficam armazenados
na infra-estrutura da Salesforce. Quando um desenvolvedor coloca uma aplicação a venda na
AppExchange ele não precisa mais se preocupar em instalar o software, criar instâncias ou
coisas desse tipo (GONÇALVES, 2008).
A fim de fornecer uma gama de aplicações que complementem seu CRM a Salesforce
criou o AppExchange. Basicamente é um mercado de aplicações onde clientes do CRM
podem consumir produtos desenvolvidos pelos parceiros da plataforma Force.com. Hoje
diversas empresas já comercializam seus produtos dentro da Salesforce através do
AppExchange, dando ao usuário a oportunidade de comprar softwares das mais diversas áreas,
desde auxílio para gerenciamento e manutenção de contratos até ferramentas de marketing
para envio de e-mails (GONÇALVES, 2008).
A idéia da Force.com é prover um ambiente de desenvolvimento para desenvolvedores
e empresas que queiram se tornar parceiras da Salesforce. Não existe nenhum custo para
iniciar o desenvolvimento de um aplicativo, o cadastro no site é gratuito para obtenção de
uma conta com todos os recursos necessários para o desenvolvimento de novos aplicativos
(GONÇALVES, 2008).
Na direção de reforçar o Force.com estão recentes mudanças, como o fato do cliente
do AppExchange não precisar mais ser cliente do CRM da Salesforce. A razão para esta
estratégia da Salesforce é simples: constata-se que um grande número de desenvolvedores e
pequenas empresas de software não terá competência tecnológica ou capital para proverem
sua própria nuvem. Neste contexto, a proposta da Salesforce é disponibilizar sua plataforma
para estes desenvolvedores hospedarem suas aplicações (TAURION, 2009).
Um outro movimento interessante nesta direção foram as parcerias para integrar o
Salesforce com outras nuvens. Uma destas parcerias foi com a Google, para permitir que
clientes do Salesforce se integrem às ferramentas de produtividade do Google Apps, como
Gmail, e Google Talk. Outra foi com o Facebook, para ligar CRM e a plataforma Force.com
às aplicações de computação social. Uma terceira parceria permite que clientes Salesforce
75
interajam com aplicativos e dados hospedados nas nuvens EC2 e S3 da Amazon (TAURION,
2009).
5.7 Comparativo entre os Modelos de Serviços
Os modelos de serviços são representados em camadas, cada uma delas possui suas
respectivas características e determinados níveis de abstração. Sendo que, para cada camada
existem provedores de serviço disponíveis que oferecem seus benefícios diferenciados para
que os usuários da computação em nuvem possam escolher o serviço que mais se adapta a sua
necessidade.
A camada de infra-estrutura inclui o fornecimento de máquinas virtuais nas quais o
desenvolvedor possui o controle de seu gerenciamento, permitindo o armazenamento e a
execução de uma ampla diversidade de aplicativos, o serviço ainda é a responsável pela
adesão de hardware, servidores, roteadores e outros recursos de computação, os quais formam
a base dos modelos de serviços da computação em nuvem. Sendo assim, existem empresas
que disponibilizam serviços neste modelo, como por exemplo, a IBM Blue Cloud, GoGrid,
Amazon EC2.
Na camada de plataforma como serviço os desenvolvedores de serviços, adquirem
através deste modelo, os recursos necessários (como ambiente de desenvolvimento,
linguagens de programação) para construir as suas aplicações, através da internet.
A camada de desenvolvimento e serviços de gerenciamento em nuvem tem como
exemplo as plataformas de desenvolvimento, como as oferecidas pelo Google App Engine,
pelo Force.com. e pelo MS Azure muitas vezes estas camadas usam serviços e softwares da
camada anterior.
O AppEngine é tecnicamente competidor do EC2 da Amazon, mas oferece uma
proposta bem diferente. O EC2 permite mais flexibilidade e controle pela parte do usuário,
enquanto o AppEngine oferece mais facilidade de uso e uma grande dose de automoção. Com
o AppEngine o usuário escreve o código, carrega sua aplicação e deixa que o Google faça
todo o resto. Na Amazon, essas atividades são por conta do usuário. Além disso, o AppEngine,
ao contrário do EC2, começa gratuito e, apenas caso demande mais recursos ele é pago. No
76
EC2, também só paga pelo que se usa, mas não existe carência. Outra diferença é que o
AppEngine ainda está restrito a duas linguagens de programação. O EC2 não limita a
linguagem a ser usada. Assim, se uma determinada aplicação precisar de extensões em C++ ,
por exemplo, o AppEngine não vai atender.
E finalmente na camada de software como serviço, no seu mais alto nível de abstração
é nela que está sendo oferecida as diversas aplicações como serviços para os usuários, através
da internet. Os exemplos de empresas que oferecem este tipo de serviço são as seguintes:
Salesforce.com, Google Docs, outras aplicações da web 2.0 como o Facebook e LinkedIn são
serviços baseados em nuvem também. Nesta camada o usuário paga somente pelo uso do
software, assim o provedor de serviço oferece a plataforma mais o software para o usuário.
77
6. Conclusão
De modo que, a evolução da tecnologia nos últimos anos tem contribuído muito para a
difusão do termo de computação em nuvem, este modelo é considerado um software
disponível na internet, em que o usuário não compra hardware ou software, mas aluga e paga
o que utilizar.
Podemos observar no decorrer deste trabalho, que a implantação na computação em
nuvem pode acontecer de três formas, que são as seguintes: nuvens públicas que são as mais
conhecidas, pois o modelo de serviços oferecidos atualmente, em sua maioria, adotam a
nuvem pública, na qual múltiplos usuários têm acesso a um software em comum na internet,
na qual as empresas provedoras de serviço são as responsáveis pelos recursos necessários para
os usuários. As nuvens privadas são adotadas somente por uma organização, onde estas são
responsáveis pela adoção de recursos computacionais quando necessário, por isso possui um
acesso restrito aos seus respectivos funcionários. E o último modelo a nuvem híbrida, a qual
tenta implantar estes dois tipos de modelos ao mesmo tempo.
A computação em nuvem, ainda possui três modelos de serviços, os quais são
oferecidos pelos seus provedores. Estes provedores são empresas que adotam um tipo de
serviço, e os disponibilizam com seus respectivos modos de pagamentos para os usuários.
As empresas que se baseiam no modelo de serviço da IaaS, podem incluir em seus
sistemas: roteadores, servidores, sistemas de armazenamento, banco de dados e outros
recursos computacionais, para oferecer aos seus usuários. As que oferecem modelos de
serviços baseados na PaaS, inclui os sistemas operacionais, linguagens de programação e
ambientes de desenvolvimento para as aplicações, auxiliando a implementação de softwares,
78
já que contém ferramentas de desenvolvimento e colaboração entre desenvolvedores. No
último modelo que é a SaaS, as empresas oferecem o software real como serviço via internet,
no qual a empresa adquire uma licença de uso através de um pagamento periódico e instala o
software nos seus próprios servidores.
Alguns cuidados que se deve ter ao efetuar um contrato com uma empresa provedora
de serviço em nuvem, é saber a taxa de transmissão da rede, fazer uma avaliação do
desempenho dessa rede, saber se ela não esta sujeita a congestionamentos no tráfego de dados
e fazer ainda uma avaliação para saber se é viável migrar os dados de uma empresa para um
ambiente virtual.
A computação em nuvem, com certeza vai ser um termo cada vez mais aceito pelas
empresas em todo o mundo, pois a cada dia que passa, ofertas com mais segurança vão
surgindo, fazendo com que as empresas tenham mais confiabilidade em adotar este tipo de
serviço.
Com o resultado desta pesquisa bibliográfica, tem-se como objetivo principal prover
esclarecimentos referentes à computação em nuvem, para que este trabalho sirva de referência
para desenvolvimento e aquisições futuras de aplicações em nuvem.
Então existem algumas sugestões para a realização de trabalhos futuros, como a
resolução de algumas questões de segurança na nuvem. Também, pode ser feito um
acompanhamento desta tecnologia, para aprofundar ainda mais os conhecimentos da mesma.
Existe ainda a possibilidade de desenvolver algum aplicativo envolvendo a plataforma do
Google AppEngine.
79
7. Referências Bibliográficas
AHRONOVITZ, M.; AMRHEIN, D.; ANDERSON, P.. Cloud Computing Use Cases: A white paper produced by the Cloud Computing Use Case Discussion Group. Edição 4. Julho, 2010.
AMRHEIN, D.; QUINT, S. (2009). Computação em nuvem para a empresa: Parte 1:
Capturando a nuvem. Disponível em: <http://www.ibm.com/developerworks/br/websphere/techjournal/0904_amrhein/0904_amrhein.html>. Acessado em Abril de 2009.
BIDDICK, M. (2010). É hora de investir em uma estratégia de SaaS. São Paulo:
InformationWeek. Edição 225. Editora it mídia. Março, 2010. P 90. CAMBIUCCI, W. (2010). Computação em Nuvem: algumas perguntas sobre desafios em
projetos. Microsoft Brasil. Disponível em: <http://blogs.msdn.com/b/wcamb/archive/2010/05/07/computa-o-em-nuvem-algumas-perguntas-sobre-desafios-em-projetos.aspx>. Acessado em Maio de 2010.
CAPRAROLI, E. (2009). O Futuro é Nublado. Disponível em:
<http://imasters.uol.com.br/artigo/14462/o_futuro_e_nublado>. Acessado em Outubro de 2009.
CAROLINY, R. (2010). Parte 4: Vantagens e Desvantagens Cloud Computing. Disponível
em: <http://depositodeartigos.blogspot.com/2010/03/parte-4-vantagens-e-desvantagens.html>. Acessado em Março de 2010.
CARVALHO, Davi. Cloud da Amazon: US$ 220 milhões/ano. Disponível em: <http://soasimples.com/blog/?tag=cloud>. Acessado em Outubro de 2009. CHEE, B. J. S.; FRANKLIN, C..(2010). Cloud Computing: Technologies and Strategies of the Ubiquitous Data Center. Editora CRC Press. 2010. CHIRIGATI, F. (2009). Computação em Nuvem. Disponível em:
<http://www.gta.ufrj.br/ensino/eel879/trabalhos_vf_2009_2/seabra/index.html>. Acessado em Novembro de 2009.
COELHO, O. P; CONDÉ, L.; CHRISTEN, M.; CAMBIUCCI, W.. Azure Academy: O Sistema
Operacional Azure. Disponível em: <http://blogs.msdn.com/otavio>. Acessado em Novembro de 2010.
DELMIRO, E. (2010). Você sabe o que é computação em nuvem?. Disponível em:
<http://www.sapienzae.com.br/?p=847>. Acessado em junho de 2010.
80
DUARTE, R. (2009). FinancialWeb: ABC da computação em nuvem. Disponível em:
<http://www.robertodiasduarte.com.br/financialweb-abc-da-computacao-em-nuvem/>. Acessado em Novembro de 2009.
ESCOBAR, F. (2009). Impacto do Gerenciamento de Projetos nas Organizações. Disponível
em: <http://www.managerbrazil.com.br/?FuseAction=Biblioteca>. Acessado em Maio de 2009.
FREZENDE, R. (2009). A Relação entre Computação em Nuvem e SaaS. Disponível em:
<http://www.scribd.com/doc/22719402/A-relacao-entre-Computacao-em-nuvem-e-SaaS>. Acessado em Novembro de 2009.
FUGULIN, M. (2010). Entendendo a Computação em Nuvem. Disponível em:
<http://www.tecmedia.com.br/novidades/artigos/entendendo-a-computacao-em-nuvem>. Acessado em Janeiro de 2010.
GOMES, D. (2010). Escolhendo sua Plataforma de Cloud Computing Parte 1 – Amazon
EC2. Disponível em: <http://escalabilidade.com/2010/02/23/escolhendo-sua-plataforma-de-cloud-computing-parte-1-amazon-ec2/>. Acessado em Fevereiro de 2010.
GONÇALVES, D.; JUNIOR, J. (2008). Integração de Aplicações ao SalesForce. White Papers.
Digital Assets. GUN, M. (2008). Software como Serviço: benefícios e precauções. Disponível em:
<http://webinsider.uol.com.br/2008/05/20/software-como-servico-beneficios-e-precaucoes/>. Acessado em Maio de 2009.
JOBSTRAIBIZER, F. Cloud Computing. São Paulo: Linux Magazine. Editora Linux New
Midia. Edição 69. Agosto, 2010. P 31. LIMA, J. (2009). Porquê Inovar nas Empresas?. Disponível em:
<http://aportar.blogspot.com/2009/04/porque-inovar-nas-empresas.html>. Acessado em Abril de 2010.
LUIZ, A. Google Apps na INFOGLOBO. Disponível em:
<http://estagioboachance.blogspot.com/2010/11/google-apps-na-infoglobo.html>. Acessado em Dezembro de 2010.
MATHER, T.; KUMARASWAMY, S.; LATIF, S.. Cloud Security and Privacy. Editora
O’Reilly Media; Setembro, 2009.
81
MILLER, M.. Cloud Computing: Web-Based Applications That Change the Way You Work and Collaborate Online. Editora Copyright; 2009.
MOREIRA, D. (2009). Cloud Computing: Entenda este novo modelo de computação. IDG
Now. OLIVEIRA, R.; MAÇADA, A. C.; VANTI, A.. (2009). Infra-estrutura de Tecnologia de
Informação – Análise da Visão e Conjunto de Serviços - Estudo Piloto. Universidade Federal do Rio Grande do Sul (UFRGS) – Porto Alegre, RS.
ORTEGA, A. (2010). NASA e Cisco: Nuvem dentro de containers. Disponível em:
<http://www.brainwork.com.br/blog/tag/nebula/>. Acessado em Junho de 2010. PRADO, B. (2010). O que é Cloud Computing?. Disponível em:
<http://bloglog.globo.com/blog/blog.do?act=loadSite&id=221&postId=23389&permalink=true>. Acessado em Junho de 2010.
PIGATTO, D. F.(2009) Estudo e Implementação de Uma Solução de Softwares Aplicativos
Utilizando Computação nas Nuvens. Universidade Regional Integrada do Alto Uruguai e das Missões. Erechim, RS.
PINA, A. C. (2010). Cloud Computing. São Paulo: Linux Magazine. Editora Linux New Midia.
Edição 69. Agosto, 2010. P 30. PUPIM, M. (2010). Cloud Computing: cinco erros conceituais. Disponível em:
<http://www.estudameufilho.com.br/?p=410>. Acessado em Maio de 2010. RUSCHEL, H; ZANOTTO, M; MOTA, W. (2008). Computação em Nuvem. Especialização
em Redes e Segurança de Sistemas – 2008/2. Pontifícia Universidade Católica do Paraná (PUC). Curitiba, PR.
SISNEMA. (2009). Cloud Computing – Novo Modelo de Computação. Disponível em:
<http://sisnema.com.br/Materias/idmat019433.htm>. Acessado em Fevereiro de 2010.
SLACK, S. E.(2009). Há Valor na Computação em Nuvem? A computação em nuvem e seu impacto no futuro da arquitetura. Disponível em: < http://www.ibm.com/developerworks/br/library/ar-valuecloudcomputing/#blue_cloud >. Acessado em Maio de 2010.
SOUZA, F; MOREIRA, L; MACHADO, J. (2009). Computação em Nuvem: Conceitos,
Tecnologias, Aplicações e Desafios. Capítulo 7. Universidade Federal do Piauí (UFPI).
82
SPOSITO, R. Nuvem Pública ou Privada?. Disponível em:
<http://epocanegocios.globo.com/Revista/Common/0,,EMI96465-17453,00-NUVEM+PUBLICA+OU+PRIVADA.html>. Acessado em Abril de 2010.
SUN, Microsystems. (2009). Take your business to a higher level. Disponível em:
<http://www.scribd.com/doc/13892125/Everything-You-Need-to-Know-About-Cloud-Computing>. Acessado em Agosto de 2010
TAURION, Cezar. Cloud Computing Computação em Nuvem: Transformando o mundo da
Tecnologia da Informação. Editora Brasport, 2009. VELTE, A. T; VELTE, T. J; ELSENPETER, R. Cloud Computing: A Practical Approach.
Editor Copyright. 2010. VERAS, C. (2009). Por que mesmo a Empresa deve Inovar?. Disponível em:
<http://clariceveras.wordpress.com/2009/04/02/por-que-mesmo-a-empresa-deve-inovar/>. Acessado em Abril de 2010.
VERDI, F. L; ROTHENBERG, C. E; PESQUINI, R; MAGALHÃES, M. F.. (2010). Novas
Arquiteturas de Data Center para Cloud Computing. Universidade Federal de São Carlos – UFSCar. Faculdade de Engenharia Elétrica e Computação (FEEC) - Unicamp
VIEIRA, A. L.; PEREIRA, F.; TOLEDO, M. B.; CARNEIRO, P.; ARANHA, R.. (2009).
Computação em Nuvem. Universidade Federal Fluminense (UFF). ZUNINO, M..(2008). Microsoft Anuncia Windows Azure. Disponível em:
<http://www.guiadopc.com.br/noticias/4933/microsoft-anuncia-windows-azure.html>.
Acessado em Novembro de 2010.