SlideShare uma empresa Scribd logo
1 de 102
Baixar para ler offline
UNIVERSIDADE REGIONAL INTEGRADA DO ALTO URUGUAI E DAS MISSÕES
                     CAMPUS DE ERECHIM
    DEPARTAMENTO DE ENGENHARIAS E CIÊNCIA DA COMPUTAÇÃO
              CURSO DE CIÊNCIA DA COMPUTAÇÃO




                  DANIEL FERNANDO PIGATTO




   ESTUDO E IMPLEMENTAÇÃO DE UMA SOLUAÇÃO DE SOFTWARES
        APLICATIVOS UTILIZANDO COMPUTAÇÃO NAS NUVENS




                          ERECHIM
                            2009
DANIEL FERNANDO PIGATTO




ESTUDO E IMPLEMENTAÇÃO DE UMA SOLUAÇÃO DE SOFTWARES
    APLICATIVOS UTILIZANDO COMPUTAÇÃO NAS NUVENS




                          Trabalho   de   Conclusão   de   Curso,
                          apresentado ao Curso de Ciência da
                          Computação,       Departamento      de
                          Engenharias e Ciência da Computação da
                          Universidade Regional Integrada do Alto
                          Uruguai e das Missões – Campus de
                          Erechim.


                          Prof. Orientador: Alexandro Magno dos
                          Santos Adário




                      ERECHIM
                        2009
AGRADECIMENTOS


       Aos meus pais, Agenor e Dinora, pela dedicação e carinho que sempre tiveram
comigo, seja em questões de formação de caráter, como no incentivo aos estudos e à
graduação. E a minha irmã, Fernanda, que da mesma forma prestou seu apoio e parceria
comigo em todos os projetos que decidi participar, especialmente no presente.
       Aos familiares, especialmente a minha tia Dinaura e meus avós Augusto e Zenaide,
por entenderem minhas faltas aos encontros de família e pelo carinho que sempre me foi
dedicado.
       Aos mestres, que além de desempenhar com mérito seus papéis de educadores,
mostraram-se profissionais apoiadores e amigos em todas as etapas concluídas. Especial
agradecimento ao Prof. Alexandro Adário, meu orientador neste trabalho, pela preparação e
apoio dedicados, desde a mais simples dúvida sanada até o mais complexo problema
resolvido.
       Aos colegas de graduação, especialmente aos mais presentes, João Paulo, Saulo,
Jonas, Rodrigo, Joel, Maurício, Mateus, Elias, Lucas, Luis, Julior, entre muitos outros, os
quais não só foram colegas, mas verdadeiros amigos, especialmente pelo apoio em momentos
de tensão, pelo respeito demonstrado e pela parceria em todas as situações vivenciadas.
       Aos amigos de curta e longa data e aos colegas de trabalho, os quais souberam
entender algumas ausências em importantes eventos ou quando da indisponibilidade em
comparecer a um programa diferente de lazer.
       Ao Google, porque sem ele grande parte deste trabalho de pesquisa não teria sido
possível ou não teria sido tão eficiente.
"Perfection is achieved, not when there is nothing more to add,
                   but when there is nothing left to take away."

                                   Antoine de Saint-Exupery
RESUMO


A era da computação baseada na Web e o recente conceito de virtualização desencadearam no
surgimento de uma nova abordagem para minimizar custos com infraestrutura de tecnologia
da informação em ambientes corporativos: a cloud computing ou “computação nas nuvens”.
Trata-se de um “aluguel” de servidores de terceiros para armazenagem de dados e execução
remota de aplicações. Este trabalho mostra as vantagens da computação nas nuvens para
empresas de pequeno, médio e grande porte, incluindo comparações de desempenho e relação
custo-benefício entre o modelo tradicional e esta nova abordagem. São demonstradas algumas
ferramentas do mercado, apurando seus respectivos resultados e implementando um ambiente
com a união das melhores, tendo por finalidade proporcionar uma solução de baixo custo,
escalável – com possibilidade de crescimento – e com excelente grau de colaboração online.
O trabalho também busca um ambiente altamente disponível e com alto grau de abstração a
fim de minimizar o impacto para o usuário final.

Palavras-chave: cloud computing. computação nas nuvens. alta disponibilidade. ambiente
corporativo. sistemas distribuídos.
ABSTRACT

The computing era based on web and the recent concept of virtualization initiated the
emergence of a new approach to minimize the costs with infrastructure of technology
information in corporative environments: the cloud computing. It deals of the renting of third-
party servers for data storage and remote execution of applications. This study shows the
advantages of cloud computing for companies of small, medium and big size, including
comparisons of performance and cost-benefit relation between the traditional model and this
new approach. Some market tool are demonstrated, checking their respective results and
implementing an environment with the union of the best, aiming at providing a solution of
low cost, scalable – with possibility of growth – and an excellent degree of on line
collaboration. This study also searches for an environment highly available and with a great
degree of abstraction intending to minimize the impact for the final user.

Keywords: cloud computing. high availability. corporative environment. distributed systems.
LISTA DE FIGURAS
Figura 1 - Diferenças entre as camadas dos protocolos ISO/OSI e TCP/IP.............................22

Figura 2 - Organização do cluster Beowulf...............................................................................27

Figura 3 - Organização virtual provida pela computação em grade.........................................28

Figura 4 - Níveis de divisão da computação nas nuvens segundo a ontologia proposta..........37

Figura 5 - Aplicativos de computação nas nuvens divididos em grupos de usuários...............43

Figura 6 - Organização do VMware vSphere, o primeiro sistema operacional em nuvem do
mercado.....................................................................................................................................49

Figura 7 - Login de usuário no modo de simulação local do Google App Engine...................59

Figura 8 - Tela de criação de nova aplicação no Google App Engine......................................60

Figura 9 - Tela de Login do aplicativo-exemplo para Google App Engine...............................61

Figura 10 - Tela do Painel do Usuário do aplicativo-exemplo para Google App Engine.........62

Figura 11 - Exemplo de e-mail enviado através do aplicativo-exemplo...................................63

Figura 12 - Volume de buscas no Google para os termos Google Docs, Microsoft Office e
OpenOffice................................................................................................................................65

Figura 13 - Variação no tempo de upload de documentos de texto..........................................67

Figura 14 - Variação no tempo de carregamento de documentos de texto................................67

Figura 15 - Variação no tempo de impressão de documentos de texto.....................................68

Figura 16 - Variação no tempo de upload de planilhas de cálculo............................................69

Figura 17 - Variação no tempo de carregamento de planilhas de cálculo.................................69

Figura 18 - Variação no tempo de impressão de planilhas de cálculo......................................70

Figura 19 - Variação no tempo de tarefas sobre apresentações de slides..................................71

Figura 20 - Variação no tempo de upload de uma imagem para o Google Docs......................72

Figura 21 - Tempo de upload e conversão de arquivos de texto com o mesmo conteúdo........73
Figura 22 - Área de trabalho e barra de inicialização rápida com atalhos de aplicativos
remotos apresentados de forma semelhante a aplicativos desktop tradicionais........................77

Figura 23 - Menu Iniciar com atalhos de aplicativos remotos apresentados de forma
semelhante a aplicativos desktop tradicionais...........................................................................78

Figura 24 - Google Contacts apresentado de maneira semelhante a um aplicativo desktop.....79

Figura 25 - Google Docs apresentado de maneira semelhante a um aplicativo desktop..........79

Figura 26 - Zoho Projects apresentado de maneira semelhante a um aplicativo desktop.........80

Figura 27 - Gmail apresentado de maneira semelhante a um aplicativo desktop.....................80

Figura 28 - LinkedIn apresentado de maneira semelhante a um aplicativo desktop.................81

Figura 29 - Google Calendar apresentado de maneira semelhante a um aplicativo desktop....81

Figura 30 - To Do List apresentado de maneira semelhante a um aplicativo desktop..............82

Figura 31 - Zoho Chat apresentado de maneira semelhante a um aplicativo desktop..............82
LISTA DE TABELAS

Tabela 1 - Comparativo entre TI Interno e Serviços Terceirizados...........................................39

Tabela 2 - Comparativo entre Serviços Terceirizados e Computação nas Nuvens...................40

Tabela 3 - Características dos arquivos utilizados para os testes..............................................66

Tabela 4 - Compatibilidade entre elementos das suítes............................................................74
LISTA DE ABREVIATURAS E SIGLAS


API – Application Programming Interface
CaaS – Communication as a Service
CAN – Campus Area Network
CDN – Content Delivery Network
CGI – Common Gateway Interface
CSS – Cascading Style Sheet
DaaS – Data-Storage as a Service
DOC – Extensão padrão do Microsoft Word 2003
DOCX – Extensão padrão do Microsoft Word 2007
EC2 – Elastic Compute Cloud
Eucalyptus – Elastic Utility Computing Architecture Linking Your Programs To Useful
Systems
FTP – File Transfer Protocol
GFS – Google File System
HaaS – Hardware as a Service
HTML – HyperText Markup Language
IaaS – Infrastructure as a Service
IDL – Interface Definition Language
IP – Internet Protocol
JPEG – Joint Photographic Experts Group
KB – Kilobyte
Kbps – Kilobit por segundo
LAN – Local Area Network
MAN – Metropolitan Area Network
MB – Megabyte
Mbps – Megabit por segundo
ODP – Open Document Presentation
ODS – Open Document Spreadsheet
ODT – Open Document Text
PaaS – Platform as a Service
PAN – Personal Area Network
PC – Personal Computer
PDA – Personal Digital Assistants
PDF – Portable Document Format
PPT – Extensão padrão do Microsoft PowerPoint 2003
PPTX – Extensão padrão do Microsoft PowerPoint 2007
QoS – Quality of Service
RAM – Random Access Memory
REST – Representational State Transfer
s – segundos
S3 – Simple Storage Service
SaaS – Software as a Service
SAN – Storage Area Network
SDK – Software Development Kit
SMS – Short Message Service
SMTP – Simple Mail Transfer Protocol
SO – Sistema Operacional
SOA – Service-Oriented Architecture
SOAP – Simple Object Access Protocol
SP3 – Service Pack 3
TCP – Transmission Control Protocol
TCP/IP – Transmission Control Protocol / Internet Protocol
TI – Tecnologia da Informação
URL – Uniform Resource Locator
VPC – Virtual Private Cloud
VPN – Virtual Private Network
WAN – Wide Area Network
WSGI – Web Server Gateway Interface
XLS – Extensão padrão do Microsoft Excel 2003
XLSX – Extensão padrão do Microsoft Excel 2007
XML – eXtensible Markup Language
SUMÁRIO

1 INTRODUÇÃO....................................................................................................................13

2 SISTEMAS DISTRIBUÍDOS.............................................................................................15
2.1 METAS...............................................................................................................................16
2.1.1 Acesso a recursos............................................................................................................16
2.1.2 Transparência da distribuição......................................................................................17
2.1.3 Abertura..........................................................................................................................18
2.2 REDES DE INTERCONEXÃO.........................................................................................19
2.2.1 Organização das Redes..................................................................................................20
2.2.2 Tipos de Redes................................................................................................................20
2.2.3 Protocolos de Rede.........................................................................................................21
2.2.3.1 Modelo de referência OSI.............................................................................................22
2.2.3.2 Protocolo TCP/IP..........................................................................................................23
2.2.4 Segurança em Redes......................................................................................................24
2.3 ESCALABILIDADE..........................................................................................................25
2.4 SISTEMAS DE COMPUTAÇÃO DISTRIBUÍDOS..........................................................26

3 COMPUTAÇÃO NAS NUVENS........................................................................................30
3.1 CONCEITUAÇÃO.............................................................................................................30
3.2 CARACTERÍSTICAS........................................................................................................31
3.3 MODELOS DE SERVIÇO.................................................................................................32
3.3.1 Nível de Aplicação..........................................................................................................33
3.3.2 Nível de Ambiente de Software.....................................................................................33
3.3.3 Nível de Infraestrutura de Software.............................................................................34
3.3.4 Nível de Kernel de Software..........................................................................................36
3.3.5 Nível de Hardware e Firmware.....................................................................................37
3.4 ECONOMIA.......................................................................................................................38
3.5 APLICAÇÕES E PÚBLICO-ALVO...................................................................................40
3.5.1 Usuários Domésticos......................................................................................................41
3.5.2 Comunidades e Grupos.................................................................................................42
3.5.3 Corporações....................................................................................................................42

4 PROVEDORES DE SERVIÇOS EM NUVEM................................................................44
4.1 AMAZON WEB SERVICES..............................................................................................44
4.1.1 Amazon Elastic Compute Cloud (Amazon EC2)........................................................44
4.1.2 Amazon SimpleDB.........................................................................................................45
4.1.3 Amazon Simple Storage Service (Amazon S3)............................................................45
4.1.4 Amazon CloudFront.......................................................................................................45
4.1.5 Amazon Elastic MapReduce.........................................................................................46
4.1.6 Amazon Virtual Private Cloud (Amazon VPC)...........................................................46
4.2 SUN.....................................................................................................................................46
4.3 IBM.....................................................................................................................................47
4.4 EUCALYPTUS...................................................................................................................48
4.5 VMWARE...........................................................................................................................48
4.5.1 VMware vCloud.............................................................................................................48
4.5.2 VMware vSphere............................................................................................................49
4.6 MICROSOFT......................................................................................................................50
4.7 GOOGLE............................................................................................................................50

5 ESTUDOS DE CASO..........................................................................................................51
5.1 ESTUDO DE CASO 1: FRAMEWORK GOOGLE APP ENGINE....................................51
5.1.1 Conjunto de APIs...........................................................................................................52
5.1.2 Limitações.......................................................................................................................54
5.1.3 Vantagens........................................................................................................................54
5.1.4 Desvantagens..................................................................................................................55
5.1.5 Tutorial de Desenvolvimento de Aplicativo-exemplo..................................................55
5.1.5.1 Preparação do ambiente de desenvolvimento...............................................................56
5.1.5.2 Criando um novo projeto..............................................................................................56
5.1.5.3 Testando o projeto.........................................................................................................58
5.1.5.4 Efetuando upload do projeto.........................................................................................60
5.1.6 Avaliação dos Resultados...............................................................................................63
5.2 ESTUDO DE CASO 2: PLATAFORMA GOOGLE DOCS...............................................64
5.2.1 Testes de Desempenho em Relação à Velocidade de Acesso.......................................65
5.2.2 Testes de Compatibilidade.............................................................................................73
5.2.3 Avaliação dos Resultados...............................................................................................74

6 SOLUÇÃO EM NUVEM PARA AMBIENTES CORPORATIVOS...............................75
6.1 PROPOSTA DE AMBIENTE.............................................................................................75
6.2 SISTEMA TRADICIONAL X SOLUÇÃO EM NUVEM.................................................83

CONCLUSÃO.........................................................................................................................84

REFERÊNCIAS......................................................................................................................87

ANEXOS..................................................................................................................................90
ANEXO A – Limitações do Google App Engine......................................................................91
ANEXO B – Código-fonte do aplicativo-exemplo para Google App Engine..........................94
ANEXO C – Tabela de Dados Coletados nos Testes com Google Docs................................101
1 INTRODUÇÃO


       A necessidade de reinvenção é uma característica comum à ciência. Novos modelos e
soluções devem surgir para que a evolução seja possível e de fato alcançada. No meio
corporativo esta premissa é bastante importante, uma vez que inovação é a palavra-chave para
qualquer empreendimento, seja ele atuante no ramo que for. Contudo, a preocupação com o
crescimento não pode ser atrapalhada por fatores que deveriam facilitar as tarefas cotidianas,
como o setor de tecnologia da informação. Ele pode, muitas vezes, representar um “peso” na
estrutura de uma empresa, significando atrasos devido a determinadas deficiências e gastos
adicionais com mão-de-obra e infraestrutura.
       Dentro dos sistemas distribuídos, visando a economia no meio corporativo, surgiu o
modelo recente conhecido por computação nas nuvens. A ideia é nova e ainda está
amadurecendo. Consiste no “aluguel” de espaços em servidores de terceiros para hospedagem
de dados e aplicativos da empresa, eliminando a necessidade de manter desenvolvedores e
equipamentos subutilizados dentro das dependências da empresa. O investimento é
consideravelmente menor se comparado ao modelo tradicional e, ainda, elimina a
preocupação com TI, permitindo que a empresa concentre-se apenas no seu ramo de
atividade.
       Este trabalho objetiva conceituar o modelo computacional distribuído em questão,
evidenciando vantagens e desvantagens, avaliando o desenvolvimento de um aplicativo para a
infraestrutura, efetuando comparações de serviços disponíveis na Web já adaptados ao modelo
e, por fim, sugerindo uma solução genérica em nuvem. O que motiva a realização deste
estudo é o fator econômico que possui grande evidência, a possibilidade de aumento da vida
útil do hardware e a vantagem de possibilitar à empresa direcionar suas preocupações para o
negócio, não focando tanto no setor de TI. É possível comprovar por meio de testes com
sistemas em nuvem, que o uso do modelo é viável, exigindo uma abordagem ligeiramente
diferentes da tradicional. Os gráficos apresentados demonstram onde é necessário atuar para
obter o desempenho aceitável e o equilíbrio adequado na adoção de um sistema
computacional distribuído em nuvem.
       No Capítulo 2, apresenta-se uma caracterização dos sistemas distribuídos,
especificação de metas a serem cumpridas quando da adoção dos mesmos e apresentação dos
14


principais sistemas computacionais distribuídos. Em seguida, no Capítulo 3, o foco passa a ser
o modelo computacional distribuído conhecido por computação nas nuvens, apresentando
vantagens e desvantagens, classificação do modelo em níveis e caracterização das aplicações
e do público-alvo. O Capítulo 4 mostra alguns serviços em nuvem já em uso no mercado e sua
classificação dentro dos níveis previamente abordados. Em seguida, no Capítulo 5, são
apresentados dois estudos de caso para justificar a possibilidade de adoção da computação nas
nuvens como solução de boa relação custo-benefício para ambientes corporativos. O primeiro
deles abordando o desenvolvimento para a plataforma Google App Engine e o segundo
avaliando o desempenho, a compatibilidade e os fatores de migração para o serviço Google
Docs. Para concluir, o Capítulo 6 apresenta uma proposta de ambiente em nuvem, com custo
reduzido e que pode ser aplicada de maneira geral.
2 SISTEMAS DISTRIBUÍDOS


       Ao mesmo tempo em que se iniciaram as primeiras interligações de computadores,
surgiu a ideia de distribuir aplicações entre eles de modo a melhor utilizar recursos que
poderiam estar ociosos durante parte do tempo. Com o aprimoramento da velocidade e da
confiabilidade das redes, cada vez mais computadores no mundo tornaram-se interconectados,
dando fim a uma era em que apenas grandes corporações e ambientes acadêmicos eram
detentores de tal estrutura.
       Os avanços da era da informação são cada vez mais rápidos e capazes de oferecer
facilidades no dia-a-dia da sociedade moderna. Todos os segmentos de mercado têm migrado
para aplicações Web visando oferecer maior comodidade ao cliente, que pode realizar
transações bancárias, efetuar reservas em hotéis e companhias aéreas, ler notícias ou acessar
documentos oficiais a partir de casa, escritório, dispositivos móveis etc., a qualquer hora do
dia. Tais avanços foram viabilizados pelo notável aumento da facilidade de aquisição de
microcomputadores, uma vez que estes tiveram seu custo reduzido significativamente, e pelo
avanço nas redes de comunicação pelo mundo, as quais popularizaram o acesso à Internet,
especialmente em ambientes domésticos.
       Com o aumento do número de computadores e dos serviços disponibilizados na rede
mundial, a preocupação passou a residir no desempenho dos equipamentos utilizados. A
indústria de microprocessadores não conseguiu manter o mesmo ritmo de crescimento no
poder de processamento de seus novos produtos, contudo a demanda por este crescimento
continuava aumentando.




                         As limitações na capacidade de processamento impõem restrições aos muitos tipos
                         de software, tais como os programas de escritório, de manipulação de imagens,
                         jogos, científicos e servidores utilizados nas organizações. Uma forma de contornar
                         a limitação local de processamento é a utilização de técnicas que possibilitem o
                         processamento distribuído. (DANTAS, 2005, p. 3, 4)




       O uso de computação distribuída passou a ganhar espaço em universidades, centros de
16


pesquisas e empresas de tecnologia da informação, sendo vista como uma alternativa viável
ao uso das arquiteturas computacionais centralizadas e suas limitações. “Um sistema
distribuído é um conjunto de computadores independentes que se apresenta aos seus usuários
como um sistema único e coerente”, como define Tanenbaum (2007, p. 1). Devido às
características de aumento exponencial de processamento de tarefas, alta disponibilidade e por
apresentar maior tolerância a falhas é que os sistemas distribuídos passaram a ser
considerados sistemas de alto desempenho ou alta disponibilidade, atendendo a um vasto
mercado de sistemas conhecidos como críticos.
       Os sistemas distribuídos são a solução para aqueles ambientes onde há a necessidade
de aumento da capacidade de processamento de informações, compartilhamento de dados e
sem grandes custos. Fica claro que não é recomendado aplicar sistemas distribuídos onde não
há necessidade, baseando-se apenas no fato de que esta abordagem pode trazer boas
vantagens.




2.1 METAS


       É necessário ter metas ao decidir pelo uso de sistemas distribuídos e algumas destas
metas, segundo Tanenbaum (2007, p. 2-10), devem ser devidamente cumpridas.




2.1.1 Acesso a recursos


       A principal meta desejada com o uso de um sistema distribuído é o compartilhamento
de recursos controlado, tanto para aplicações, quanto para usuários. Há algumas razões para
querer compartilhar recursos, como por exemplo, compartilhando uma impressora na rede ou
o acesso a um supercomputador permite que um número maior de colaboradores usufrua deste
recurso, resultando em um melhor aproveitamento do mesmo com economia financeira.
       A colaboração e a troca de informações é um fator muito relevante e cada vez mais
buscado. Um exemplo claro é a Internet com seu crescimento acelerado, que utiliza
protocolos simples para trocas de arquivos, o que possibilitou que grupos dispersos
geograficamente pudessem estabelecer uma forma eficiente de colaboração e edição.
17


2.1.2 Transparência da distribuição


       Uma meta importante no uso de sistemas distribuídos é a ocultação da distribuição de
seus processos, isto é, torná-lo transparente de modo que o sistema seja capaz de se apresentar
ao usuário como sendo um único sistema de computador. Existem vários tipos de
transparência:
   •   Transparência de acesso: oculta as diferenças de representação dos dados e como se
       dá o acesso aos recursos, estabelecendo padrões de exibição de arquivos ao usuário e
       às aplicações, escondendo as diferenças entre sistemas operacionais e suas variações
       quanto à nomeação de arquivos. Além das diferenças entre sistemas operacionais, a
       transparência de acesso busca ocultar diferenças entre arquiteturas de máquinas,
       devendo oferecer a mesma visão do sistema para qualquer estação de trabalho
       existente em uma rede heterogênea.
   •   Transparência de localização: é responsável pela ocultação da localização física de
       um recurso dentro do sistema. A nomeação é a principal forma de obter este tipo de
       transparência, onde é possível utilizar uma nomenclatura que não ofereça pistas sobre
       a localização do recurso. Um exemplo disso é o uso de URLs, as quais não
       especificam qual servidor está exatamente hospedando aquele site.
   •   Transparência de migração: oculta a mudança física de um recurso, o que não deve
       necessariamente alterar a forma de acesso ao mesmo. Ainda utilizando o exemplo das
       URLs, fica transparente aos utilizadores se determinado site sempre esteve localizado
       no servidor X ou se anteriormente esteve hospedado no servidor Y.
   •   Transparência de relocação: no momento em que um sistema dá suporte à migração
       de recursos em tempo real, ele possui transparência de relocação. É a mesma ideia da
       transparência de migração, com o diferencial de que o sistema não necessita ter seu
       funcionamento interrompido para efetuar a migração, sendo transparente aos usuários
       e aplicações, os quais podem prosseguir com suas atividades.
   •   Transparência de replicação: consiste no ato de replicar um recurso para aumentar
       sua disponibilidade. Por exemplo, um arquivo muito requisitado pode ter uma cópia
       criada e a forma de acesso gerenciada para que o caminho permaneça sendo o mesmo.
       Para tal, é necessário haver transparência de localização no sistema, a fim de ocultar
       fisicamente o recurso replicado.
   •   Transparência de concorrência: existe quando é possível a dois ou mais usuários ou
18


       aplicações possuírem acesso a um mesmo recurso, ao mesmo tempo, sem que estes
       percebam a concorrência de acesso. Para um sistema distribuído é muito importante a
       colaboração entre as estações de trabalho, sendo primordial tratar a concorrência de
       acesso a recursos compartilhados e ocultar este fato da camada de usuário e aplicação.
   •   Transparência à falha: um sistema distribuído está mais suscetível a falhas, uma vez
       que a complexidade da estrutura aumenta com heterogeneidade, acesso concorrente a
       recursos, compartilhamento eficiente etc., dificultando, por conseqüência, o
       gerenciamento do sistema. A transparência a falhas busca ocultar a ocorrência de
       falhas, permitindo que o sistema recupere-se do erro e continue seu funcionamento
       normal.
       Algumas vezes não é trivial e nem adequado o uso de transparência para ocultar todos
estes detalhes de usuários ou aplicações, uma vez que sistemas geograficamente distribuídos a
longas distâncias, certamente estarão limitados pela velocidade da rede que os conecta e à
capacidade de processamento dos computadores intermediários (TANENBAUM, 2007, p. 4).
As transparências são boas metas de projeto, mas necessitam ser avaliadas juntamente com
outras questões para determinar a viabilidade e a necessidade de implementá-las.




2.1.3 Abertura


       Tanenbaum (2007, p. 4) define um sistema distribuído aberto como um “sistema que
oferece serviços de acordo com regras padronizadas que descrevem a sintaxe e a semântica
desses serviços.” Os serviços que em redes de computadores são padronizados por protocolos,
nos sistemas distribuídos são especificados por meio de interfaces, normalmente descritas por
uma linguagem de definição de interface (Interface Definition Language – IDL).
       A existência de interfaces permite que, por exemplo, uma aplicação A comunique-se
com uma aplicação B, desde que B disponibilize uma interface padrão de comunicação que é
entendida por A. Uma interface deve ter todas as especificações necessárias para haver uma
comunicação completa, porém isto normalmente inexiste. Para ser completa ela deve
especificar tudo que é necessário para uma implementação, mas normalmente uma interface
não é absolutamente completa, exigindo que o desenvolvedor especifique algumas questões
de implementação.
       Com a obtenção de uma interface neutra e completa, duas características importantes
19


para sistemas distribuídos são também obtidas:




                        Interoperabilidade caracteriza até que ponto duas implementações de sistemas ou
                        componentes de fornecedores diferentes devem coexistir e trabalhar em conjunto,
                        com base na mera confiança mútua nos serviços de cada um, especificados por um
                        padrão comum. Portabilidade caracteriza até que ponto uma aplicação
                        desenvolvida para um sistema distribuído A pode ser executada, sem modificação,
                        em um sistema distribuído B que implementa as mesmas interfaces que A.
                        (TANENBAUM, 2007, p. 5, grifo do autor)




2.2 REDES DE INTERCONEXÃO


          A computação é sem dúvida sinônimo de evolução. As principais conquistas
tecnológicas do século XX se deram no campo do processamento e da distribuição de
informações. Entre os principais desenvolvimentos surgiram as redes de telefonia, o rádio, a
televisão, os precedentes da informática e o lançamento de satélites de comunicação. Como
resultado do crescimento acelerado, estas áreas estão convergindo cada vez mais, diminuindo
as diferenças entre coleta, transmissão, armazenamento e processamento de informações.
          Hoje é possível comunicar-se em questão de segundos com estações de trabalho
localizadas a milhares de quilômetros de distância geograficamente. E, à medida que evoluem
as maneiras de coleta e tratamento da informação, novos sistemas mais sofisticados devem
surgir.
          O velho modelo de um único computador atendendo às necessidades computacionais
de uma organização foi, há muitos anos, substituído pelas redes de computadores, nas quais o
trabalho é distribuído entre todas as estações interconectadas (TANENBAUM, 2003, p. 2).
Shimonski (2005, p. 4) define redes como sistemas que estão interconectados de alguma
maneira e suportam troca de informações entre si. Tanenbaum (2003, p. 2) explica que redes
são um “conjunto de computadores autômatos interconectados por uma única tecnologia.”
Neste capítulo definiremos aspectos a respeito das redes de computadores, citando
fundamentos de sua organização.
20


2.2.1 Organização das Redes


       O que define uma rede e a torna diferente das demais são alguns elementos citados
como fundamentais por Shimonski (2005, p. 5, 6):
   •   Hardware. Inclui os componentes físicos de um computador ou de uma rede, tais
       como adaptadores de rede que permitem a troca de informações através dela. Outros
       dispositivos que podem ser classificados como hardware são os roteadores, switches e
       hubs.
   •   Mídia. Consiste nos cabos ou tecnologias sem fio, as quais transferem os dados por
       toda a rede.
   •   Protocolos. São espécies de regras que controlam como os dados são enviados entre
       os computadores. O protocolo mais popular é o TCP/IP (Transmission Control
       Protocol / Internet Protocol).
   •   Topologia. Define o projeto da rede, como ela é organizada e descreve como os
       computadores estão conectados fisicamente.
   •   Tipo de rede. Define o tamanho da rede e sua escala em uma área geográfica.
   •   Modelo de rede. Define os níveis de segurança disponíveis e os componentes
       necessários para efetuar as conexões.
   •   Acesso. Determina quem pode utilizar a rede e como será este acesso, além de ditar se
       recursos deverão ser públicos ou privados.
   •   Sistema Operacional de Rede. A rede pode ter um servidor que disponibiliza
       serviços para diversos computadores, o qual deverá rodar um sistema operacional de
       rede, como Windows ou Linux.
   •   Outros softwares e dispositivos. Permitirão acesso a recursos como sites internos,
       correio eletrônico, bancos de dados etc.




2.2.2 Tipos de Redes


       Redes podem conectar estações de trabalho próximas, em um limitado espaço físico,
ou estações a longas distâncias geográficas. Podem ainda ser consideradas redes criadas para
algumas finalidades específicas. Para identificar as redes de computadores quanto a sua
21


abrangência física, foram convencionadas algumas nomenclaturas:
   •   Rede Local (LAN – Local Area Network). São redes privadas contidas em um único
       edifício ou campus universitário com até alguns quilômetros de extensão. Elas têm
       tamanho limitado, o que implica que o pior tempo de transmissão é limitado e
       conhecido com antecedência.
   •   Rede Geograficamente Distribuída (WAN – Wide Area Network). Abrange uma
       grande área geográfica, podendo ser até mesmo um país ou continente.
   •   Rede Metropolitana (MAN – Metropolitan Area Network). Abrange uma cidade.
       Um bom exemplo deste tipo de rede são as redes de transmissão de TV a cabo, criadas
       para levar sinal até lugares onde não era possível utilizar a transmissão pelo ar.
   •   Rede de Armazenagem (SAN – Storage Area Network). Serve para conectar
       dispositivos de armazenagem a altas velocidades, sem a necessidade da
       implementação de uma LAN ou WAN para tal.
   •   Rede Pessoal (PAN – Personal Area Network). Trata-se do uso bem limitado de redes
       wireless de poucos metros de alcance para comunicação entre dispositivos pessoais,
       como notebooks, PDAs, telefones móveis, entre outros.
   •   Rede de Campus (CAN – Campus Area Network). É a nomenclatura utilizada para
       uma série de LANs existentes em edifícios próximos fisicamente, muito comumente
       encontradas em empresas e campus universitários. É maior que uma LAN e menor que
       uma MAN.




2.2.3 Protocolos de Rede




                       O estabelecimento de uma conexão física entre dois computadores não é suficiente
                       para que eles se comuniquem. A comunicação livre de erros, confiável e eficiente
                       entre computadores exige a implementação de sistemas de software elaborados que
                       geralmente são chamados protocolos. [...] Exige que os meios de transmissão sejam
                       capazes de manipular a heterogeneidade de equipamentos e conexões. (OZSÜ;
                       VALDURIEZ, 2001, p. 68)




       A arquitetura ISO/OSI serviu como base para o protocolo mais conhecido nas redes do
tipo WAN. Entre cada camada de nós, está especificada uma interface clara que define a
22


passagem de informações entre as camadas de software e hardware. Semelhante ao OSI, outro
protocolo muito difundido é o TCP/IP, que possui menos camadas e não especifica a camada
de host para rede. O OSI possui sete camadas, enquanto o TCP/IP apresenta cinco. As
diferenças entre os protocolos e as camadas existentes em cada protocolo podem ser vistas na
Figura 1.




             Figura 1 - Diferenças entre as camadas dos protocolos ISO/OSI e TCP/IP




                        O protocolo coloca caracteres de controle no início e no final do conjunto de dados
                        transmitidos. Estes controles são conferidos ao chegarem na outra ponta, pelo outro
                        programa/protocolo idêntico ao anterior. Se ao longo da transmissão ocorreu algum
                        erro, o protocolo deve tentar enviar novamente os mesmos, até que cheguem
                        corretamente. (SOUSA, 1996, p. 39)




2.2.3.1 Modelo de referência OSI


       O modelo OSI (Open Systems Interconnection) é um protocolo que permite a
integração de diversos componentes. Ele divide as etapas de transmissão, definindo como
deve proceder cada etapa do processo ao transferir dados. Cada nível oferece serviços ao nível
seguinte e estão assim classificados:
   •   Nível 7 – Aplicação: trata-se dos programas aplicativos do usuário, o que pode ser
23


         banco de dados, correio eletrônico etc.
   •     Nível 6 – Apresentação: é onde ocorre a conversão dos dados. Ex.: compressão de
         dados, conversão de formatos, criptografia entregando os dados convertidos à
         aplicação.
   •     Nível 5 – Sessão: estabelece a conexão entre aplicações, definindo como vai ser feita a
         troca de informações e o modo de transmissão.
   •     Nível 4 – Transporte: faz o controle da transferência de dados entre os computadores,
         garantindo que a mensagem seja entregue e evitando duplicações.
   •     Nível 3 – Rede: encaminha pacotes, faz contabilização e transferência de dados para
         outra rede.
   •     Nível 2 – Controle de linha: faz a detecção e a correção de erros, fazendo com que a
         linha física pareça livre de erros.
   •     Nível 1 – Físico: especifica conexões elétricas, cabos, nível de voltagem de luz etc.




2.2.3.2 Protocolo TCP/IP


         O protocolo TCP/IP foi criado para atender necessidades de endereçamentos e
problemas de interconexão de redes, garantindo interoperabilidade entre diferentes sistemas e
objetivando ser transparente aos diferentes hardwares de diferentes plataformas, protocolos e
interfaces do nível físico existentes (SOUSA, 1996, p. 91). Trata-se de um grupo de
protocolos e padrões que definem como deve funcionar o acesso a correio eletrônico,
transferência de arquivos etc., que interagem entre si a fim de transferir dados de um ponto a
outro.
         Os protocolos mais comuns dentro da arquitetura TCP/IP são:
   •     IP: envia datagramas, mas não controla envio/recebimento correto dos dados.
   •     TCP: transporta os dados, efetuando correção de dados para garantir sua integridade.
   •     FTP: O File Transfer Protocol é utilizado para efetuar o compartilhamento e a
         transferência de arquivos remotos, através do TCP.
   •     SMTP: O Simple Mail Transfer Protocol é o protocolo que trata de acessos a correio
         eletrônico.
24


2.2.4 Segurança em Redes


       O fator segurança é uma das grandes preocupações ao utilizar redes e, principalmente,
no momento em que dados passam a ser trafegados pela Internet.




                        A segurança é um assunto abrangente e inclui inúmeros tipos de problemas. Em sua
                        forma mais simples, a segurança se preocupa em garantir que pessoas mal-
                        intencionadas não leiam ou, pior ainda, modifiquem mensagens secretamente
                        enviadas a outros destinatários. (TANENBAUM, 2003, p. 767)




       São necessárias algumas técnicas para trafegar dados com segurança. Segundo
Tanenbaum (2003, p. 770-804), as mais utilizadas são:
   •   Criptografia: As informações a serem enviadas são transformadas em códigos que
       seguem um padrão especificado por uma chave. Para ser possível desfazer esta
       criptografia e ler a mensagem no destino, é necessário possuir uma cópia da chave de
       encriptação e realizar o processo inverso.
   •   Algoritmos de chave simétrica: São algoritmos de criptografia que buscam criar
       chaves mais elaboradas, procurando tornar praticamente impossível o entendimento da
       encriptação. Este tipo de algoritmo utiliza a mesma chave para codificação e
       decodificação.
   •   Algoritmos de chave pública: Neste caso, a chave de criptografia e a chave de
       descriptografia são diferentes e é muito difícil derivar uma a partir da outra. Desta
       maneira, uma chave de criptografia é criada e distribuída publicamente, mas a chave
       de descriptografia é mantida em segredo, permitindo que qualquer indivíduo
       interessado no envio de mensagens secretas a alguém possa fazê-lo tendo garantia de
       que apenas o destinatário será capaz de decifrá-la.
   •   Assinaturas digitais: Buscam substituir assinaturas que em documentos impressos
       são feitas à mão, procurando uma identificação digital para documentos enviados pela
       Internet.
25


2.3 ESCALABILIDADE


       A escalabilidade é uma das metas mais importantes em sistemas distribuídos.
“Escalabilidade permite que um sistema distribuído cresça (adicione mais máquinas ao
sistema) sem afetar as aplicações e os usuários existentes” (DEITEL, 2005, p. 507).
Infelizmente, um sistema escalável perde capacidade de desempenho à medida que é
ampliado.
       Em um sistema que, por exemplo, um servidor trabalha para oferecer serviços
centralizados de acesso a dados e aplicativos, à medida que o sistema é ampliado haverá
gargalo de comunicação no servidor, logicamente, mesmo que este possua alta capacidade de
processamento. Se por um lado em alguns casos é necessário manter bancos de dados
centralizados por questões de segurança de dados, de outro fica claro que seria impossível
trabalhar sem replicar e distribuir dados visto que diversos sistemas trabalham com milhares
de requisições ao mesmo tempo.
       Mesmo algoritmos centralizados não constituem uma boa prática. Ao ampliar o
número de estações de trabalho em uma rede, o crescimento do roteamento de mensagens é
exponencial, o que resulta em funcionamento não eficiente se for centralizado. Desta maneira,
o trabalho dos algoritmos quando distribuídos deve utilizar comunicação assíncrona, tendo em
vista que a perfeita sincronização de relógios demandaria considerável esforço.
       Não só algoritmos, mas sistemas distribuídos como um todo devem se utilizar de
comunicação assíncrona para ocultar a latência de comunicação, distribuição e replicação. A
ideia, de acordo com Tanenbaum (2007, p. 7), é que após efetuar uma requisição, a aplicação
não fique parada aguardando por um retorno, devendo esta executar outra tarefa até a chegada
da resposta, o que dispara o funcionamento de um manipulador especial para finalizar a
requisição emitida anteriormente.
       Há casos em que esta técnica não se aplica, porque não é possível aguardar uma
resposta e executar outra operação naquele intervalo de tempo. Neste caso, é possível fazer a
transferência de informações constantemente ao servidor, podendo assim, por exemplo, fazer
a validação de um formulário enviando campo por campo durante o preenchimento do
mesmo. Enquanto o usuário digita o conteúdo dos campos do formulário, o sistema vai
fazendo a verificação dos dados já digitados e informa ao usuário em tempo de edição sobre
um possível erro de sintaxe, acelerando o processo no momento de submissão definitiva do
formulário.
26


                       Considerando que problemas de escalabilidade frequentemente aparecem sob a
                       forma de degradação do desempenho, em geral é uma boa ideia replicar
                       componentes por um sistema distribuído. A replicação não somente aumenta a
                       disponibilidade, mas também ajuda a equilibrar a carga entre componentes, o que
                       resulta em melhor desempenho. Além disso, em sistemas de ampla dispersão
                       geográfica, ter uma cópia por perto pode ocultar grande parte dos problemas de
                       latência de comunicação já mencionados. (TANENBAUM, 2007, p. 9)




       Uma das melhores formas de obtenção de replicação é o uso de cache. Um bom
exemplo de replicação por cache é o uso de servidores Proxy que armazenam o conteúdo de
páginas recentemente acessadas pelos clientes de uma LAN (Local Area Network) e, ao ser
requisitada novamente pelo mesmo ou por um cliente diferente, a página é carregada a partir
do cache, diminuindo então a latência e o tempo de resposta.
       A existência de uma série de cópias de um mesmo recurso às vezes pode gerar
inconsistência. Se uma das cópias for atualizada, todas as outras ficam inconsistentes e é
necessário utilizar técnicas especiais de controle de consistência. Em alguns casos é aceitável
para um cliente receber uma página verificada há poucos minutos, tendo em vista que não é
um site de informações constantemente atualizadas. Já em casos onde os resultados são
informados em tempo real e atrasos de alguns minutos podem fazer muita diferença, o uso de
cache não é uma boa prática.




2.4 SISTEMAS DE COMPUTAÇÃO DISTRIBUÍDOS


       Existem três modelos de sistemas de computação distribuídos, sendo dois deles
largamente empregados atualmente para aplicações de alto desempenho, e o terceiro
começando a compor o cenário de alternativas viáveis voltadas para, de modo especial, o
meio corporativo.
       No modelo computação de cluster, “o hardware subjacente consiste em um conjunto
de estações de trabalho ou PCs semelhantes, conectados por meio de uma rede local de alta
velocidade” (TANENBAUM, 2007, p. 10). O sistema operacional utilizado também é
semelhante entre elas. O uso deste tipo de computação surgiu a partir da diminuição do custo
para aquisição de computadores pessoais e da visão de que a união de vários computadores
para execução de tarefas paralelas poderia ser uma alternativa à compra de
27


supercomputadores e à reutilização de recursos obsoletos. Um exemplo bastante conhecido é
o cluster Beowulf baseado em Linux, cuja organização está representada na Figura 2.




                           Figura 2 - Organização do cluster Beowulf




       Estabelecendo uma comparação entre os clusters e os sistemas em grade percebemos
que o primeiro é homogêneo, apresentando mesmo sistema operacional, mesma arquitetura e
estando todos os nodos conectados à mesma rede, o que não acontece em sistemas em grade.
Nestes, existe alto grau de heterogeneidade: hardware, sistemas operacionais, redes, domínios
administrativos, políticas de segurança, entre outros. Um aspecto importante na computação
em grade é o fato de que “recursos de diferentes organizações são reunidos para permitir a
colaboração de um grupo de pessoas ou instituições” (TANENBAUM, 2007, p. 11).
       A organização de um sistema em grade se dá por meio de grupos conectados uns aos
outros em uma organização virtual, como apresenta a Figura 3. Dessa maneira, cada grupo
tem dentro de seu domínio, acesso exclusivo a determinados recursos, que podem ser clusters
ou impressoras, por exemplo, os quais não estão disponíveis a outros grupos. Quanto a outros
recursos o compartilhamento pode ser total, como por exemplo, a distribuição de tarefas de
processamento entre grupos para melhor utilização de nodos ociosos.
28




                          Figura 3 - Organização virtual provida pela
                                    computação em grade




       A computação em nuvem deriva dos modelos acima citados e é um conceito recente.
Trata-se de um modelo emergente de infraestrutura de tecnologia da informação desenvolvido
para oferecer recursos computacionais a alta velocidade. As estações de trabalho necessitam
basicamente de um sistema operacional e algumas configurações de acesso a recursos
disponíveis em servidores remotos. Como o usuário não sabe onde estão localizados
fisicamente estes recursos, adotou-se a nomenclatura “nuvem”, que representa um
aglomerado de servidores espalhados pelo mundo acessíveis via Internet. Os serviços são
entregues de maneira simples, provendo escalabilidade, qualidade diferenciada e enfoque no
usuário para prover inovação e eficiente tomada de decisões (IBM, 2009).




                                A tecnologia de serviços Web, que representa o próximo estágio da
                      computação distribuída, afetará profundamente as organizações no futuro. Serviços
                      Web abrangem um conjunto de padrões relacionados que podem habilitar quaisquer
                      duas aplicações de computador a se comunicar e trocar dados via Internet. Muitos
                      fatores indicam que os serviços Web mudarão radicalmente as arquiteturas de TI e os
                      relacionamentos entre parceiros. (DEITEL, 2005, p. 551)
29


       O que Deitel (2005) afirmou pode ser visto hoje com o nome de computação nas
nuvens. As vantagens, desvantagens e outros detalhes a respeito deste novo modelo
distribuído serão discutidos no próximo capítulo.
3 COMPUTAÇÃO NAS NUVENS


3.1 CONCEITUAÇÃO


       O termo computação nas nuvens, do inglês cloud computing, 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.
       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.
        Computação em nuvem, portanto, trata-se da utilização de softwares ou sistemas em
rede e da capacidade de prover recursos ao usuário sob demanda. Desta maneira, as
informações são permanentemente armazenadas em servidores na Internet (localizados na
“nuvem”), sendo realizadas caches destes dados em computadores desktop, notebooks,
dispositivos móveis, entre outros, os quais estarão fazendo uso da infraestrutura em nuvem.
       É 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ócio online, a partir
de qualquer dispositivo virtualmente disponível, mediante um pagamento por uso.
       Devido ao fato de permitir escalabilidade e elasticidade, o modelo oferece aos
administradores de tecnologia da informação uma maneira de aumentar a capacidade de
acordo com a demanda. Ou seja, com a adoção do modelo, não existe a necessidade de alto
investimento na substituição de hardware obsoleto, na compra de licenciamento de softwares
ou no treinamento de pessoal, uma vez que todo o processamento se dá em servidores
localizados nas "nuvens", pagando apenas pelo tráfego que de fato for gerado.
31


3.2 CARACTERÍSTICAS


       Na computação tradicional, os softwares rodam sob plataformas individuais e são
cópias instaladas em cada unidade de trabalho. Todos os documentos criados por tais
softwares são armazenados localmente no disco rígido do computador e podem ser acessados
por computadores de uma mesma rede, mas não por terminais localizados fora da mesma.
Esta abordagem pode ser considerada orientada a terminal.
       De modo contrário à abordagem supra-citada surge a computação nas nuvens. As
aplicações e os documentos utilizados não rodam e não são armazenados, respectivamente,
em unidades de trabalho, mas em servidores acessíveis a partir de outro dispositivo ou estação
via Internet. Se ocorrer alguma falha na unidade de trabalho, softwares e documentos
permanecem acessíveis, uma vez que estão armazenados em uma coleção de servidores.
Trata-se de uma abordagem orientada a documento.
       A computação em nuvem não deve ser confundida com computação em rede. Nesta
última, as aplicações e os documentos estão hospedados em servidores localizados dentro de
uma companhia e acessíveis apenas na rede da mesma. Já a computação em nuvem envolve
várias companhias, vários servidores e várias redes de transmissão, disponibilizando serviços
e documentos em qualquer local do mundo que ofereça acesso à Internet. Contudo, esta
infraestrutura de comunicação, processamento e armazenagem deve ser transparente ao
usuário final, mesmo que parcialmente.
       Esta transparência vem do conceito de abstração característico de todo sistema
computacional distribuído. “Um sistema distribuído é um conjunto de computadores
independentes que se apresenta aos seus usuários como um sistema único e coerente”, definiu
Tanenbaum (2007, p. 1). A infraestrutura é transparente ao usuário permitindo que o acesso
ocorra a partir de qualquer dispositivo com acesso à Internet, esteja ele rodando qualquer
sistema operacional e qualquer navegador devidamente atualizados.
       De acordo com Miller (2008), a organização pioneira na disponibilização de serviços
em computação nas nuvens, o Google, elenca seis propriedades do modelo:
   •   Orientação ao usuário: Uma vez que o usuário está conectado à nuvem, qualquer
       documento armazenado – arquivos de texto, mensagens, imagens, aplicações – torna-
       se propriedade do usuário.
   •   Orientação à tarefa: Em vez de focar na aplicação e o que ela pode fazer, o foco está
       no que o usuário necessita realizar e em como a aplicação pode auxiliá-lo. Aplicações
32


       tradicionais – editores de texto e planilhas de cálculo, e-mail, etc. - estão tornando-se
       menos importantes que os documentos criados por elas.
   •   Eficácia: O fato de se conectar centenas ou milhares de computadores a uma nuvem
       cria uma riqueza de poder computacional impossível de ser implementada com um
       único computador.
   •   Acessibilidade: Uma vez que dados são armazenados diretamente nas nuvens, o
       usuário tem a possibilidade de instantaneamente buscar mais informações de diversos
       repositórios. Não há limitação a uma única fonte de dados, como em uma unidade
       individual de trabalho.
   •   Inteligência: Com grandes montantes de informação armazenados em servidores nas
       nuvens, a mineração e análise de dados são técnicas necessárias para um
       aproveitamento mais inteligente da informação acessível. Arquiteturas em nuvem
       facilitam estas tarefas, uma vez que todos os dados e aplicações encontram-se
       centralizados.
   •   Programável: Muitas tarefas do modelo em nuvem devem ser automatizadas. Por
       exemplo, para proteger a integridade dos dados, as informações armazenadas em um
       único computador na nuvem devem ser replicadas para outros computadores da
       mesma nuvem. Se este computador ficar indisponível, a programação da nuvem
       automaticamente redistribui os dados daquele nodo para outro. Tratam-se de técnicas
       de tolerância a falhas.
       Em resumo, a computação em nuvem torna possível a mudança de foco do
computador para o usuário, da aplicação para a tarefa e do isolamento de dados para dados
acessíveis em qualquer local e compartilhados com qualquer membro que possua permissão.




3.3 MODELOS DE SERVIÇO


       Existem alguns tipos de computação em nuvem que caracterizam a abordagem
utilizada, cuja qual pode variar de acordo com a necessidade do consumidor e ser classificada
como: aplicações, ambientes de software, infraestrutura de software, kernel de software e
hardware (YOUSEFF, 2008). Esta abordagem está representada em níveis na Figura 4.
33


3.3.1 Nível de Aplicação


       O nível de aplicação é o mais visível ao usuário final. Normalmente, os serviços
prestados por este nível são acessíveis por usuários através de portais Web e, em alguns casos,
são serviços pagos. Este modelo mostrou-se atrativo para muitos usuários, uma vez que
diminui o peso da preocupação com a manutenção de software e o alto custo com operações e
suporte contínuos. Em outras palavras, o trabalho computacional é transferido aos datacenters
nos quais as aplicações em nuvem são desenvolvidas. Esta característica diminui as restrições
de hardware necessárias ao usuário final, além de fornecer ótimo desempenho a estações de
trabalho com hardware mais antigo, sem a necessidade de investimento na compra de novos
equipamentos.
       Este modelo simplifica e facilita até mesmo o trabalho dos provedores de serviços em
nuvem. Uma vez que a aplicação é desenvolvida e mantida na infraestrutura da companhia
que provê o serviço, os desenvolvedores podem criar pequenos pacotes de atualização e
adicionar novas funcionalidades sem atrapalhar o trabalho dos usuários. Isto convenciona uma
receita garantida ao desenvolvedor e traz comodidade ao utilizador, sendo benéfica para
ambos os lados e normalmente referenciada como SaaS - Software as a Service (Software
como Serviço).
       Apesar dos diversos benefícios oferecidos pelo modelo em questão, alguns problemas
de implantação limitam seu uso em larga escala. Especificamente, a segurança e a
disponibilidade de aplicações em nuvem são dois dos maiores problemas do modelo que
devem ser enfrentados por provedores e utilizadores. Mais um motivo para o retardo na
adoção de SaaS é a dificuldade na migração de dados para as nuvens.




3.3.2 Nível de Ambiente de Software


       O segundo nível de acordo com a proposta de Youseff (2008) é o ambiente de
software, também chamado de plataforma 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
34


suporte à escalabilidade necessária para tais aplicações. O serviço oferecido neste nível é
comumente tido como PaaS – Platform as a Service (Plataforma como Serviço). Um exemplo
deste tipo de serviço é o Google App Engine, o qual oferece um ambiente de desenvolvimento
em Python e APIs que permitem aplicações interagirem com a nuvem do Google. O
framework App Engine será abordado em detalhes mais adiante.
       Existem alguns benefícios para desenvolvedores de aplicações que voltam-se para
ambientes de programação em nuvem, incluindo estruturas que viabilizam escalabilidade e
balanceamento de carga automáticos, bem como a integração facilitada com outros serviços
para realização de tarefas como autenticação, tarefas de e-mail e interface com o usuário.
Desta forma, grande parte da complexidade de desenvolvimento é abstraída pelo ambiente de
programação e o desenvolvedor ganha a habilidade de integrar novos serviços a sua aplicação
de acordo com a necessidade. Em resumo, o desenvolvimento torna-se uma tarefa menos
complicada, há uma aceleração no tempo de implantação e minimização de falhas lógicas na
aplicação.




3.3.3 Nível de Infraestrutura de Software


       O nível de infraestrutura de software fornece recursos fundamentais para camadas de
nível superior, permitindo a criação de novos ambientes de software ou novas aplicações.
Prosseguindo na visão de Youseff (2008), este nível pode ser categorizado em: recursos
computacionais, armazenamento de dados e comunicações.


   a) Recursos Computacionais: Neste nível, máquinas virtuais (virtual machines) são a
       melhor maneira de fornecer recursos computacionais, já que oferecem ao usuário
       maior flexibilidade, uma vez que ele normalmente possui permissão total para uso da
       máquina virtual, estando apto a personalizar o software e obter maior performance e
       eficiência. Estes serviços são normalmente chamados IaaS – Infrastructure as a
       Service (Infraestrutura como Serviço). A virtualização é a tecnologia responsável pela
       existência deste componente de nuvem, o qual viabiliza ao usuário uma flexibilidade
       jamais vista em termos de configuração na proteção da infraestrutura física do
       datacenter. Recentemente, os avanços em virtualização de sistemas operacionais
       trouxeram dois conceitos plausíveis para o nível em questão: a paravirtualização e a
35


   virtualização assistida por hardware. Embora ambas as tecnologias abordem o
   isolamento como uma forma de aumento de desempenho entre máquinas virtuais
   compartilhando os mesmos recursos físicos, a interferência de desempenho entre
   máquinas virtuais que fazem uso da mesma cache não pode ser descartada. A perda de
   desempenho em máquinas virtuais compartilhando o mesmo meio físico, resulta na
   incapacidade dos fornecedores de serviços nas nuvens em oferecerem garantias
   aceitáveis de desempenho aos seus clientes.


b) Armazenamento de Dados: O segundo recurso de infraestrutura é 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 (Armazenamento de Dados como Serviço),
   um facilitador de tarefas de escalabilidade que podem ir além de servidores limitados.
   Sistemas de armazenamento de dados surgiram para suprir alguns requisitos sobre
   gerenciamento de dados e informações, incluindo alta disponibilidade, confiabilidade,
   desempenho, replicação e consistência de dados. Contudo, devido à natureza
   conflitante destes requisitos, não existe um sistema capaz de implementar todos eles.
   Alguns exemplos de sistemas de armazenamento de dados são: sistemas de arquivos
   distribuídos e bancos de dados relacionais com replicaçã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 infraestrutura em
   questão. Em consequência disto, estes sistemas possuem a obrigação de fornecer
   certas   capacidades   de   comunicação    “orientadas   a   serviço”,   configuráveis,
   programáveis, previsíveis e confiáveis. Com estas vantagens, o conceito de CaaS –
   Communication as a Service (Comunicação como Serviço) surgiu para oferecer
   suporte a determinados requisitos, tais como segurança em redes, encriptação de dados
   e monitoramento de rede. Apesar deste ser o modelo comercialmente menos adotado
   entre todos os serviços em nuvem existentes, segundo Youseff (2008), é possível
   observar em algumas pesquisas que várias decisões, protocolos e soluções de projeto
   arquitetural necessitam fornecer CaaS com QoS.
36


       Alguns recursos comuns de projeto são compartilhados entre os três componentes de
infraestrutura. Por exemplo, segurança, disponibilidade e qualidade de serviços estão entre as
características mais importantes. Entretanto, o oferecimento de outros mecanismos de
segurança para arquiteturas “orientadas a serviço” é uma rica área de estudos e pesquisas, com
enfoque um pouco diferente das comunidades de SOA – Service-Oriented Architecture
(Arquitetura Orientada a Serviços) e das comunidades de segurança.
       A interface com o usuário para componentes de insfraestrutura em nuvem varia
substancialmente de um sistema para outro. Exemplos de interfaces utilizadas neste modelo
são: SOAP – Simple Object Access Protocol e REST – Representational State Transfer.
Contudo, a própria característica de implementação “orientada a serviço” muito atrapalha,
sendo plausível projetar uma interface unificada e interativa através de um portal Web para
comunicar com serviços Web a fim de oferecer uma interface padronizada para serviços em
nuvem neste nível.




3.3.4 Nível de Kernel de Software


       O nível de Kernel de Software é o responsável por oferecer o gerenciamento de
software básico para os servidores físicos que compõem a nuvem. Neste nível, o Kernel de
Software tem a possibilidade de ser implementado como um Kernel de SO, hypervisor,
máquina virtual e/ou clustering middleware. Algumas aplicações em grid foram implantadas e
rodadas neste nível com algumas máquinas conectadas em cluster. Contudo, a falta de bons
mecanismos de abstração de virtualização em computação em grid, tornam o trabalho muito
semelhante à infraestrutura de hardware e o suporte à migração, pontos de checagem e
balanceamento de carga para aplicações deste nível sempre foram tarefas difíceis.
       O campo de pesquisa da computação em grid é vasto e alguns dos conceitos
desenvolvidos com tais estudos podem ser percebidos atualmente na computação nas nuvens.
Segundo Youseff (2008), pesquisas na área da computação em grid podem auxiliar
potencialmente nos avanços da computação nas nuvens, possibilitando mudanças
significativas da idéia atual do novo modelo para uma computação nas nuvens como utilidade
(utility computing).
37


3.3.5 Nível de Hardware e Firmware


       O último nível proposto na ontologia de Youseff (2008) é composto pelo hardware e
pelos componentes de rede, os quais formam o esqueleto da nuvem. Desta forma, o cenário de
usuários deste nível de computação nas nuvens é composto por empresas de grande porte que
necessitam suprir grandes requisitos na parte de TI e podem adotar o modelo HaaS –
Hardware as a Service (Hardware como Serviço).
       Neste tipo de serviço, a empresa fornecedora responsabiliza-se por gerenciar, operar e
atualizar o hardware de seus consumidores, por tempo determinado de sublocação. Este
modelo é vantajoso para o usuário a partir do momento em que elimina-se a preocupação com
investimentos na criação e manutenção de datacenters. Além disso, os fornecedores possuem
conhecimento técnico e infraestrutura de custo-benefício necessários para manter seus
sistemas, tornando-se especialistas no ramo. As características mais importantes de um
provedor de HaaS, entre outras, são agilidade e eficiência em escalar sistemas, manter
datacenters e minimizar o consumo de energia.
       Todos os níveis apresentados estão ilustrados em camadas na Figura 4.




    Figura 4 - Níveis de divisão da computação nas nuvens segundo a ontologia proposta

    Fonte: Adaptado de Youseff (2008)
38


3.4 ECONOMIA


       Os primeiros clientes a demonstrarem interesse na adoção da computação nas nuvens
foram as empresas. Tanto grandes quanto pequenas companhias têm a possibilidade de
redução de custos em TI e melhorias em produtividade com a utilização de ferramentas
baseadas na Web para gerenciamento de projetos, colaboração em documentos e
apresentações, gerenciamento de contatos empresariais, agendas e compromissos, etc. A
grande vantagem da computação nas nuvens para o meio empresarial é a capacidade de fazer
mais com orçamentos limitados.
       Outra vantagem que a computação nas nuvens traz para uma empresa são os
benefícios da portabilidade. Ao invés de prender-se a documentos e aplicações armazenados e
instalados em computadores localizados em escritórios ou empresas, os colaboradores podem
ter acesso a qualquer dado necessário a partir de qualquer lugar com acesso à Internet – em
casa, no trabalho, na rua.
       Segundo pesquisa publicada por George Reese (2008), o mundo está passando por
uma crise financeira jamais vista na história, o que impulsiona a busca por alternativas mais
baratas para dar continuidade a operações em empresas. “Os mercados de capitais estão
congelados e as empresas que necessitam fazer investimentos de capital para crescer ou
continuar as suas operações estão enfrentando um desafio” (REESE, 2008). A falta de capital
ocasiona uma falta de flexibilidade em aproveitamento da tecnologia para operar e
desenvolver um negócio. No momento em que não é possível para uma empresa conseguir um
empréstimo bancário, passa a ser necessário utilizar receitas da própria empresa para comprar
novos servidores e estações de trabalho.
       Tipicamente, quando uma empresa quer ampliar sua estrutura de TI, existem duas
alternativas apontadas por Reese (2008):
   •   Implementá-la por si própria, alugar equipamentos caso necessário;
   •   Terceirizar a infraestrutura para um provedor de serviços.
       Uma característica comum às duas alternativas é a necessidade de suprir picos de uso
independentemente do tempo gasto por eles, ou seja, a empresa deve possuir infraestrutura
capaz de sanar momentos de maior demanda, sejam eles de apenas uma hora durante um ano
ou de praticamente o ano inteiro. Em casos de pouca frequência destes picos, os equipamentos
ficam ociosos e/ou subutilizados.
       A análise proposta por Reese (2008) supõe que, para determinado cliente, dois
39


servidores de aplicação apoiados por dois servidores de banco de dados, mais um balanceador
de carga sejam a solução do problema. As opções seriam semelhantes às apresentadas na
Tabela 1.




Tabela 1 - Comparativo entre TI Interno e Serviços Terceirizados
                                         TI Interno ($)            Serviços Terceirizados ($)
Investimento de Capital                                   40.000                                0
Custos de Implantação                                     10.000                         5.000
Serviços Mensais                                              0                          4.000
Trabalho Mensal                                            3.200                                0
Custo após 3 anos                                     149.000                         129.000
Fonte: Reese (2008)




       De acordo com as observações feitas pelo pesquisador, assumem-se os seguintes
fatores: servidores com boa quantidade de memória RAM e um bom balanceador de carga;
custo após três anos é tido como 10% do custo do capital; um bom fornecedor de serviços
terceirizados com custo-benefício. Com esta visão, no cenário especificado acima, os serviços
terceirizados conseguem uma economia de 13,5% sobre a abordagem de manter um setor
interno de TI na empresa.
       Um dos atrativos de serviços terceirizados é a inexistência de investimento de capital.
Analisando a pesquisa de Reese (2008), para uma abordagem com TI interno, o investimento
inicial seria de 40.000 dólares, o que representa um altíssimo investimento inicial diante da
situação atual da economia. Esta conclusão, mostra que os argumentos sugerem a adoção da
abordagem de serviços terceirizados, mas Reese compara esta com a computação nas nuvens,
como pode ser visualizado na Tabela 2.
       Em comparação com o modelo de TI interno na empresa, a computação nas nuvens
consegue uma economia de 29%. E em comparação com serviços terceirizados, a computação
nas nuvens economiza 18% dos custos. É importante ressaltar que nesta pesquisa não estão
sendo consideradas questões como compra por capacidade e compra por uso, o que
aumentaria os ganhos com a computação nas nuvens, cuja qual é paga por uso.
40


Tabela 2 - Comparativo entre Serviços Terceirizados e Computação nas Nuvens
                                Serviços Terceirizados ($)       Computação nas Nuvens ($)
Investimento de Capital                                      0                            0
Custos de Implantação                                  5.000                          1.000
Serviços Mensais                                       4.000                          2.400
Trabalho Mensal                                              0                        1.000
Custo após 3 anos                                   129.000                        106.000
Fonte: Reese (2008)




       Além dos números, Reese afirma que existem outros benefícios econômicos com a
adoção da abordagem em nuvem, tais como: investimento inicial nulo, sejam quais forem as
necessidades do consumidor; discrepância entre o pico e a média de uso de processamento
torna a diferença entre o custo da computação em nuvem cada vez mais vantajosa em relação
a outras opções; no modelo em nuvem há automaticamente a inclusão de um bom espaço de
armazenamento, o qual é elástico e cresce de acordo com a necessidade, diferentemente de
outras opções que se tornariam consideravelmente mais caras quando da adição de novos itens
de hardware; redundância se torna mais barata a partir do momento em que esta é uma
preocupação extremamente importante por parte dos provedores de serviços em nuvem.




3.5 APLICAÇÕES E PÚBLICO-ALVO


       Existem diversas atividades desempenhadas por grupos de pessoas que podem ser
melhor realizadas e gerenciadas por sistemas computacionais, especialmente sistemas em
nuvem. Pode-se estabelecer formas de colaboração para tomadas de decisão, agendamento de
tarefas, eventos e compromissos, criação de orçamentos, controle de despesas, apresentações,
entre outras. De acordo com Miller (2008), a migração de aplicativos para as nuvens permitiu
o crescimento de grupos de colaboração, bem como a facilitação da execução de suas
atividades, especialmente com o surgimento de novos aplicativos para as nuvens. Ele ainda
divide usuários de computação nas nuvens em três grupos: usuários domésticos, comunidade
e grupos e corporações.
41


3.5.1 Usuários Domésticos

       É comum que todos os membros de uma família trabalhem em locais diferentes e
tenham, então, poucos momentos de comunicação verbal e pessoal. É possível centralizar as
comunicações entre membros em comunicações baseadas em webmail, acabando com a ideia
de e-mail acessível em um único computador via aplicações como o Microsoft Outlook que
efetuam download das mensagens para a estação de trabalho.
       Da mesma forma que a comunicação via e-mail, a armazenagem de compromissos em
agendas de aplicativos locais impedia ou dificultava a colaboração e visualização de eventos
programados entre membros de um grupo familiar. Para assegurar confirmações e
notificações de compromissos nos sistemas atuais, estão disponíveis estruturas automatizadas
para desempenhar tal tarefa. Ou seja, uma vez criado um evento por algum membro possuidor
de permissão, cada membro do grupo poderá receber notificações via e-mail ou mensagem
SMS, sendo capaz de confirmar ou não a sua participação. Além disso, o usuário pode
configurar seu sistema de agenda para ser notificado novamente alguns instantes antes da
ocorrência do evento, de acordo com as possibilidades de configuração oferecidas por seu
serviço de agenda.
       Outros serviços funcionam semelhantemente ou servem apenas como referência cujo
qual um grupo de membros pode editar. Neste caso, temos exemplos como listas de compras
de supermercado, listas de afazeres, gerenciamento de orçamentos e projetos escolares. Um
serviço muito comum e de ampla utilização, segundo Miller (2008), é a suíte de aplicativos
online Google Docs, que oferece serviços de edição de textos, planilhas e apresentações,
todos com possibilidade de colaboração online por número ilimitado de usuários. Além deste,
serviços de e-mail como Gmail, Windows Live Hotmail e Yahoo! Mail propiciam o
compartilhamento e introduzem novidades tais como a evidência do compartilhamento e os
serviços de comunicação instantânea. Pode-se citar também serviços de listas de tarefas como
Planner, Remember the Milk, Ta-da List, Bla-bla List, Tudu List e Voo2Do, que possuem
características diferentes entre si e os serviços de compartilhamento de álbuns de fotos online,
como o famoso Flickr. Veja a Figura 5, que demonstra uma nuvem de serviços divididos em
grupos, criada a partir da análise de serviços e com base em citações de Miller (2008).
42


3.5.2 Comunidades e Grupos


       Semelhantemente às possibilidades de colaboração disponíveis para grupos familiares,
existem ferramentas em nuvem para facilitar e gerenciar a troca de informações entre grupos e
comunidades de qualquer segmento. O gerenciamento de agendas e compromissos funciona
de modo a permitir que todos tenham como confirmar a participação em eventos, trabalhando
com notificações e permitindo a mais de um usuário gerenciar a agenda do grupo. De acordo
com a necessidade, existem algumas opções como Google Calendar, Yahoo! Calendar,
CalendarHub e Zvents.
       Para o gerenciamento de orçamentos de projetos é possível encontrar serviços como o
Salesforce.com AppExchange, um integrante da família Salesforce.com que traz um
detalhamento maior e mais precisão nos resultados. Contudo, gratuitamente é possível
encontrar algumas outras opções, tais como Google Spreadsheets e Zoho Sheet que oferecem
planilhas de cálculo online e colaborativas. Outra necessidade comum a grupos e
comunidades são ferramentas de marketing para projetos. Os serviços Google Docs e Zvents
facilitam estas atividades e redes sociais como Facebook e Myspace podem auxiliar no
aumento da visibilidade destes eventos entre nichos específicos. Veja a Figura 5, que ilustra a
divisão em grupos de alguns aplicativos em nuvem mais conhecidos, criada a partir da análise
de serviços e com base em citações de Miller (2008).




3.5.3 Corporações


       Esta é a classe de usuário que antes aderiu aos sistemas de computação nas nuvens,
segundo a visão de Miller (2008). A economia e o aumento de produtividade são interessantes
a pequenas e grandes empresas, as quais podem fazer mais com orçamentos limitados. Este é
o motivo pelo qual existem suítes dedicadas a oferecer conjuntos de ferramentas em um único
pacote, com integração entre elas, voltadas a empresas. Exemplos disto são Salesforce.com e
Google Apps. Ambos oferecem aplicativos de diversas espécies integrados, que juntos
substituem os softwares tradicionais instalados localmente nas estações de trabalho.
       O uso de computação nas nuvens ajuda empresas a gerenciar projetos com eficiência,
englobando agendas de compromissos compartilhadas entre membros da organização,
gerenciamento de projetos, relatórios, ferramentas de marketing, orçamentos, relatórios de
43


despesas, apresentações e mobilidade. Aplicativos como BigContacts e Highrise facilitam o
gerenciamento e a colaboração de listas de contatos e/ou clientes, da mesma forma que
projetos podem ser totalmente gerenciados por aplicativos como AceProject, Basecamp,
onProject e Project Insight.
       Existem alguns serviços de agendas de compromissos voltados para o meio
empresarial que pode-se citar, como o Appointment Quest, hitAppoint e Schedulebook, todos
oferecendo maiores opções de compartilhamento e visibilidade. Para um melhor entendimento
de aplicativos voltados a este meio, elaborou-se a Figura 5 a partir da análise de serviços e
com base em citações de Miller (2008).




Figura 5 - Aplicativos de computação nas nuvens divididos em grupos de usuários

Fonte: o autor
4 PROVEDORES DE SERVIÇOS EM NUVEM


       Existem alguns níveis de computação nas nuvens como visto no capítulo anterior.
Cada serviço possui detalhes que o diferenciam dos demais, como por exemplo, o custo de
uso e as limitações impostas. Algumas empresas dedicadas em disponibilizar serviços de
computação nas nuvens trabalham com módulos abertos a desenvolvedores, facilitando o
crescimento de suas plataformas e abstraindo a complexidade no desenvolvimento de sistemas
escaláveis.
       Muitos são os serviços existentes no mercado, mas existem alguns que podem ser
destacados. Os sistemas de cobrança da Amazon, por exemplo, seguem a ideia de pagamento
sob-demanda, cobrando do cliente apenas o que ele utiliza de fato. Além deste fator, um ponto
positivo dos serviços entregues pela Amazon é a integração entre eles.




4.1 AMAZON WEB SERVICES


       A Amazon Web Services existe desde 2006 e oferece uma série de serviços em
computação nas nuvens, cada um voltado a um específico nicho de usuário, para atender
desde a necessidade de taxas altas de processamento até a alta demanda de disponibilidade.




4.1.1 Amazon Elastic Compute Cloud (Amazon EC2)


       A Amazon Elastic Compute Cloud (Amazon EC2) é uma plataforma paga que oferece
remotamente um conjunto de computadores rodando Linux/UNIX ou Windows com
permissões de administrador do sistema, cuja qual é capaz de ampliar ou reduzir de acordo
com a necessidade do cliente. Isto possibilita “alugar” tantos computadores quanto forem
necessários e acessá-los remotamente, podendo o cliente instalar, acessar e desenvolver
aplicações para este ambiente, além de armazenar dados e documentos. Trata-se de uma
Infraestrutura como Serviço (IaaS), uma vez que oferece recursos para camadas de nível
superior, permitindo a criação de novos ambientes de software e de novas aplicações.
45


       O oferecimento do Amazon EC2 se dá de várias formas. O cliente decide quantas
estações de trabalho necessita, seja usuário doméstico ou corporativo, e contrata o tipo de
sistema operacional e outros recursos.




4.1.2 Amazon SimpleDB


       O Amazon SimpleDB é um serviço que provê as principais funções de um banco de
dados voltado para as nuvens. O objetivo do SimpleDB é diminuir a complexidade de uso de
bancos de dados escaláveis, permitindo ao desenvolvedor preocupar-se apenas com a
aplicação em desenvolvimento. Este tipo de serviço é classificado como Armazenamento de
Dados como Serviço (DaaS), visto que ele permite ao usuário armazenar seus dados em
discos remotos e acessá-los a qualquer momento e de qualquer lugar.
       O Amazon SimpleDB trabalha com uma abordagem que elimina a necessidade de
modelagem de dados, constantes manutenções e preocupação com aumento de desempenho, o
que normalmente acontece com desenvolvedores que utilizam bancos relacionais. O serviço
oferece um conjunto de APIs para armazenagem e acesso aos dados, possibilitando
implementar escalabilidade, pagando somente por recursos utilizados.




4.1.3 Amazon Simple Storage Service (Amazon S3)


       O Amazon S3 é outro exemplo de Armazenamento de Dados como Serviço (DaaS),
que diferencia-se do SimpleDB por ser voltado apenas à Internet. Trata-se de um sistema de
armazenamento de arquivos que vai desde 1Byte até 5GB, escalável, preparado para serviços
Web que realizem muitas requisições simultâneas.




4.1.4 Amazon CloudFront


       Amazon CloudFront é um serviço Web para distribuição de conteúdo. Ele integra-se a
outros serviços da Amazon para prover a desenvolvedores e empresas uma forma fácil de
distribuir conteúdo para seus clientes, com baixa latência e alta velocidade de transferência de
46


dados. A distribuição de conteúdo se dá por meio de uma rede global distribuída. As
requisições são automaticamente encaminhadas para a localidade mais próxima, garantindo
assim que o conteúdo seja fornecido com o menor tempo possível.
       O CloudFront é outro serviço classificado na categoria Armazenamento de Dados
como Serviço (DaaS), um dos mais baratos da Amazon.




4.1.5 Amazon Elastic MapReduce


       O Amazon Elastic MapReduce é um serviço Web que permite a empresas,
pesquisadores, analistas de dados e desenvolvedores realizarem o processamento de grandes
quantidade de dados de forma fácil e rentável. Trata-se de um serviço utilizador dos recursos
de infraestrutura do Amazon EC2 e do Amazon S3. Os usos mais indicados para o serviço
são tarefas como indexação da Web, mineração de dados, análise de arquivos de log,
aprendizado   de   máquina,   análise   financeira,     simulação   científica   e   investigação
bioinformática. Trata-se de uma Infraestrutura como Serviço (IaaS).




4.1.6 Amazon Virtual Private Cloud (Amazon VPC)


       O Amazon Virtual Private Cloud (Amazon VPC) é uma forma de transmissão de dados
com segurança e transparência entre a infraestrutura de TI de uma empresa e a infraestrutura
em nuvem da Amazon. O serviço permite que uma empresa conecte sua infraestrutura
existente a um conjunto de recursos oferecidos pela Amazon, de forma isolada através de uma
Rede Virtual Privada (VPN), ampliando suas capacidades de gestão, tais como serviços de
segurança, firewalls e sistemas de detecção de intrusão. Neste caso, classifica-se o Amazon
VPC em Comunicação como Serviço (CaaS), uma vez que há uma forte necessidade de
garantia de QoS na transmissão de dados via Internet.




4.2 SUN


       A Sun oferece a plataforma Sun Open Cloud, uma “infraestrutura open source de
47


cloud computing ativada por tecnologias de software líderes da indústria, incluindo Java,
MySQL, OpenSolaris e Open Storage” (SUN, 2009). A estratégia da Sun é o oferecimento de
nuvens públicas para garantir maior interoperabilidade, isto é, assegurar a livre troca de
informações entre nuvens públicas e privadas.
         Outro compromisso assumido pela Sun enquanto provedora de serviços em nuvem é o
oferecimento de APIs para o público desenvolvedor. A empresa tem histórico forte na criação
de comunidades colaborativas para fazer com que seus produtos cresçam e desenvolvam de
forma livre, característica que a Sun pretende implantar com serviços em nuvem da mesma
forma.
         A Sun Open Cloud é oferecida sob-demanda e classifica-se em Plataforma como
Serviço (PaaS), uma vez que oferece aos desenvolvedores um conjunto definido de APIs para
facilitar 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.




                       “Os principais parceiros e entusiastas dos padrões de cloud [nuvem] estão apoiando
                       a Sun Microsystems para oferecer uma plataforma aberta de cloud que ajudará a
                       garantir que os desenvolvedores tenham um ecossistema robusto de aplicações e
                       serviços para acelerar a criação e a implementação de aplicações cloud-enabled
                       (viabilizadas para clouds) e para simplificar o gerenciamento”. (SUN, 2009).




4.3 IBM


         A IBM mantém o IBM Cloud Labs em nove centros de larga expansão no mundo,
incluindo São Paulo. Existe um grupo de softwares oferecidos para dar suporte a cada etapa
de migração de um ambiente tradicional para outro em nuvem, através dos quais a IBM
facilita as tarefas mais essenciais. Outros softwares estão disponíveis para o controle,
gerenciamento e segurança do ambiente em nuvem para serem utilizados após a aquisição do
modelo. Tivoli e LotusLive são alguns dos softwares disponibilizados.
         A plataforma para desenvolvedores da IBM chama-se developerWorks, a qual possui
seções específicas para computação nas nuvens.
48


4.4 EUCALYPTUS


       Eucalyptus (Elastic Utility Computing Architecture Linking Your Programs To Useful
Systems) é uma infraestrutura open source para implementação de computação nas nuvens em
cluster, por meio de ferramentas em Linux e serviços Web básicos. Atualmente, a interface do
Eucalyptus é capaz de comunicar-se com os serviços EC2 e S3 da Amazon, mas o projeto
busca oferecer suporte a todos os serviços públicos ou privados existentes no mercado que
estiverem interessados em firmar parcerias.
       O projeto surgiu no departamento de Ciência da Computação da Universidade da
Califórnia como projeto de pesquisa, sendo posteriormente transformado em organização por
seus criadores.




4.5 VMWARE


       A VMware tornou-se reconhecida mundialmente devido ao desenvolvimento da
plataforma de mesmo nome para virtualização. Como propulsora da computação nas nuvens,
a virtualização utiliza de maneira mais eficaz recursos de hardware subutilizados. A aposta da
VMware no campo de computação nas nuvens é a associação da virtualização a este novo
modelo computacional distribuído, aplicada como VMware vCloud e VMware vSphere.




4.5.1 VMware vCloud


       O VMware vCloud é a solução em computação nas nuvens oferecida pela VMware. O
diferencial deste serviço é o estabelecimento de parcerias com provedores de computação nas
nuvens para garantir a interoperabilidade entre nuvens públicas e privadas e a correta
execução de aplicativos já existentes. Para tal, o VMware vCloud estabelece padrões de
comunicação via interfaces bem estabelecidas.
49


4.5.2 VMware vSphere




                    VMware vSphere, o primeiro sistema operacional em nuvem do setor, utiliza os
                    recursos da virtualização para transformar datacenters em infraestruturas de
                    computação em nuvem consideravelmente simplificadas e permite que as
                    organizações de TI forneçam a próxima geração de serviços de TI flexíveis e
                    confiáveis usando recursos internos e externos com segurança e baixo risco.
                    (VMWARE, 2009)




       Figura 6 - Organização do VMware vSphere, o primeiro sistema operacional em
       nuvem do mercado

       Fonte: VMware (2009)
50


       O VMware vSphere é oferecido em seis versões diferentes. Está disponível juntamente
com a plataforma um software para efetuar migração de aplicativos já existentes para a
plataforma do vSphere. Além disso, cada característica importante segundo a visão da
VMware para sistemas de computação nas nuvens, possui um software ou serviço
especializado. Por exemplo, para controlar a parte de segurança da plataforma, existe o
VMware VMsafe que “permite o uso de produtos de segurança que funcionam em conjunto
com a camada de virtualização para oferecer a máquinas virtuais níveis mais altos de
segurança do que os oferecidos por servidores físicos (VMWARE, 2009). Na figura 6 é
possível visualizar as camadas de trabalho do vSphere.




4.6 MICROSOFT


       Compute, Storage e Fabric são os três níveis oferecidos pela Microsoft no Windows
Azure como forma de facilitar a migração da plataforma tradicional para a abordagem em
nuvem. Juntamente com o ambiente de desenvolvimento do Windows Azure, eles fornecem
uma ponte para desenvolvedores que quiserem hospedar seus aplicativos.
       O Azure é parte do Azure Services Platform, que visa prover um ambiente similar ao
sistema operacional Windows, voltado a negócios e clientes. Dados e aplicativos dos usuários
são armazenados em servidores controlados pela Microsoft e ficam acessíveis via Windows
Azure a partir de qualquer lugar no mundo.




4.7 GOOGLE


       O Google oferece gratuitamente uma plataforma para desenvolvimento de aplicativos
nas linguagens de programação Python e Java, juntamente com APIs de desenvolvimento.
Trata-se do Google App Engine, classificado no tipo Plataforma como Serviço (PaaS),
fazendo parte do nível de ambiente de software de acordo com a taxonomia definida por
Youseff (2008), no qual os provedores de serviços oferecem um conjunto de APIs para
desenvolvedores, como é o caso do Google. Contudo, há a necessidade de utilizar o BigTable,
o banco de dados do Google e existe uma limitação natural à linguagem de programação e aos
recursos oferecidos por ela (WAYNER, 2008).
Trabalho de Conclusão de Curso de Graduação
Trabalho de Conclusão de Curso de Graduação
Trabalho de Conclusão de Curso de Graduação
Trabalho de Conclusão de Curso de Graduação
Trabalho de Conclusão de Curso de Graduação
Trabalho de Conclusão de Curso de Graduação
Trabalho de Conclusão de Curso de Graduação
Trabalho de Conclusão de Curso de Graduação
Trabalho de Conclusão de Curso de Graduação
Trabalho de Conclusão de Curso de Graduação
Trabalho de Conclusão de Curso de Graduação
Trabalho de Conclusão de Curso de Graduação
Trabalho de Conclusão de Curso de Graduação
Trabalho de Conclusão de Curso de Graduação
Trabalho de Conclusão de Curso de Graduação
Trabalho de Conclusão de Curso de Graduação
Trabalho de Conclusão de Curso de Graduação
Trabalho de Conclusão de Curso de Graduação
Trabalho de Conclusão de Curso de Graduação
Trabalho de Conclusão de Curso de Graduação
Trabalho de Conclusão de Curso de Graduação
Trabalho de Conclusão de Curso de Graduação
Trabalho de Conclusão de Curso de Graduação
Trabalho de Conclusão de Curso de Graduação
Trabalho de Conclusão de Curso de Graduação
Trabalho de Conclusão de Curso de Graduação
Trabalho de Conclusão de Curso de Graduação
Trabalho de Conclusão de Curso de Graduação
Trabalho de Conclusão de Curso de Graduação
Trabalho de Conclusão de Curso de Graduação
Trabalho de Conclusão de Curso de Graduação
Trabalho de Conclusão de Curso de Graduação
Trabalho de Conclusão de Curso de Graduação
Trabalho de Conclusão de Curso de Graduação
Trabalho de Conclusão de Curso de Graduação
Trabalho de Conclusão de Curso de Graduação
Trabalho de Conclusão de Curso de Graduação
Trabalho de Conclusão de Curso de Graduação
Trabalho de Conclusão de Curso de Graduação
Trabalho de Conclusão de Curso de Graduação
Trabalho de Conclusão de Curso de Graduação
Trabalho de Conclusão de Curso de Graduação
Trabalho de Conclusão de Curso de Graduação
Trabalho de Conclusão de Curso de Graduação
Trabalho de Conclusão de Curso de Graduação
Trabalho de Conclusão de Curso de Graduação
Trabalho de Conclusão de Curso de Graduação
Trabalho de Conclusão de Curso de Graduação
Trabalho de Conclusão de Curso de Graduação
Trabalho de Conclusão de Curso de Graduação
Trabalho de Conclusão de Curso de Graduação

Mais conteúdo relacionado

Mais procurados

Tcc ii curso análise e desenvolvimento de sistemas
Tcc ii curso análise e desenvolvimento de sistemasTcc ii curso análise e desenvolvimento de sistemas
Tcc ii curso análise e desenvolvimento de sistemasCarlos Eduardo Kadu
 
Relatório de Estágio do Curso de Sistemas de Informação UnilesteMG - Willian ...
Relatório de Estágio do Curso de Sistemas de Informação UnilesteMG - Willian ...Relatório de Estágio do Curso de Sistemas de Informação UnilesteMG - Willian ...
Relatório de Estágio do Curso de Sistemas de Informação UnilesteMG - Willian ...Willian Barcellos
 
Grelha de analise de conteudo_matriz-lisete_lapa
Grelha de analise de conteudo_matriz-lisete_lapaGrelha de analise de conteudo_matriz-lisete_lapa
Grelha de analise de conteudo_matriz-lisete_lapaMaria Lapa
 
Aula 6 - Design e Processo de Design de Interfaces de Usuário
Aula 6 - Design e Processo de Design de Interfaces de UsuárioAula 6 - Design e Processo de Design de Interfaces de Usuário
Aula 6 - Design e Processo de Design de Interfaces de UsuárioAndré Constantino da Silva
 
Apresentação TCC - Análise da Publicidade em Blogs e a sua utilização como Mídia
Apresentação TCC - Análise da Publicidade em Blogs e a sua utilização como MídiaApresentação TCC - Análise da Publicidade em Blogs e a sua utilização como Mídia
Apresentação TCC - Análise da Publicidade em Blogs e a sua utilização como MídiaRafael Augustinho
 
Workshop Prototipação em ux - Como validar uma ideia sem construir o produto
Workshop Prototipação em ux - Como validar uma ideia sem construir o produtoWorkshop Prototipação em ux - Como validar uma ideia sem construir o produto
Workshop Prototipação em ux - Como validar uma ideia sem construir o produtoCarla De Bona
 
Linguagens de Programação
Linguagens de ProgramaçãoLinguagens de Programação
Linguagens de ProgramaçãoBeDMK
 
Apresentação TCC - Banca
Apresentação TCC - BancaApresentação TCC - Banca
Apresentação TCC - Bancaguest2c4508
 
Qualidade de Software: Modelos e normas
Qualidade de Software: Modelos e normasQualidade de Software: Modelos e normas
Qualidade de Software: Modelos e normasAlex Camargo
 
La coopération - Modelo de pesquisa PLUS
La coopération - Modelo de pesquisa PLUSLa coopération - Modelo de pesquisa PLUS
La coopération - Modelo de pesquisa PLUSamelasa
 
Mémoire de Licence, site web dynamique sous JEE, application aux entreprises ...
Mémoire de Licence, site web dynamique sous JEE, application aux entreprises ...Mémoire de Licence, site web dynamique sous JEE, application aux entreprises ...
Mémoire de Licence, site web dynamique sous JEE, application aux entreprises ...Siham Rim Boudaoud
 
Artigo - Comunicação digital e revistas online
Artigo - Comunicação digital e revistas onlineArtigo - Comunicação digital e revistas online
Artigo - Comunicação digital e revistas onlineGestão de Comunicação
 
Bootstrap praticas mais usadas
Bootstrap praticas mais usadas Bootstrap praticas mais usadas
Bootstrap praticas mais usadas Marconi Pacheco
 
Perfil do usuário, Personas, Cenários, Storyboard em IHC
Perfil do usuário, Personas, Cenários, Storyboard em IHCPerfil do usuário, Personas, Cenários, Storyboard em IHC
Perfil do usuário, Personas, Cenários, Storyboard em IHCRos Galabo, PhD
 
Estagio modelo relatorio
Estagio modelo relatorioEstagio modelo relatorio
Estagio modelo relatoriorenannmaia13
 

Mais procurados (20)

Tcc ii curso análise e desenvolvimento de sistemas
Tcc ii curso análise e desenvolvimento de sistemasTcc ii curso análise e desenvolvimento de sistemas
Tcc ii curso análise e desenvolvimento de sistemas
 
Relatório de Estágio do Curso de Sistemas de Informação UnilesteMG - Willian ...
Relatório de Estágio do Curso de Sistemas de Informação UnilesteMG - Willian ...Relatório de Estágio do Curso de Sistemas de Informação UnilesteMG - Willian ...
Relatório de Estágio do Curso de Sistemas de Informação UnilesteMG - Willian ...
 
Grelha de analise de conteudo_matriz-lisete_lapa
Grelha de analise de conteudo_matriz-lisete_lapaGrelha de analise de conteudo_matriz-lisete_lapa
Grelha de analise de conteudo_matriz-lisete_lapa
 
Aula 6 - Design e Processo de Design de Interfaces de Usuário
Aula 6 - Design e Processo de Design de Interfaces de UsuárioAula 6 - Design e Processo de Design de Interfaces de Usuário
Aula 6 - Design e Processo de Design de Interfaces de Usuário
 
Apresentação TCC - Análise da Publicidade em Blogs e a sua utilização como Mídia
Apresentação TCC - Análise da Publicidade em Blogs e a sua utilização como MídiaApresentação TCC - Análise da Publicidade em Blogs e a sua utilização como Mídia
Apresentação TCC - Análise da Publicidade em Blogs e a sua utilização como Mídia
 
Workshop Prototipação em ux - Como validar uma ideia sem construir o produto
Workshop Prototipação em ux - Como validar uma ideia sem construir o produtoWorkshop Prototipação em ux - Como validar uma ideia sem construir o produto
Workshop Prototipação em ux - Como validar uma ideia sem construir o produto
 
Linguagens de Programação
Linguagens de ProgramaçãoLinguagens de Programação
Linguagens de Programação
 
Qualidade de Software
Qualidade de SoftwareQualidade de Software
Qualidade de Software
 
Gestion de-soutenance
Gestion de-soutenanceGestion de-soutenance
Gestion de-soutenance
 
Estudo de Usuários - Conceitos e Aplicações
Estudo de Usuários - Conceitos e AplicaçõesEstudo de Usuários - Conceitos e Aplicações
Estudo de Usuários - Conceitos e Aplicações
 
2 ModéLe Mvc
2 ModéLe Mvc2 ModéLe Mvc
2 ModéLe Mvc
 
Apresentação TCC - Banca
Apresentação TCC - BancaApresentação TCC - Banca
Apresentação TCC - Banca
 
Qualidade de Software: Modelos e normas
Qualidade de Software: Modelos e normasQualidade de Software: Modelos e normas
Qualidade de Software: Modelos e normas
 
La coopération - Modelo de pesquisa PLUS
La coopération - Modelo de pesquisa PLUSLa coopération - Modelo de pesquisa PLUS
La coopération - Modelo de pesquisa PLUS
 
Mémoire de Licence, site web dynamique sous JEE, application aux entreprises ...
Mémoire de Licence, site web dynamique sous JEE, application aux entreprises ...Mémoire de Licence, site web dynamique sous JEE, application aux entreprises ...
Mémoire de Licence, site web dynamique sous JEE, application aux entreprises ...
 
Exemplo de Plano de testes
Exemplo de Plano de testes Exemplo de Plano de testes
Exemplo de Plano de testes
 
Artigo - Comunicação digital e revistas online
Artigo - Comunicação digital e revistas onlineArtigo - Comunicação digital e revistas online
Artigo - Comunicação digital e revistas online
 
Bootstrap praticas mais usadas
Bootstrap praticas mais usadas Bootstrap praticas mais usadas
Bootstrap praticas mais usadas
 
Perfil do usuário, Personas, Cenários, Storyboard em IHC
Perfil do usuário, Personas, Cenários, Storyboard em IHCPerfil do usuário, Personas, Cenários, Storyboard em IHC
Perfil do usuário, Personas, Cenários, Storyboard em IHC
 
Estagio modelo relatorio
Estagio modelo relatorioEstagio modelo relatorio
Estagio modelo relatorio
 

Destaque

Como redigir a introdução e a conclusão de um trabalho escrito
Como redigir a introdução e a conclusão de um trabalho escritoComo redigir a introdução e a conclusão de um trabalho escrito
Como redigir a introdução e a conclusão de um trabalho escritoBiblioteca Escolar Ourique
 
Como elaborar um trabalho escrito
Como elaborar um trabalho escritoComo elaborar um trabalho escrito
Como elaborar um trabalho escritocolegio elite
 
Capa, contra capa, introdução ,conclusão, biografia,
Capa, contra capa, introdução ,conclusão, biografia,Capa, contra capa, introdução ,conclusão, biografia,
Capa, contra capa, introdução ,conclusão, biografia,Jaqueline Sarges
 
Computação em nuvem (cloud computing), uma introdução.
Computação em nuvem (cloud computing), uma introdução.Computação em nuvem (cloud computing), uma introdução.
Computação em nuvem (cloud computing), uma introdução.Rodrigo Miranda
 
Seminário Computação em Nuvem
Seminário Computação em NuvemSeminário Computação em Nuvem
Seminário Computação em NuvemLeandro Nunes
 
Trabalho de Introdução a Engenharia Civil: Concreto Armado
Trabalho de Introdução a Engenharia Civil: Concreto ArmadoTrabalho de Introdução a Engenharia Civil: Concreto Armado
Trabalho de Introdução a Engenharia Civil: Concreto ArmadoPedro Henrique
 
Aula 2 introdução a sistemas distribuídos
Aula 2   introdução a sistemas distribuídosAula 2   introdução a sistemas distribuídos
Aula 2 introdução a sistemas distribuídosEduardo de Lucena Falcão
 
Tcc pronto
Tcc prontoTcc pronto
Tcc prontorozilane
 
Um estudo sobre computação em nuvem
Um estudo sobre computação em nuvemUm estudo sobre computação em nuvem
Um estudo sobre computação em nuvemUNIEURO
 
A Governança de TI e a Cloud Computing
A Governança de TI e a Cloud Computing A Governança de TI e a Cloud Computing
A Governança de TI e a Cloud Computing Elias Pardim
 
O trabalho flexível na fruticultura irrigada do nordeste
O trabalho flexível na fruticultura irrigada do nordesteO trabalho flexível na fruticultura irrigada do nordeste
O trabalho flexível na fruticultura irrigada do nordesteSandra Bara
 
An2 b - trabalho colaborativo com as ferramentas google - edição e publicação...
An2 b - trabalho colaborativo com as ferramentas google - edição e publicação...An2 b - trabalho colaborativo com as ferramentas google - edição e publicação...
An2 b - trabalho colaborativo com as ferramentas google - edição e publicação...Jorge Teixeira
 
COMPUTAÇÃO EM NUVEM: ESTUDO DE CASO EM UMA EMPRESA DE TECNOLOGIA DA INFORMAÇÃO
COMPUTAÇÃO EM NUVEM: ESTUDO DE CASO EM UMA EMPRESA DE TECNOLOGIA DA INFORMAÇÃOCOMPUTAÇÃO EM NUVEM: ESTUDO DE CASO EM UMA EMPRESA DE TECNOLOGIA DA INFORMAÇÃO
COMPUTAÇÃO EM NUVEM: ESTUDO DE CASO EM UMA EMPRESA DE TECNOLOGIA DA INFORMAÇÃOAllan Reis
 
Equipamentos de redes de computadores
Equipamentos de redes de computadoresEquipamentos de redes de computadores
Equipamentos de redes de computadoresVinicius de Melo
 
1 equipamentos para redes
1 equipamentos para redes1 equipamentos para redes
1 equipamentos para redessulimar2010
 

Destaque (20)

Como redigir a introdução e a conclusão de um trabalho escrito
Como redigir a introdução e a conclusão de um trabalho escritoComo redigir a introdução e a conclusão de um trabalho escrito
Como redigir a introdução e a conclusão de um trabalho escrito
 
Como elaborar um trabalho escrito
Como elaborar um trabalho escritoComo elaborar um trabalho escrito
Como elaborar um trabalho escrito
 
Capa, contra capa, introdução ,conclusão, biografia,
Capa, contra capa, introdução ,conclusão, biografia,Capa, contra capa, introdução ,conclusão, biografia,
Capa, contra capa, introdução ,conclusão, biografia,
 
Computação em nuvem (cloud computing), uma introdução.
Computação em nuvem (cloud computing), uma introdução.Computação em nuvem (cloud computing), uma introdução.
Computação em nuvem (cloud computing), uma introdução.
 
Seminário Computação em Nuvem
Seminário Computação em NuvemSeminário Computação em Nuvem
Seminário Computação em Nuvem
 
Artigo cloud computing pdf
Artigo cloud computing pdfArtigo cloud computing pdf
Artigo cloud computing pdf
 
Trabalho de Introdução a Engenharia Civil: Concreto Armado
Trabalho de Introdução a Engenharia Civil: Concreto ArmadoTrabalho de Introdução a Engenharia Civil: Concreto Armado
Trabalho de Introdução a Engenharia Civil: Concreto Armado
 
Aula 2 introdução a sistemas distribuídos
Aula 2   introdução a sistemas distribuídosAula 2   introdução a sistemas distribuídos
Aula 2 introdução a sistemas distribuídos
 
Conclusão
ConclusãoConclusão
Conclusão
 
Tcc pronto
Tcc prontoTcc pronto
Tcc pronto
 
Trabalho de Conclusão do Módulo de Hardware TI 2012/B Senac Jundiaí
Trabalho de Conclusão do Módulo de Hardware TI 2012/B Senac JundiaíTrabalho de Conclusão do Módulo de Hardware TI 2012/B Senac Jundiaí
Trabalho de Conclusão do Módulo de Hardware TI 2012/B Senac Jundiaí
 
Um estudo sobre computação em nuvem
Um estudo sobre computação em nuvemUm estudo sobre computação em nuvem
Um estudo sobre computação em nuvem
 
Prazer, computação em nuvem
Prazer, computação em nuvemPrazer, computação em nuvem
Prazer, computação em nuvem
 
A Governança de TI e a Cloud Computing
A Governança de TI e a Cloud Computing A Governança de TI e a Cloud Computing
A Governança de TI e a Cloud Computing
 
O trabalho flexível na fruticultura irrigada do nordeste
O trabalho flexível na fruticultura irrigada do nordesteO trabalho flexível na fruticultura irrigada do nordeste
O trabalho flexível na fruticultura irrigada do nordeste
 
An2 b - trabalho colaborativo com as ferramentas google - edição e publicação...
An2 b - trabalho colaborativo com as ferramentas google - edição e publicação...An2 b - trabalho colaborativo com as ferramentas google - edição e publicação...
An2 b - trabalho colaborativo com as ferramentas google - edição e publicação...
 
COMPUTAÇÃO EM NUVEM: ESTUDO DE CASO EM UMA EMPRESA DE TECNOLOGIA DA INFORMAÇÃO
COMPUTAÇÃO EM NUVEM: ESTUDO DE CASO EM UMA EMPRESA DE TECNOLOGIA DA INFORMAÇÃOCOMPUTAÇÃO EM NUVEM: ESTUDO DE CASO EM UMA EMPRESA DE TECNOLOGIA DA INFORMAÇÃO
COMPUTAÇÃO EM NUVEM: ESTUDO DE CASO EM UMA EMPRESA DE TECNOLOGIA DA INFORMAÇÃO
 
Trabalho sobre equipamentos de redes 123
Trabalho sobre equipamentos de redes 123Trabalho sobre equipamentos de redes 123
Trabalho sobre equipamentos de redes 123
 
Equipamentos de redes de computadores
Equipamentos de redes de computadoresEquipamentos de redes de computadores
Equipamentos de redes de computadores
 
1 equipamentos para redes
1 equipamentos para redes1 equipamentos para redes
1 equipamentos para redes
 

Semelhante a Trabalho de Conclusão de Curso de Graduação

Monografia douglashiura
Monografia douglashiuraMonografia douglashiura
Monografia douglashiuraDouglas Longo
 
SEGURANÇA E SUSTENTABILIDADE EM COMPUTAÇÃO NAS NUVENS: APLICAÇÃO EM EMPRESAS ...
SEGURANÇA E SUSTENTABILIDADE EM COMPUTAÇÃO NAS NUVENS: APLICAÇÃO EM EMPRESAS ...SEGURANÇA E SUSTENTABILIDADE EM COMPUTAÇÃO NAS NUVENS: APLICAÇÃO EM EMPRESAS ...
SEGURANÇA E SUSTENTABILIDADE EM COMPUTAÇÃO NAS NUVENS: APLICAÇÃO EM EMPRESAS ...lystermachado
 
Aplicação de Integração Contínua para viabilizar a rastreabilidade de artefat...
Aplicação de Integração Contínua para viabilizar a rastreabilidade de artefat...Aplicação de Integração Contínua para viabilizar a rastreabilidade de artefat...
Aplicação de Integração Contínua para viabilizar a rastreabilidade de artefat...Adriano Teixeira de Souza
 
Proposta de Projeto de Pesquisa - CEFET - 2014
Proposta de Projeto de Pesquisa - CEFET - 2014Proposta de Projeto de Pesquisa - CEFET - 2014
Proposta de Projeto de Pesquisa - CEFET - 2014Waldir R. Pires Jr
 
Pasta pablo mota
Pasta pablo motaPasta pablo mota
Pasta pablo motaPablo Mota
 
Desenvolvimento de um modelo de simulação social da cidade de Mandirituba
Desenvolvimento de um modelo de simulação social da cidade de MandiritubaDesenvolvimento de um modelo de simulação social da cidade de Mandirituba
Desenvolvimento de um modelo de simulação social da cidade de MandiritubaLeonardo Alcantara
 
Monografia Computação na Névoa
Monografia Computação na NévoaMonografia Computação na Névoa
Monografia Computação na NévoaBruno Oliveira
 
Aplicação de Padrões de Projeto para a melhoria da manutenabilidade de software
Aplicação de Padrões de Projeto para a melhoria da manutenabilidade de softwareAplicação de Padrões de Projeto para a melhoria da manutenabilidade de software
Aplicação de Padrões de Projeto para a melhoria da manutenabilidade de softwareCesar Rocha
 
sistemas_operacionais-livro.pdf
sistemas_operacionais-livro.pdfsistemas_operacionais-livro.pdf
sistemas_operacionais-livro.pdfJoelManuel8
 
O impacto da engenharia social na segurança da informaçao
O impacto da engenharia social na segurança da informaçaoO impacto da engenharia social na segurança da informaçao
O impacto da engenharia social na segurança da informaçaoSoftD Abreu
 
O IMPACTO DA ENGENHARIA SOCIAL NA SEGURANÇA DA INFORMAÇÃO
O IMPACTO DA ENGENHARIA SOCIAL NA SEGURANÇA DA INFORMAÇÃOO IMPACTO DA ENGENHARIA SOCIAL NA SEGURANÇA DA INFORMAÇÃO
O IMPACTO DA ENGENHARIA SOCIAL NA SEGURANÇA DA INFORMAÇÃOSoftD Abreu
 
TCC - Pós Engenharia de Software
TCC - Pós Engenharia de SoftwareTCC - Pós Engenharia de Software
TCC - Pós Engenharia de Softwarethiago.lenz
 
M-Commerce e a Plataforma Google Android
M-Commerce e a Plataforma Google AndroidM-Commerce e a Plataforma Google Android
M-Commerce e a Plataforma Google AndroidDiegoAntonelli
 
Demonstrador Virtual Web com Recursos de Realidade Aumentada
Demonstrador Virtual Web com Recursos de Realidade AumentadaDemonstrador Virtual Web com Recursos de Realidade Aumentada
Demonstrador Virtual Web com Recursos de Realidade AumentadaLeonardo Pereira Santos
 
E-OBRAS: Proposta de Desenvolvimento do Protótipo de Sistema para Secretarias...
E-OBRAS: Proposta de Desenvolvimento do Protótipo de Sistema para Secretarias...E-OBRAS: Proposta de Desenvolvimento do Protótipo de Sistema para Secretarias...
E-OBRAS: Proposta de Desenvolvimento do Protótipo de Sistema para Secretarias...Paulo Steinhauser
 
E-OBRAS: Proposta de Desenvolvimento do Protótipo de Sistema para Secretarias...
E-OBRAS: Proposta de Desenvolvimento do Protótipo de Sistema para Secretarias...E-OBRAS: Proposta de Desenvolvimento do Protótipo de Sistema para Secretarias...
E-OBRAS: Proposta de Desenvolvimento do Protótipo de Sistema para Secretarias...Paulo Steinhauser
 

Semelhante a Trabalho de Conclusão de Curso de Graduação (20)

Monografia douglashiura
Monografia douglashiuraMonografia douglashiura
Monografia douglashiura
 
SEGURANÇA E SUSTENTABILIDADE EM COMPUTAÇÃO NAS NUVENS: APLICAÇÃO EM EMPRESAS ...
SEGURANÇA E SUSTENTABILIDADE EM COMPUTAÇÃO NAS NUVENS: APLICAÇÃO EM EMPRESAS ...SEGURANÇA E SUSTENTABILIDADE EM COMPUTAÇÃO NAS NUVENS: APLICAÇÃO EM EMPRESAS ...
SEGURANÇA E SUSTENTABILIDADE EM COMPUTAÇÃO NAS NUVENS: APLICAÇÃO EM EMPRESAS ...
 
Aplicação de Integração Contínua para viabilizar a rastreabilidade de artefat...
Aplicação de Integração Contínua para viabilizar a rastreabilidade de artefat...Aplicação de Integração Contínua para viabilizar a rastreabilidade de artefat...
Aplicação de Integração Contínua para viabilizar a rastreabilidade de artefat...
 
Projeto banco de_dados_cloud
Projeto banco de_dados_cloudProjeto banco de_dados_cloud
Projeto banco de_dados_cloud
 
Proposta de Projeto de Pesquisa - CEFET - 2014
Proposta de Projeto de Pesquisa - CEFET - 2014Proposta de Projeto de Pesquisa - CEFET - 2014
Proposta de Projeto de Pesquisa - CEFET - 2014
 
TCC Rhamon
TCC RhamonTCC Rhamon
TCC Rhamon
 
Pasta pablo mota
Pasta pablo motaPasta pablo mota
Pasta pablo mota
 
Desenvolvimento de um modelo de simulação social da cidade de Mandirituba
Desenvolvimento de um modelo de simulação social da cidade de MandiritubaDesenvolvimento de um modelo de simulação social da cidade de Mandirituba
Desenvolvimento de um modelo de simulação social da cidade de Mandirituba
 
Monografia Computação na Névoa
Monografia Computação na NévoaMonografia Computação na Névoa
Monografia Computação na Névoa
 
Aplicação de Padrões de Projeto para a melhoria da manutenabilidade de software
Aplicação de Padrões de Projeto para a melhoria da manutenabilidade de softwareAplicação de Padrões de Projeto para a melhoria da manutenabilidade de software
Aplicação de Padrões de Projeto para a melhoria da manutenabilidade de software
 
 
sistemas_operacionais-livro.pdf
sistemas_operacionais-livro.pdfsistemas_operacionais-livro.pdf
sistemas_operacionais-livro.pdf
 
O impacto da engenharia social na segurança da informaçao
O impacto da engenharia social na segurança da informaçaoO impacto da engenharia social na segurança da informaçao
O impacto da engenharia social na segurança da informaçao
 
O IMPACTO DA ENGENHARIA SOCIAL NA SEGURANÇA DA INFORMAÇÃO
O IMPACTO DA ENGENHARIA SOCIAL NA SEGURANÇA DA INFORMAÇÃOO IMPACTO DA ENGENHARIA SOCIAL NA SEGURANÇA DA INFORMAÇÃO
O IMPACTO DA ENGENHARIA SOCIAL NA SEGURANÇA DA INFORMAÇÃO
 
Projeto de graduação
Projeto de graduaçãoProjeto de graduação
Projeto de graduação
 
TCC - Pós Engenharia de Software
TCC - Pós Engenharia de SoftwareTCC - Pós Engenharia de Software
TCC - Pós Engenharia de Software
 
M-Commerce e a Plataforma Google Android
M-Commerce e a Plataforma Google AndroidM-Commerce e a Plataforma Google Android
M-Commerce e a Plataforma Google Android
 
Demonstrador Virtual Web com Recursos de Realidade Aumentada
Demonstrador Virtual Web com Recursos de Realidade AumentadaDemonstrador Virtual Web com Recursos de Realidade Aumentada
Demonstrador Virtual Web com Recursos de Realidade Aumentada
 
E-OBRAS: Proposta de Desenvolvimento do Protótipo de Sistema para Secretarias...
E-OBRAS: Proposta de Desenvolvimento do Protótipo de Sistema para Secretarias...E-OBRAS: Proposta de Desenvolvimento do Protótipo de Sistema para Secretarias...
E-OBRAS: Proposta de Desenvolvimento do Protótipo de Sistema para Secretarias...
 
E-OBRAS: Proposta de Desenvolvimento do Protótipo de Sistema para Secretarias...
E-OBRAS: Proposta de Desenvolvimento do Protótipo de Sistema para Secretarias...E-OBRAS: Proposta de Desenvolvimento do Protótipo de Sistema para Secretarias...
E-OBRAS: Proposta de Desenvolvimento do Protótipo de Sistema para Secretarias...
 

Mais de Daniel Fernando Pigatto

Classificação por Dispersão Geográfica de Redes de Computadores
Classificação por Dispersão Geográfica de Redes de ComputadoresClassificação por Dispersão Geográfica de Redes de Computadores
Classificação por Dispersão Geográfica de Redes de ComputadoresDaniel Fernando Pigatto
 
Defesa de Doutorado: HAMSTER - healthy, mobility and security-based data comm...
Defesa de Doutorado: HAMSTER - healthy, mobility and security-based data comm...Defesa de Doutorado: HAMSTER - healthy, mobility and security-based data comm...
Defesa de Doutorado: HAMSTER - healthy, mobility and security-based data comm...Daniel Fernando Pigatto
 
Palestra de Conceitos de Fundamentos de Tecnologia da Informação
Palestra de Conceitos de Fundamentos de Tecnologia da InformaçãoPalestra de Conceitos de Fundamentos de Tecnologia da Informação
Palestra de Conceitos de Fundamentos de Tecnologia da InformaçãoDaniel Fernando Pigatto
 

Mais de Daniel Fernando Pigatto (6)

Classificação por Dispersão Geográfica de Redes de Computadores
Classificação por Dispersão Geográfica de Redes de ComputadoresClassificação por Dispersão Geográfica de Redes de Computadores
Classificação por Dispersão Geográfica de Redes de Computadores
 
Como funciona a Netflix?
Como funciona a Netflix?Como funciona a Netflix?
Como funciona a Netflix?
 
Defesa de Doutorado: HAMSTER - healthy, mobility and security-based data comm...
Defesa de Doutorado: HAMSTER - healthy, mobility and security-based data comm...Defesa de Doutorado: HAMSTER - healthy, mobility and security-based data comm...
Defesa de Doutorado: HAMSTER - healthy, mobility and security-based data comm...
 
Defesa de Mestrado
Defesa de MestradoDefesa de Mestrado
Defesa de Mestrado
 
Palestra de Conceitos de Fundamentos de Tecnologia da Informação
Palestra de Conceitos de Fundamentos de Tecnologia da InformaçãoPalestra de Conceitos de Fundamentos de Tecnologia da Informação
Palestra de Conceitos de Fundamentos de Tecnologia da Informação
 
Palestra sobre OpenOffice
Palestra sobre OpenOfficePalestra sobre OpenOffice
Palestra sobre OpenOffice
 

Último

Manual da CPSA_1_Agir com Autonomia para envio
Manual da CPSA_1_Agir com Autonomia para envioManual da CPSA_1_Agir com Autonomia para envio
Manual da CPSA_1_Agir com Autonomia para envioManuais Formação
 
Habilidades Motoras Básicas e Específicas
Habilidades Motoras Básicas e EspecíficasHabilidades Motoras Básicas e Específicas
Habilidades Motoras Básicas e EspecíficasCassio Meira Jr.
 
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptx
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptxSlides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptx
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptxLuizHenriquedeAlmeid6
 
Gerenciando a Aprendizagem Organizacional
Gerenciando a Aprendizagem OrganizacionalGerenciando a Aprendizagem Organizacional
Gerenciando a Aprendizagem OrganizacionalJacqueline Cerqueira
 
Época Realista y la obra de Madame Bovary.
Época Realista y la obra de Madame Bovary.Época Realista y la obra de Madame Bovary.
Época Realista y la obra de Madame Bovary.keislayyovera123
 
ELETIVA TEXTOS MULTIMODAIS LINGUAGEM VER
ELETIVA TEXTOS MULTIMODAIS LINGUAGEM VERELETIVA TEXTOS MULTIMODAIS LINGUAGEM VER
ELETIVA TEXTOS MULTIMODAIS LINGUAGEM VERDeiciane Chaves
 
AD2 DIDÁTICA.KARINEROZA.SHAYANNE.BINC.ROBERTA.pptx
AD2 DIDÁTICA.KARINEROZA.SHAYANNE.BINC.ROBERTA.pptxAD2 DIDÁTICA.KARINEROZA.SHAYANNE.BINC.ROBERTA.pptx
AD2 DIDÁTICA.KARINEROZA.SHAYANNE.BINC.ROBERTA.pptxkarinedarozabatista
 
DESAFIO LITERÁRIO - 2024 - EASB/ÁRVORE -
DESAFIO LITERÁRIO - 2024 - EASB/ÁRVORE -DESAFIO LITERÁRIO - 2024 - EASB/ÁRVORE -
DESAFIO LITERÁRIO - 2024 - EASB/ÁRVORE -Aline Santana
 
Cultura e Literatura indígenas: uma análise do poema “O silêncio”, de Kent Ne...
Cultura e Literatura indígenas: uma análise do poema “O silêncio”, de Kent Ne...Cultura e Literatura indígenas: uma análise do poema “O silêncio”, de Kent Ne...
Cultura e Literatura indígenas: uma análise do poema “O silêncio”, de Kent Ne...ArianeLima50
 
Recurso Casa das Ciências: Sistemas de Partículas
Recurso Casa das Ciências: Sistemas de PartículasRecurso Casa das Ciências: Sistemas de Partículas
Recurso Casa das Ciências: Sistemas de PartículasCasa Ciências
 
UFCD_10392_Intervenção em populações de risco_índice .pdf
UFCD_10392_Intervenção em populações de risco_índice .pdfUFCD_10392_Intervenção em populações de risco_índice .pdf
UFCD_10392_Intervenção em populações de risco_índice .pdfManuais Formação
 
Simulado 1 Etapa - 2024 Proximo Passo.pdf
Simulado 1 Etapa - 2024 Proximo Passo.pdfSimulado 1 Etapa - 2024 Proximo Passo.pdf
Simulado 1 Etapa - 2024 Proximo Passo.pdfEditoraEnovus
 
Cenários de Aprendizagem - Estratégia para implementação de práticas pedagógicas
Cenários de Aprendizagem - Estratégia para implementação de práticas pedagógicasCenários de Aprendizagem - Estratégia para implementação de práticas pedagógicas
Cenários de Aprendizagem - Estratégia para implementação de práticas pedagógicasRosalina Simão Nunes
 
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptx
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptxATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptx
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptxOsnilReis1
 
Simulado 2 Etapa - 2024 Proximo Passo.pdf
Simulado 2 Etapa  - 2024 Proximo Passo.pdfSimulado 2 Etapa  - 2024 Proximo Passo.pdf
Simulado 2 Etapa - 2024 Proximo Passo.pdfEditoraEnovus
 
Modelos de Desenvolvimento Motor - Gallahue, Newell e Tani
Modelos de Desenvolvimento Motor - Gallahue, Newell e TaniModelos de Desenvolvimento Motor - Gallahue, Newell e Tani
Modelos de Desenvolvimento Motor - Gallahue, Newell e TaniCassio Meira Jr.
 
D9 RECONHECER GENERO DISCURSIVO SPA.pptx
D9 RECONHECER GENERO DISCURSIVO SPA.pptxD9 RECONHECER GENERO DISCURSIVO SPA.pptx
D9 RECONHECER GENERO DISCURSIVO SPA.pptxRonys4
 
Slides 1 - O gênero textual entrevista.pptx
Slides 1 - O gênero textual entrevista.pptxSlides 1 - O gênero textual entrevista.pptx
Slides 1 - O gênero textual entrevista.pptxSilvana Silva
 
Governo Provisório Era Vargas 1930-1934 Brasil
Governo Provisório Era Vargas 1930-1934 BrasilGoverno Provisório Era Vargas 1930-1934 Brasil
Governo Provisório Era Vargas 1930-1934 Brasillucasp132400
 

Último (20)

Manual da CPSA_1_Agir com Autonomia para envio
Manual da CPSA_1_Agir com Autonomia para envioManual da CPSA_1_Agir com Autonomia para envio
Manual da CPSA_1_Agir com Autonomia para envio
 
Habilidades Motoras Básicas e Específicas
Habilidades Motoras Básicas e EspecíficasHabilidades Motoras Básicas e Específicas
Habilidades Motoras Básicas e Específicas
 
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptx
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptxSlides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptx
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptx
 
Gerenciando a Aprendizagem Organizacional
Gerenciando a Aprendizagem OrganizacionalGerenciando a Aprendizagem Organizacional
Gerenciando a Aprendizagem Organizacional
 
Época Realista y la obra de Madame Bovary.
Época Realista y la obra de Madame Bovary.Época Realista y la obra de Madame Bovary.
Época Realista y la obra de Madame Bovary.
 
ELETIVA TEXTOS MULTIMODAIS LINGUAGEM VER
ELETIVA TEXTOS MULTIMODAIS LINGUAGEM VERELETIVA TEXTOS MULTIMODAIS LINGUAGEM VER
ELETIVA TEXTOS MULTIMODAIS LINGUAGEM VER
 
AD2 DIDÁTICA.KARINEROZA.SHAYANNE.BINC.ROBERTA.pptx
AD2 DIDÁTICA.KARINEROZA.SHAYANNE.BINC.ROBERTA.pptxAD2 DIDÁTICA.KARINEROZA.SHAYANNE.BINC.ROBERTA.pptx
AD2 DIDÁTICA.KARINEROZA.SHAYANNE.BINC.ROBERTA.pptx
 
DESAFIO LITERÁRIO - 2024 - EASB/ÁRVORE -
DESAFIO LITERÁRIO - 2024 - EASB/ÁRVORE -DESAFIO LITERÁRIO - 2024 - EASB/ÁRVORE -
DESAFIO LITERÁRIO - 2024 - EASB/ÁRVORE -
 
Cultura e Literatura indígenas: uma análise do poema “O silêncio”, de Kent Ne...
Cultura e Literatura indígenas: uma análise do poema “O silêncio”, de Kent Ne...Cultura e Literatura indígenas: uma análise do poema “O silêncio”, de Kent Ne...
Cultura e Literatura indígenas: uma análise do poema “O silêncio”, de Kent Ne...
 
Recurso Casa das Ciências: Sistemas de Partículas
Recurso Casa das Ciências: Sistemas de PartículasRecurso Casa das Ciências: Sistemas de Partículas
Recurso Casa das Ciências: Sistemas de Partículas
 
UFCD_10392_Intervenção em populações de risco_índice .pdf
UFCD_10392_Intervenção em populações de risco_índice .pdfUFCD_10392_Intervenção em populações de risco_índice .pdf
UFCD_10392_Intervenção em populações de risco_índice .pdf
 
Simulado 1 Etapa - 2024 Proximo Passo.pdf
Simulado 1 Etapa - 2024 Proximo Passo.pdfSimulado 1 Etapa - 2024 Proximo Passo.pdf
Simulado 1 Etapa - 2024 Proximo Passo.pdf
 
Orientação Técnico-Pedagógica EMBcae Nº 001, de 16 de abril de 2024
Orientação Técnico-Pedagógica EMBcae Nº 001, de 16 de abril de 2024Orientação Técnico-Pedagógica EMBcae Nº 001, de 16 de abril de 2024
Orientação Técnico-Pedagógica EMBcae Nº 001, de 16 de abril de 2024
 
Cenários de Aprendizagem - Estratégia para implementação de práticas pedagógicas
Cenários de Aprendizagem - Estratégia para implementação de práticas pedagógicasCenários de Aprendizagem - Estratégia para implementação de práticas pedagógicas
Cenários de Aprendizagem - Estratégia para implementação de práticas pedagógicas
 
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptx
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptxATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptx
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptx
 
Simulado 2 Etapa - 2024 Proximo Passo.pdf
Simulado 2 Etapa  - 2024 Proximo Passo.pdfSimulado 2 Etapa  - 2024 Proximo Passo.pdf
Simulado 2 Etapa - 2024 Proximo Passo.pdf
 
Modelos de Desenvolvimento Motor - Gallahue, Newell e Tani
Modelos de Desenvolvimento Motor - Gallahue, Newell e TaniModelos de Desenvolvimento Motor - Gallahue, Newell e Tani
Modelos de Desenvolvimento Motor - Gallahue, Newell e Tani
 
D9 RECONHECER GENERO DISCURSIVO SPA.pptx
D9 RECONHECER GENERO DISCURSIVO SPA.pptxD9 RECONHECER GENERO DISCURSIVO SPA.pptx
D9 RECONHECER GENERO DISCURSIVO SPA.pptx
 
Slides 1 - O gênero textual entrevista.pptx
Slides 1 - O gênero textual entrevista.pptxSlides 1 - O gênero textual entrevista.pptx
Slides 1 - O gênero textual entrevista.pptx
 
Governo Provisório Era Vargas 1930-1934 Brasil
Governo Provisório Era Vargas 1930-1934 BrasilGoverno Provisório Era Vargas 1930-1934 Brasil
Governo Provisório Era Vargas 1930-1934 Brasil
 

Trabalho de Conclusão de Curso de Graduação

  • 1. UNIVERSIDADE REGIONAL INTEGRADA DO ALTO URUGUAI E DAS MISSÕES CAMPUS DE ERECHIM DEPARTAMENTO DE ENGENHARIAS E CIÊNCIA DA COMPUTAÇÃO CURSO DE CIÊNCIA DA COMPUTAÇÃO DANIEL FERNANDO PIGATTO ESTUDO E IMPLEMENTAÇÃO DE UMA SOLUAÇÃO DE SOFTWARES APLICATIVOS UTILIZANDO COMPUTAÇÃO NAS NUVENS ERECHIM 2009
  • 2. DANIEL FERNANDO PIGATTO ESTUDO E IMPLEMENTAÇÃO DE UMA SOLUAÇÃO DE SOFTWARES APLICATIVOS UTILIZANDO COMPUTAÇÃO NAS NUVENS Trabalho de Conclusão de Curso, apresentado ao Curso de Ciência da Computação, Departamento de Engenharias e Ciência da Computação da Universidade Regional Integrada do Alto Uruguai e das Missões – Campus de Erechim. Prof. Orientador: Alexandro Magno dos Santos Adário ERECHIM 2009
  • 3. AGRADECIMENTOS Aos meus pais, Agenor e Dinora, pela dedicação e carinho que sempre tiveram comigo, seja em questões de formação de caráter, como no incentivo aos estudos e à graduação. E a minha irmã, Fernanda, que da mesma forma prestou seu apoio e parceria comigo em todos os projetos que decidi participar, especialmente no presente. Aos familiares, especialmente a minha tia Dinaura e meus avós Augusto e Zenaide, por entenderem minhas faltas aos encontros de família e pelo carinho que sempre me foi dedicado. Aos mestres, que além de desempenhar com mérito seus papéis de educadores, mostraram-se profissionais apoiadores e amigos em todas as etapas concluídas. Especial agradecimento ao Prof. Alexandro Adário, meu orientador neste trabalho, pela preparação e apoio dedicados, desde a mais simples dúvida sanada até o mais complexo problema resolvido. Aos colegas de graduação, especialmente aos mais presentes, João Paulo, Saulo, Jonas, Rodrigo, Joel, Maurício, Mateus, Elias, Lucas, Luis, Julior, entre muitos outros, os quais não só foram colegas, mas verdadeiros amigos, especialmente pelo apoio em momentos de tensão, pelo respeito demonstrado e pela parceria em todas as situações vivenciadas. Aos amigos de curta e longa data e aos colegas de trabalho, os quais souberam entender algumas ausências em importantes eventos ou quando da indisponibilidade em comparecer a um programa diferente de lazer. Ao Google, porque sem ele grande parte deste trabalho de pesquisa não teria sido possível ou não teria sido tão eficiente.
  • 4. "Perfection is achieved, not when there is nothing more to add, but when there is nothing left to take away." Antoine de Saint-Exupery
  • 5. RESUMO A era da computação baseada na Web e o recente conceito de virtualização desencadearam no surgimento de uma nova abordagem para minimizar custos com infraestrutura de tecnologia da informação em ambientes corporativos: a cloud computing ou “computação nas nuvens”. Trata-se de um “aluguel” de servidores de terceiros para armazenagem de dados e execução remota de aplicações. Este trabalho mostra as vantagens da computação nas nuvens para empresas de pequeno, médio e grande porte, incluindo comparações de desempenho e relação custo-benefício entre o modelo tradicional e esta nova abordagem. São demonstradas algumas ferramentas do mercado, apurando seus respectivos resultados e implementando um ambiente com a união das melhores, tendo por finalidade proporcionar uma solução de baixo custo, escalável – com possibilidade de crescimento – e com excelente grau de colaboração online. O trabalho também busca um ambiente altamente disponível e com alto grau de abstração a fim de minimizar o impacto para o usuário final. Palavras-chave: cloud computing. computação nas nuvens. alta disponibilidade. ambiente corporativo. sistemas distribuídos.
  • 6. ABSTRACT The computing era based on web and the recent concept of virtualization initiated the emergence of a new approach to minimize the costs with infrastructure of technology information in corporative environments: the cloud computing. It deals of the renting of third- party servers for data storage and remote execution of applications. This study shows the advantages of cloud computing for companies of small, medium and big size, including comparisons of performance and cost-benefit relation between the traditional model and this new approach. Some market tool are demonstrated, checking their respective results and implementing an environment with the union of the best, aiming at providing a solution of low cost, scalable – with possibility of growth – and an excellent degree of on line collaboration. This study also searches for an environment highly available and with a great degree of abstraction intending to minimize the impact for the final user. Keywords: cloud computing. high availability. corporative environment. distributed systems.
  • 7. LISTA DE FIGURAS Figura 1 - Diferenças entre as camadas dos protocolos ISO/OSI e TCP/IP.............................22 Figura 2 - Organização do cluster Beowulf...............................................................................27 Figura 3 - Organização virtual provida pela computação em grade.........................................28 Figura 4 - Níveis de divisão da computação nas nuvens segundo a ontologia proposta..........37 Figura 5 - Aplicativos de computação nas nuvens divididos em grupos de usuários...............43 Figura 6 - Organização do VMware vSphere, o primeiro sistema operacional em nuvem do mercado.....................................................................................................................................49 Figura 7 - Login de usuário no modo de simulação local do Google App Engine...................59 Figura 8 - Tela de criação de nova aplicação no Google App Engine......................................60 Figura 9 - Tela de Login do aplicativo-exemplo para Google App Engine...............................61 Figura 10 - Tela do Painel do Usuário do aplicativo-exemplo para Google App Engine.........62 Figura 11 - Exemplo de e-mail enviado através do aplicativo-exemplo...................................63 Figura 12 - Volume de buscas no Google para os termos Google Docs, Microsoft Office e OpenOffice................................................................................................................................65 Figura 13 - Variação no tempo de upload de documentos de texto..........................................67 Figura 14 - Variação no tempo de carregamento de documentos de texto................................67 Figura 15 - Variação no tempo de impressão de documentos de texto.....................................68 Figura 16 - Variação no tempo de upload de planilhas de cálculo............................................69 Figura 17 - Variação no tempo de carregamento de planilhas de cálculo.................................69 Figura 18 - Variação no tempo de impressão de planilhas de cálculo......................................70 Figura 19 - Variação no tempo de tarefas sobre apresentações de slides..................................71 Figura 20 - Variação no tempo de upload de uma imagem para o Google Docs......................72 Figura 21 - Tempo de upload e conversão de arquivos de texto com o mesmo conteúdo........73
  • 8. Figura 22 - Área de trabalho e barra de inicialização rápida com atalhos de aplicativos remotos apresentados de forma semelhante a aplicativos desktop tradicionais........................77 Figura 23 - Menu Iniciar com atalhos de aplicativos remotos apresentados de forma semelhante a aplicativos desktop tradicionais...........................................................................78 Figura 24 - Google Contacts apresentado de maneira semelhante a um aplicativo desktop.....79 Figura 25 - Google Docs apresentado de maneira semelhante a um aplicativo desktop..........79 Figura 26 - Zoho Projects apresentado de maneira semelhante a um aplicativo desktop.........80 Figura 27 - Gmail apresentado de maneira semelhante a um aplicativo desktop.....................80 Figura 28 - LinkedIn apresentado de maneira semelhante a um aplicativo desktop.................81 Figura 29 - Google Calendar apresentado de maneira semelhante a um aplicativo desktop....81 Figura 30 - To Do List apresentado de maneira semelhante a um aplicativo desktop..............82 Figura 31 - Zoho Chat apresentado de maneira semelhante a um aplicativo desktop..............82
  • 9. LISTA DE TABELAS Tabela 1 - Comparativo entre TI Interno e Serviços Terceirizados...........................................39 Tabela 2 - Comparativo entre Serviços Terceirizados e Computação nas Nuvens...................40 Tabela 3 - Características dos arquivos utilizados para os testes..............................................66 Tabela 4 - Compatibilidade entre elementos das suítes............................................................74
  • 10. LISTA DE ABREVIATURAS E SIGLAS API – Application Programming Interface CaaS – Communication as a Service CAN – Campus Area Network CDN – Content Delivery Network CGI – Common Gateway Interface CSS – Cascading Style Sheet DaaS – Data-Storage as a Service DOC – Extensão padrão do Microsoft Word 2003 DOCX – Extensão padrão do Microsoft Word 2007 EC2 – Elastic Compute Cloud Eucalyptus – Elastic Utility Computing Architecture Linking Your Programs To Useful Systems FTP – File Transfer Protocol GFS – Google File System HaaS – Hardware as a Service HTML – HyperText Markup Language IaaS – Infrastructure as a Service IDL – Interface Definition Language IP – Internet Protocol JPEG – Joint Photographic Experts Group KB – Kilobyte Kbps – Kilobit por segundo LAN – Local Area Network MAN – Metropolitan Area Network MB – Megabyte Mbps – Megabit por segundo ODP – Open Document Presentation ODS – Open Document Spreadsheet ODT – Open Document Text
  • 11. PaaS – Platform as a Service PAN – Personal Area Network PC – Personal Computer PDA – Personal Digital Assistants PDF – Portable Document Format PPT – Extensão padrão do Microsoft PowerPoint 2003 PPTX – Extensão padrão do Microsoft PowerPoint 2007 QoS – Quality of Service RAM – Random Access Memory REST – Representational State Transfer s – segundos S3 – Simple Storage Service SaaS – Software as a Service SAN – Storage Area Network SDK – Software Development Kit SMS – Short Message Service SMTP – Simple Mail Transfer Protocol SO – Sistema Operacional SOA – Service-Oriented Architecture SOAP – Simple Object Access Protocol SP3 – Service Pack 3 TCP – Transmission Control Protocol TCP/IP – Transmission Control Protocol / Internet Protocol TI – Tecnologia da Informação URL – Uniform Resource Locator VPC – Virtual Private Cloud VPN – Virtual Private Network WAN – Wide Area Network WSGI – Web Server Gateway Interface XLS – Extensão padrão do Microsoft Excel 2003 XLSX – Extensão padrão do Microsoft Excel 2007 XML – eXtensible Markup Language
  • 12. SUMÁRIO 1 INTRODUÇÃO....................................................................................................................13 2 SISTEMAS DISTRIBUÍDOS.............................................................................................15 2.1 METAS...............................................................................................................................16 2.1.1 Acesso a recursos............................................................................................................16 2.1.2 Transparência da distribuição......................................................................................17 2.1.3 Abertura..........................................................................................................................18 2.2 REDES DE INTERCONEXÃO.........................................................................................19 2.2.1 Organização das Redes..................................................................................................20 2.2.2 Tipos de Redes................................................................................................................20 2.2.3 Protocolos de Rede.........................................................................................................21 2.2.3.1 Modelo de referência OSI.............................................................................................22 2.2.3.2 Protocolo TCP/IP..........................................................................................................23 2.2.4 Segurança em Redes......................................................................................................24 2.3 ESCALABILIDADE..........................................................................................................25 2.4 SISTEMAS DE COMPUTAÇÃO DISTRIBUÍDOS..........................................................26 3 COMPUTAÇÃO NAS NUVENS........................................................................................30 3.1 CONCEITUAÇÃO.............................................................................................................30 3.2 CARACTERÍSTICAS........................................................................................................31 3.3 MODELOS DE SERVIÇO.................................................................................................32 3.3.1 Nível de Aplicação..........................................................................................................33 3.3.2 Nível de Ambiente de Software.....................................................................................33 3.3.3 Nível de Infraestrutura de Software.............................................................................34 3.3.4 Nível de Kernel de Software..........................................................................................36 3.3.5 Nível de Hardware e Firmware.....................................................................................37 3.4 ECONOMIA.......................................................................................................................38 3.5 APLICAÇÕES E PÚBLICO-ALVO...................................................................................40 3.5.1 Usuários Domésticos......................................................................................................41 3.5.2 Comunidades e Grupos.................................................................................................42 3.5.3 Corporações....................................................................................................................42 4 PROVEDORES DE SERVIÇOS EM NUVEM................................................................44 4.1 AMAZON WEB SERVICES..............................................................................................44 4.1.1 Amazon Elastic Compute Cloud (Amazon EC2)........................................................44 4.1.2 Amazon SimpleDB.........................................................................................................45 4.1.3 Amazon Simple Storage Service (Amazon S3)............................................................45 4.1.4 Amazon CloudFront.......................................................................................................45 4.1.5 Amazon Elastic MapReduce.........................................................................................46 4.1.6 Amazon Virtual Private Cloud (Amazon VPC)...........................................................46 4.2 SUN.....................................................................................................................................46 4.3 IBM.....................................................................................................................................47 4.4 EUCALYPTUS...................................................................................................................48
  • 13. 4.5 VMWARE...........................................................................................................................48 4.5.1 VMware vCloud.............................................................................................................48 4.5.2 VMware vSphere............................................................................................................49 4.6 MICROSOFT......................................................................................................................50 4.7 GOOGLE............................................................................................................................50 5 ESTUDOS DE CASO..........................................................................................................51 5.1 ESTUDO DE CASO 1: FRAMEWORK GOOGLE APP ENGINE....................................51 5.1.1 Conjunto de APIs...........................................................................................................52 5.1.2 Limitações.......................................................................................................................54 5.1.3 Vantagens........................................................................................................................54 5.1.4 Desvantagens..................................................................................................................55 5.1.5 Tutorial de Desenvolvimento de Aplicativo-exemplo..................................................55 5.1.5.1 Preparação do ambiente de desenvolvimento...............................................................56 5.1.5.2 Criando um novo projeto..............................................................................................56 5.1.5.3 Testando o projeto.........................................................................................................58 5.1.5.4 Efetuando upload do projeto.........................................................................................60 5.1.6 Avaliação dos Resultados...............................................................................................63 5.2 ESTUDO DE CASO 2: PLATAFORMA GOOGLE DOCS...............................................64 5.2.1 Testes de Desempenho em Relação à Velocidade de Acesso.......................................65 5.2.2 Testes de Compatibilidade.............................................................................................73 5.2.3 Avaliação dos Resultados...............................................................................................74 6 SOLUÇÃO EM NUVEM PARA AMBIENTES CORPORATIVOS...............................75 6.1 PROPOSTA DE AMBIENTE.............................................................................................75 6.2 SISTEMA TRADICIONAL X SOLUÇÃO EM NUVEM.................................................83 CONCLUSÃO.........................................................................................................................84 REFERÊNCIAS......................................................................................................................87 ANEXOS..................................................................................................................................90 ANEXO A – Limitações do Google App Engine......................................................................91 ANEXO B – Código-fonte do aplicativo-exemplo para Google App Engine..........................94 ANEXO C – Tabela de Dados Coletados nos Testes com Google Docs................................101
  • 14. 1 INTRODUÇÃO A necessidade de reinvenção é uma característica comum à ciência. Novos modelos e soluções devem surgir para que a evolução seja possível e de fato alcançada. No meio corporativo esta premissa é bastante importante, uma vez que inovação é a palavra-chave para qualquer empreendimento, seja ele atuante no ramo que for. Contudo, a preocupação com o crescimento não pode ser atrapalhada por fatores que deveriam facilitar as tarefas cotidianas, como o setor de tecnologia da informação. Ele pode, muitas vezes, representar um “peso” na estrutura de uma empresa, significando atrasos devido a determinadas deficiências e gastos adicionais com mão-de-obra e infraestrutura. Dentro dos sistemas distribuídos, visando a economia no meio corporativo, surgiu o modelo recente conhecido por computação nas nuvens. A ideia é nova e ainda está amadurecendo. Consiste no “aluguel” de espaços em servidores de terceiros para hospedagem de dados e aplicativos da empresa, eliminando a necessidade de manter desenvolvedores e equipamentos subutilizados dentro das dependências da empresa. O investimento é consideravelmente menor se comparado ao modelo tradicional e, ainda, elimina a preocupação com TI, permitindo que a empresa concentre-se apenas no seu ramo de atividade. Este trabalho objetiva conceituar o modelo computacional distribuído em questão, evidenciando vantagens e desvantagens, avaliando o desenvolvimento de um aplicativo para a infraestrutura, efetuando comparações de serviços disponíveis na Web já adaptados ao modelo e, por fim, sugerindo uma solução genérica em nuvem. O que motiva a realização deste estudo é o fator econômico que possui grande evidência, a possibilidade de aumento da vida útil do hardware e a vantagem de possibilitar à empresa direcionar suas preocupações para o negócio, não focando tanto no setor de TI. É possível comprovar por meio de testes com sistemas em nuvem, que o uso do modelo é viável, exigindo uma abordagem ligeiramente diferentes da tradicional. Os gráficos apresentados demonstram onde é necessário atuar para obter o desempenho aceitável e o equilíbrio adequado na adoção de um sistema computacional distribuído em nuvem. No Capítulo 2, apresenta-se uma caracterização dos sistemas distribuídos, especificação de metas a serem cumpridas quando da adoção dos mesmos e apresentação dos
  • 15. 14 principais sistemas computacionais distribuídos. Em seguida, no Capítulo 3, o foco passa a ser o modelo computacional distribuído conhecido por computação nas nuvens, apresentando vantagens e desvantagens, classificação do modelo em níveis e caracterização das aplicações e do público-alvo. O Capítulo 4 mostra alguns serviços em nuvem já em uso no mercado e sua classificação dentro dos níveis previamente abordados. Em seguida, no Capítulo 5, são apresentados dois estudos de caso para justificar a possibilidade de adoção da computação nas nuvens como solução de boa relação custo-benefício para ambientes corporativos. O primeiro deles abordando o desenvolvimento para a plataforma Google App Engine e o segundo avaliando o desempenho, a compatibilidade e os fatores de migração para o serviço Google Docs. Para concluir, o Capítulo 6 apresenta uma proposta de ambiente em nuvem, com custo reduzido e que pode ser aplicada de maneira geral.
  • 16. 2 SISTEMAS DISTRIBUÍDOS Ao mesmo tempo em que se iniciaram as primeiras interligações de computadores, surgiu a ideia de distribuir aplicações entre eles de modo a melhor utilizar recursos que poderiam estar ociosos durante parte do tempo. Com o aprimoramento da velocidade e da confiabilidade das redes, cada vez mais computadores no mundo tornaram-se interconectados, dando fim a uma era em que apenas grandes corporações e ambientes acadêmicos eram detentores de tal estrutura. Os avanços da era da informação são cada vez mais rápidos e capazes de oferecer facilidades no dia-a-dia da sociedade moderna. Todos os segmentos de mercado têm migrado para aplicações Web visando oferecer maior comodidade ao cliente, que pode realizar transações bancárias, efetuar reservas em hotéis e companhias aéreas, ler notícias ou acessar documentos oficiais a partir de casa, escritório, dispositivos móveis etc., a qualquer hora do dia. Tais avanços foram viabilizados pelo notável aumento da facilidade de aquisição de microcomputadores, uma vez que estes tiveram seu custo reduzido significativamente, e pelo avanço nas redes de comunicação pelo mundo, as quais popularizaram o acesso à Internet, especialmente em ambientes domésticos. Com o aumento do número de computadores e dos serviços disponibilizados na rede mundial, a preocupação passou a residir no desempenho dos equipamentos utilizados. A indústria de microprocessadores não conseguiu manter o mesmo ritmo de crescimento no poder de processamento de seus novos produtos, contudo a demanda por este crescimento continuava aumentando. As limitações na capacidade de processamento impõem restrições aos muitos tipos de software, tais como os programas de escritório, de manipulação de imagens, jogos, científicos e servidores utilizados nas organizações. Uma forma de contornar a limitação local de processamento é a utilização de técnicas que possibilitem o processamento distribuído. (DANTAS, 2005, p. 3, 4) O uso de computação distribuída passou a ganhar espaço em universidades, centros de
  • 17. 16 pesquisas e empresas de tecnologia da informação, sendo vista como uma alternativa viável ao uso das arquiteturas computacionais centralizadas e suas limitações. “Um sistema distribuído é um conjunto de computadores independentes que se apresenta aos seus usuários como um sistema único e coerente”, como define Tanenbaum (2007, p. 1). Devido às características de aumento exponencial de processamento de tarefas, alta disponibilidade e por apresentar maior tolerância a falhas é que os sistemas distribuídos passaram a ser considerados sistemas de alto desempenho ou alta disponibilidade, atendendo a um vasto mercado de sistemas conhecidos como críticos. Os sistemas distribuídos são a solução para aqueles ambientes onde há a necessidade de aumento da capacidade de processamento de informações, compartilhamento de dados e sem grandes custos. Fica claro que não é recomendado aplicar sistemas distribuídos onde não há necessidade, baseando-se apenas no fato de que esta abordagem pode trazer boas vantagens. 2.1 METAS É necessário ter metas ao decidir pelo uso de sistemas distribuídos e algumas destas metas, segundo Tanenbaum (2007, p. 2-10), devem ser devidamente cumpridas. 2.1.1 Acesso a recursos A principal meta desejada com o uso de um sistema distribuído é o compartilhamento de recursos controlado, tanto para aplicações, quanto para usuários. Há algumas razões para querer compartilhar recursos, como por exemplo, compartilhando uma impressora na rede ou o acesso a um supercomputador permite que um número maior de colaboradores usufrua deste recurso, resultando em um melhor aproveitamento do mesmo com economia financeira. A colaboração e a troca de informações é um fator muito relevante e cada vez mais buscado. Um exemplo claro é a Internet com seu crescimento acelerado, que utiliza protocolos simples para trocas de arquivos, o que possibilitou que grupos dispersos geograficamente pudessem estabelecer uma forma eficiente de colaboração e edição.
  • 18. 17 2.1.2 Transparência da distribuição Uma meta importante no uso de sistemas distribuídos é a ocultação da distribuição de seus processos, isto é, torná-lo transparente de modo que o sistema seja capaz de se apresentar ao usuário como sendo um único sistema de computador. Existem vários tipos de transparência: • Transparência de acesso: oculta as diferenças de representação dos dados e como se dá o acesso aos recursos, estabelecendo padrões de exibição de arquivos ao usuário e às aplicações, escondendo as diferenças entre sistemas operacionais e suas variações quanto à nomeação de arquivos. Além das diferenças entre sistemas operacionais, a transparência de acesso busca ocultar diferenças entre arquiteturas de máquinas, devendo oferecer a mesma visão do sistema para qualquer estação de trabalho existente em uma rede heterogênea. • Transparência de localização: é responsável pela ocultação da localização física de um recurso dentro do sistema. A nomeação é a principal forma de obter este tipo de transparência, onde é possível utilizar uma nomenclatura que não ofereça pistas sobre a localização do recurso. Um exemplo disso é o uso de URLs, as quais não especificam qual servidor está exatamente hospedando aquele site. • Transparência de migração: oculta a mudança física de um recurso, o que não deve necessariamente alterar a forma de acesso ao mesmo. Ainda utilizando o exemplo das URLs, fica transparente aos utilizadores se determinado site sempre esteve localizado no servidor X ou se anteriormente esteve hospedado no servidor Y. • Transparência de relocação: no momento em que um sistema dá suporte à migração de recursos em tempo real, ele possui transparência de relocação. É a mesma ideia da transparência de migração, com o diferencial de que o sistema não necessita ter seu funcionamento interrompido para efetuar a migração, sendo transparente aos usuários e aplicações, os quais podem prosseguir com suas atividades. • Transparência de replicação: consiste no ato de replicar um recurso para aumentar sua disponibilidade. Por exemplo, um arquivo muito requisitado pode ter uma cópia criada e a forma de acesso gerenciada para que o caminho permaneça sendo o mesmo. Para tal, é necessário haver transparência de localização no sistema, a fim de ocultar fisicamente o recurso replicado. • Transparência de concorrência: existe quando é possível a dois ou mais usuários ou
  • 19. 18 aplicações possuírem acesso a um mesmo recurso, ao mesmo tempo, sem que estes percebam a concorrência de acesso. Para um sistema distribuído é muito importante a colaboração entre as estações de trabalho, sendo primordial tratar a concorrência de acesso a recursos compartilhados e ocultar este fato da camada de usuário e aplicação. • Transparência à falha: um sistema distribuído está mais suscetível a falhas, uma vez que a complexidade da estrutura aumenta com heterogeneidade, acesso concorrente a recursos, compartilhamento eficiente etc., dificultando, por conseqüência, o gerenciamento do sistema. A transparência a falhas busca ocultar a ocorrência de falhas, permitindo que o sistema recupere-se do erro e continue seu funcionamento normal. Algumas vezes não é trivial e nem adequado o uso de transparência para ocultar todos estes detalhes de usuários ou aplicações, uma vez que sistemas geograficamente distribuídos a longas distâncias, certamente estarão limitados pela velocidade da rede que os conecta e à capacidade de processamento dos computadores intermediários (TANENBAUM, 2007, p. 4). As transparências são boas metas de projeto, mas necessitam ser avaliadas juntamente com outras questões para determinar a viabilidade e a necessidade de implementá-las. 2.1.3 Abertura Tanenbaum (2007, p. 4) define um sistema distribuído aberto como um “sistema que oferece serviços de acordo com regras padronizadas que descrevem a sintaxe e a semântica desses serviços.” Os serviços que em redes de computadores são padronizados por protocolos, nos sistemas distribuídos são especificados por meio de interfaces, normalmente descritas por uma linguagem de definição de interface (Interface Definition Language – IDL). A existência de interfaces permite que, por exemplo, uma aplicação A comunique-se com uma aplicação B, desde que B disponibilize uma interface padrão de comunicação que é entendida por A. Uma interface deve ter todas as especificações necessárias para haver uma comunicação completa, porém isto normalmente inexiste. Para ser completa ela deve especificar tudo que é necessário para uma implementação, mas normalmente uma interface não é absolutamente completa, exigindo que o desenvolvedor especifique algumas questões de implementação. Com a obtenção de uma interface neutra e completa, duas características importantes
  • 20. 19 para sistemas distribuídos são também obtidas: Interoperabilidade caracteriza até que ponto duas implementações de sistemas ou componentes de fornecedores diferentes devem coexistir e trabalhar em conjunto, com base na mera confiança mútua nos serviços de cada um, especificados por um padrão comum. Portabilidade caracteriza até que ponto uma aplicação desenvolvida para um sistema distribuído A pode ser executada, sem modificação, em um sistema distribuído B que implementa as mesmas interfaces que A. (TANENBAUM, 2007, p. 5, grifo do autor) 2.2 REDES DE INTERCONEXÃO A computação é sem dúvida sinônimo de evolução. As principais conquistas tecnológicas do século XX se deram no campo do processamento e da distribuição de informações. Entre os principais desenvolvimentos surgiram as redes de telefonia, o rádio, a televisão, os precedentes da informática e o lançamento de satélites de comunicação. Como resultado do crescimento acelerado, estas áreas estão convergindo cada vez mais, diminuindo as diferenças entre coleta, transmissão, armazenamento e processamento de informações. Hoje é possível comunicar-se em questão de segundos com estações de trabalho localizadas a milhares de quilômetros de distância geograficamente. E, à medida que evoluem as maneiras de coleta e tratamento da informação, novos sistemas mais sofisticados devem surgir. O velho modelo de um único computador atendendo às necessidades computacionais de uma organização foi, há muitos anos, substituído pelas redes de computadores, nas quais o trabalho é distribuído entre todas as estações interconectadas (TANENBAUM, 2003, p. 2). Shimonski (2005, p. 4) define redes como sistemas que estão interconectados de alguma maneira e suportam troca de informações entre si. Tanenbaum (2003, p. 2) explica que redes são um “conjunto de computadores autômatos interconectados por uma única tecnologia.” Neste capítulo definiremos aspectos a respeito das redes de computadores, citando fundamentos de sua organização.
  • 21. 20 2.2.1 Organização das Redes O que define uma rede e a torna diferente das demais são alguns elementos citados como fundamentais por Shimonski (2005, p. 5, 6): • Hardware. Inclui os componentes físicos de um computador ou de uma rede, tais como adaptadores de rede que permitem a troca de informações através dela. Outros dispositivos que podem ser classificados como hardware são os roteadores, switches e hubs. • Mídia. Consiste nos cabos ou tecnologias sem fio, as quais transferem os dados por toda a rede. • Protocolos. São espécies de regras que controlam como os dados são enviados entre os computadores. O protocolo mais popular é o TCP/IP (Transmission Control Protocol / Internet Protocol). • Topologia. Define o projeto da rede, como ela é organizada e descreve como os computadores estão conectados fisicamente. • Tipo de rede. Define o tamanho da rede e sua escala em uma área geográfica. • Modelo de rede. Define os níveis de segurança disponíveis e os componentes necessários para efetuar as conexões. • Acesso. Determina quem pode utilizar a rede e como será este acesso, além de ditar se recursos deverão ser públicos ou privados. • Sistema Operacional de Rede. A rede pode ter um servidor que disponibiliza serviços para diversos computadores, o qual deverá rodar um sistema operacional de rede, como Windows ou Linux. • Outros softwares e dispositivos. Permitirão acesso a recursos como sites internos, correio eletrônico, bancos de dados etc. 2.2.2 Tipos de Redes Redes podem conectar estações de trabalho próximas, em um limitado espaço físico, ou estações a longas distâncias geográficas. Podem ainda ser consideradas redes criadas para algumas finalidades específicas. Para identificar as redes de computadores quanto a sua
  • 22. 21 abrangência física, foram convencionadas algumas nomenclaturas: • Rede Local (LAN – Local Area Network). São redes privadas contidas em um único edifício ou campus universitário com até alguns quilômetros de extensão. Elas têm tamanho limitado, o que implica que o pior tempo de transmissão é limitado e conhecido com antecedência. • Rede Geograficamente Distribuída (WAN – Wide Area Network). Abrange uma grande área geográfica, podendo ser até mesmo um país ou continente. • Rede Metropolitana (MAN – Metropolitan Area Network). Abrange uma cidade. Um bom exemplo deste tipo de rede são as redes de transmissão de TV a cabo, criadas para levar sinal até lugares onde não era possível utilizar a transmissão pelo ar. • Rede de Armazenagem (SAN – Storage Area Network). Serve para conectar dispositivos de armazenagem a altas velocidades, sem a necessidade da implementação de uma LAN ou WAN para tal. • Rede Pessoal (PAN – Personal Area Network). Trata-se do uso bem limitado de redes wireless de poucos metros de alcance para comunicação entre dispositivos pessoais, como notebooks, PDAs, telefones móveis, entre outros. • Rede de Campus (CAN – Campus Area Network). É a nomenclatura utilizada para uma série de LANs existentes em edifícios próximos fisicamente, muito comumente encontradas em empresas e campus universitários. É maior que uma LAN e menor que uma MAN. 2.2.3 Protocolos de Rede O estabelecimento de uma conexão física entre dois computadores não é suficiente para que eles se comuniquem. A comunicação livre de erros, confiável e eficiente entre computadores exige a implementação de sistemas de software elaborados que geralmente são chamados protocolos. [...] Exige que os meios de transmissão sejam capazes de manipular a heterogeneidade de equipamentos e conexões. (OZSÜ; VALDURIEZ, 2001, p. 68) A arquitetura ISO/OSI serviu como base para o protocolo mais conhecido nas redes do tipo WAN. Entre cada camada de nós, está especificada uma interface clara que define a
  • 23. 22 passagem de informações entre as camadas de software e hardware. Semelhante ao OSI, outro protocolo muito difundido é o TCP/IP, que possui menos camadas e não especifica a camada de host para rede. O OSI possui sete camadas, enquanto o TCP/IP apresenta cinco. As diferenças entre os protocolos e as camadas existentes em cada protocolo podem ser vistas na Figura 1. Figura 1 - Diferenças entre as camadas dos protocolos ISO/OSI e TCP/IP O protocolo coloca caracteres de controle no início e no final do conjunto de dados transmitidos. Estes controles são conferidos ao chegarem na outra ponta, pelo outro programa/protocolo idêntico ao anterior. Se ao longo da transmissão ocorreu algum erro, o protocolo deve tentar enviar novamente os mesmos, até que cheguem corretamente. (SOUSA, 1996, p. 39) 2.2.3.1 Modelo de referência OSI O modelo OSI (Open Systems Interconnection) é um protocolo que permite a integração de diversos componentes. Ele divide as etapas de transmissão, definindo como deve proceder cada etapa do processo ao transferir dados. Cada nível oferece serviços ao nível seguinte e estão assim classificados: • Nível 7 – Aplicação: trata-se dos programas aplicativos do usuário, o que pode ser
  • 24. 23 banco de dados, correio eletrônico etc. • Nível 6 – Apresentação: é onde ocorre a conversão dos dados. Ex.: compressão de dados, conversão de formatos, criptografia entregando os dados convertidos à aplicação. • Nível 5 – Sessão: estabelece a conexão entre aplicações, definindo como vai ser feita a troca de informações e o modo de transmissão. • Nível 4 – Transporte: faz o controle da transferência de dados entre os computadores, garantindo que a mensagem seja entregue e evitando duplicações. • Nível 3 – Rede: encaminha pacotes, faz contabilização e transferência de dados para outra rede. • Nível 2 – Controle de linha: faz a detecção e a correção de erros, fazendo com que a linha física pareça livre de erros. • Nível 1 – Físico: especifica conexões elétricas, cabos, nível de voltagem de luz etc. 2.2.3.2 Protocolo TCP/IP O protocolo TCP/IP foi criado para atender necessidades de endereçamentos e problemas de interconexão de redes, garantindo interoperabilidade entre diferentes sistemas e objetivando ser transparente aos diferentes hardwares de diferentes plataformas, protocolos e interfaces do nível físico existentes (SOUSA, 1996, p. 91). Trata-se de um grupo de protocolos e padrões que definem como deve funcionar o acesso a correio eletrônico, transferência de arquivos etc., que interagem entre si a fim de transferir dados de um ponto a outro. Os protocolos mais comuns dentro da arquitetura TCP/IP são: • IP: envia datagramas, mas não controla envio/recebimento correto dos dados. • TCP: transporta os dados, efetuando correção de dados para garantir sua integridade. • FTP: O File Transfer Protocol é utilizado para efetuar o compartilhamento e a transferência de arquivos remotos, através do TCP. • SMTP: O Simple Mail Transfer Protocol é o protocolo que trata de acessos a correio eletrônico.
  • 25. 24 2.2.4 Segurança em Redes O fator segurança é uma das grandes preocupações ao utilizar redes e, principalmente, no momento em que dados passam a ser trafegados pela Internet. A segurança é um assunto abrangente e inclui inúmeros tipos de problemas. Em sua forma mais simples, a segurança se preocupa em garantir que pessoas mal- intencionadas não leiam ou, pior ainda, modifiquem mensagens secretamente enviadas a outros destinatários. (TANENBAUM, 2003, p. 767) São necessárias algumas técnicas para trafegar dados com segurança. Segundo Tanenbaum (2003, p. 770-804), as mais utilizadas são: • Criptografia: As informações a serem enviadas são transformadas em códigos que seguem um padrão especificado por uma chave. Para ser possível desfazer esta criptografia e ler a mensagem no destino, é necessário possuir uma cópia da chave de encriptação e realizar o processo inverso. • Algoritmos de chave simétrica: São algoritmos de criptografia que buscam criar chaves mais elaboradas, procurando tornar praticamente impossível o entendimento da encriptação. Este tipo de algoritmo utiliza a mesma chave para codificação e decodificação. • Algoritmos de chave pública: Neste caso, a chave de criptografia e a chave de descriptografia são diferentes e é muito difícil derivar uma a partir da outra. Desta maneira, uma chave de criptografia é criada e distribuída publicamente, mas a chave de descriptografia é mantida em segredo, permitindo que qualquer indivíduo interessado no envio de mensagens secretas a alguém possa fazê-lo tendo garantia de que apenas o destinatário será capaz de decifrá-la. • Assinaturas digitais: Buscam substituir assinaturas que em documentos impressos são feitas à mão, procurando uma identificação digital para documentos enviados pela Internet.
  • 26. 25 2.3 ESCALABILIDADE A escalabilidade é uma das metas mais importantes em sistemas distribuídos. “Escalabilidade permite que um sistema distribuído cresça (adicione mais máquinas ao sistema) sem afetar as aplicações e os usuários existentes” (DEITEL, 2005, p. 507). Infelizmente, um sistema escalável perde capacidade de desempenho à medida que é ampliado. Em um sistema que, por exemplo, um servidor trabalha para oferecer serviços centralizados de acesso a dados e aplicativos, à medida que o sistema é ampliado haverá gargalo de comunicação no servidor, logicamente, mesmo que este possua alta capacidade de processamento. Se por um lado em alguns casos é necessário manter bancos de dados centralizados por questões de segurança de dados, de outro fica claro que seria impossível trabalhar sem replicar e distribuir dados visto que diversos sistemas trabalham com milhares de requisições ao mesmo tempo. Mesmo algoritmos centralizados não constituem uma boa prática. Ao ampliar o número de estações de trabalho em uma rede, o crescimento do roteamento de mensagens é exponencial, o que resulta em funcionamento não eficiente se for centralizado. Desta maneira, o trabalho dos algoritmos quando distribuídos deve utilizar comunicação assíncrona, tendo em vista que a perfeita sincronização de relógios demandaria considerável esforço. Não só algoritmos, mas sistemas distribuídos como um todo devem se utilizar de comunicação assíncrona para ocultar a latência de comunicação, distribuição e replicação. A ideia, de acordo com Tanenbaum (2007, p. 7), é que após efetuar uma requisição, a aplicação não fique parada aguardando por um retorno, devendo esta executar outra tarefa até a chegada da resposta, o que dispara o funcionamento de um manipulador especial para finalizar a requisição emitida anteriormente. Há casos em que esta técnica não se aplica, porque não é possível aguardar uma resposta e executar outra operação naquele intervalo de tempo. Neste caso, é possível fazer a transferência de informações constantemente ao servidor, podendo assim, por exemplo, fazer a validação de um formulário enviando campo por campo durante o preenchimento do mesmo. Enquanto o usuário digita o conteúdo dos campos do formulário, o sistema vai fazendo a verificação dos dados já digitados e informa ao usuário em tempo de edição sobre um possível erro de sintaxe, acelerando o processo no momento de submissão definitiva do formulário.
  • 27. 26 Considerando que problemas de escalabilidade frequentemente aparecem sob a forma de degradação do desempenho, em geral é uma boa ideia replicar componentes por um sistema distribuído. A replicação não somente aumenta a disponibilidade, mas também ajuda a equilibrar a carga entre componentes, o que resulta em melhor desempenho. Além disso, em sistemas de ampla dispersão geográfica, ter uma cópia por perto pode ocultar grande parte dos problemas de latência de comunicação já mencionados. (TANENBAUM, 2007, p. 9) Uma das melhores formas de obtenção de replicação é o uso de cache. Um bom exemplo de replicação por cache é o uso de servidores Proxy que armazenam o conteúdo de páginas recentemente acessadas pelos clientes de uma LAN (Local Area Network) e, ao ser requisitada novamente pelo mesmo ou por um cliente diferente, a página é carregada a partir do cache, diminuindo então a latência e o tempo de resposta. A existência de uma série de cópias de um mesmo recurso às vezes pode gerar inconsistência. Se uma das cópias for atualizada, todas as outras ficam inconsistentes e é necessário utilizar técnicas especiais de controle de consistência. Em alguns casos é aceitável para um cliente receber uma página verificada há poucos minutos, tendo em vista que não é um site de informações constantemente atualizadas. Já em casos onde os resultados são informados em tempo real e atrasos de alguns minutos podem fazer muita diferença, o uso de cache não é uma boa prática. 2.4 SISTEMAS DE COMPUTAÇÃO DISTRIBUÍDOS Existem três modelos de sistemas de computação distribuídos, sendo dois deles largamente empregados atualmente para aplicações de alto desempenho, e o terceiro começando a compor o cenário de alternativas viáveis voltadas para, de modo especial, o meio corporativo. No modelo computação de cluster, “o hardware subjacente consiste em um conjunto de estações de trabalho ou PCs semelhantes, conectados por meio de uma rede local de alta velocidade” (TANENBAUM, 2007, p. 10). O sistema operacional utilizado também é semelhante entre elas. O uso deste tipo de computação surgiu a partir da diminuição do custo para aquisição de computadores pessoais e da visão de que a união de vários computadores para execução de tarefas paralelas poderia ser uma alternativa à compra de
  • 28. 27 supercomputadores e à reutilização de recursos obsoletos. Um exemplo bastante conhecido é o cluster Beowulf baseado em Linux, cuja organização está representada na Figura 2. Figura 2 - Organização do cluster Beowulf Estabelecendo uma comparação entre os clusters e os sistemas em grade percebemos que o primeiro é homogêneo, apresentando mesmo sistema operacional, mesma arquitetura e estando todos os nodos conectados à mesma rede, o que não acontece em sistemas em grade. Nestes, existe alto grau de heterogeneidade: hardware, sistemas operacionais, redes, domínios administrativos, políticas de segurança, entre outros. Um aspecto importante na computação em grade é o fato de que “recursos de diferentes organizações são reunidos para permitir a colaboração de um grupo de pessoas ou instituições” (TANENBAUM, 2007, p. 11). A organização de um sistema em grade se dá por meio de grupos conectados uns aos outros em uma organização virtual, como apresenta a Figura 3. Dessa maneira, cada grupo tem dentro de seu domínio, acesso exclusivo a determinados recursos, que podem ser clusters ou impressoras, por exemplo, os quais não estão disponíveis a outros grupos. Quanto a outros recursos o compartilhamento pode ser total, como por exemplo, a distribuição de tarefas de processamento entre grupos para melhor utilização de nodos ociosos.
  • 29. 28 Figura 3 - Organização virtual provida pela computação em grade A computação em nuvem deriva dos modelos acima citados e é um conceito recente. Trata-se de um modelo emergente de infraestrutura de tecnologia da informação desenvolvido para oferecer recursos computacionais a alta velocidade. As estações de trabalho necessitam basicamente de um sistema operacional e algumas configurações de acesso a recursos disponíveis em servidores remotos. Como o usuário não sabe onde estão localizados fisicamente estes recursos, adotou-se a nomenclatura “nuvem”, que representa um aglomerado de servidores espalhados pelo mundo acessíveis via Internet. Os serviços são entregues de maneira simples, provendo escalabilidade, qualidade diferenciada e enfoque no usuário para prover inovação e eficiente tomada de decisões (IBM, 2009). A tecnologia de serviços Web, que representa o próximo estágio da computação distribuída, afetará profundamente as organizações no futuro. Serviços Web abrangem um conjunto de padrões relacionados que podem habilitar quaisquer duas aplicações de computador a se comunicar e trocar dados via Internet. Muitos fatores indicam que os serviços Web mudarão radicalmente as arquiteturas de TI e os relacionamentos entre parceiros. (DEITEL, 2005, p. 551)
  • 30. 29 O que Deitel (2005) afirmou pode ser visto hoje com o nome de computação nas nuvens. As vantagens, desvantagens e outros detalhes a respeito deste novo modelo distribuído serão discutidos no próximo capítulo.
  • 31. 3 COMPUTAÇÃO NAS NUVENS 3.1 CONCEITUAÇÃO O termo computação nas nuvens, do inglês cloud computing, 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. 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. Computação em nuvem, portanto, trata-se da utilização de softwares ou sistemas em rede e da capacidade de prover recursos ao usuário sob demanda. Desta maneira, as informações são permanentemente armazenadas em servidores na Internet (localizados na “nuvem”), sendo realizadas caches destes dados em computadores desktop, notebooks, dispositivos móveis, entre outros, os quais estarão fazendo uso da infraestrutura em nuvem. É 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ócio online, a partir de qualquer dispositivo virtualmente disponível, mediante um pagamento por uso. Devido ao fato de permitir escalabilidade e elasticidade, o modelo oferece aos administradores de tecnologia da informação uma maneira de aumentar a capacidade de acordo com a demanda. Ou seja, com a adoção do modelo, não existe a necessidade de alto investimento na substituição de hardware obsoleto, na compra de licenciamento de softwares ou no treinamento de pessoal, uma vez que todo o processamento se dá em servidores localizados nas "nuvens", pagando apenas pelo tráfego que de fato for gerado.
  • 32. 31 3.2 CARACTERÍSTICAS Na computação tradicional, os softwares rodam sob plataformas individuais e são cópias instaladas em cada unidade de trabalho. Todos os documentos criados por tais softwares são armazenados localmente no disco rígido do computador e podem ser acessados por computadores de uma mesma rede, mas não por terminais localizados fora da mesma. Esta abordagem pode ser considerada orientada a terminal. De modo contrário à abordagem supra-citada surge a computação nas nuvens. As aplicações e os documentos utilizados não rodam e não são armazenados, respectivamente, em unidades de trabalho, mas em servidores acessíveis a partir de outro dispositivo ou estação via Internet. Se ocorrer alguma falha na unidade de trabalho, softwares e documentos permanecem acessíveis, uma vez que estão armazenados em uma coleção de servidores. Trata-se de uma abordagem orientada a documento. A computação em nuvem não deve ser confundida com computação em rede. Nesta última, as aplicações e os documentos estão hospedados em servidores localizados dentro de uma companhia e acessíveis apenas na rede da mesma. Já a computação em nuvem envolve várias companhias, vários servidores e várias redes de transmissão, disponibilizando serviços e documentos em qualquer local do mundo que ofereça acesso à Internet. Contudo, esta infraestrutura de comunicação, processamento e armazenagem deve ser transparente ao usuário final, mesmo que parcialmente. Esta transparência vem do conceito de abstração característico de todo sistema computacional distribuído. “Um sistema distribuído é um conjunto de computadores independentes que se apresenta aos seus usuários como um sistema único e coerente”, definiu Tanenbaum (2007, p. 1). A infraestrutura é transparente ao usuário permitindo que o acesso ocorra a partir de qualquer dispositivo com acesso à Internet, esteja ele rodando qualquer sistema operacional e qualquer navegador devidamente atualizados. De acordo com Miller (2008), a organização pioneira na disponibilização de serviços em computação nas nuvens, o Google, elenca seis propriedades do modelo: • Orientação ao usuário: Uma vez que o usuário está conectado à nuvem, qualquer documento armazenado – arquivos de texto, mensagens, imagens, aplicações – torna- se propriedade do usuário. • Orientação à tarefa: Em vez de focar na aplicação e o que ela pode fazer, o foco está no que o usuário necessita realizar e em como a aplicação pode auxiliá-lo. Aplicações
  • 33. 32 tradicionais – editores de texto e planilhas de cálculo, e-mail, etc. - estão tornando-se menos importantes que os documentos criados por elas. • Eficácia: O fato de se conectar centenas ou milhares de computadores a uma nuvem cria uma riqueza de poder computacional impossível de ser implementada com um único computador. • Acessibilidade: Uma vez que dados são armazenados diretamente nas nuvens, o usuário tem a possibilidade de instantaneamente buscar mais informações de diversos repositórios. Não há limitação a uma única fonte de dados, como em uma unidade individual de trabalho. • Inteligência: Com grandes montantes de informação armazenados em servidores nas nuvens, a mineração e análise de dados são técnicas necessárias para um aproveitamento mais inteligente da informação acessível. Arquiteturas em nuvem facilitam estas tarefas, uma vez que todos os dados e aplicações encontram-se centralizados. • Programável: Muitas tarefas do modelo em nuvem devem ser automatizadas. Por exemplo, para proteger a integridade dos dados, as informações armazenadas em um único computador na nuvem devem ser replicadas para outros computadores da mesma nuvem. Se este computador ficar indisponível, a programação da nuvem automaticamente redistribui os dados daquele nodo para outro. Tratam-se de técnicas de tolerância a falhas. Em resumo, a computação em nuvem torna possível a mudança de foco do computador para o usuário, da aplicação para a tarefa e do isolamento de dados para dados acessíveis em qualquer local e compartilhados com qualquer membro que possua permissão. 3.3 MODELOS DE SERVIÇO Existem alguns tipos de computação em nuvem que caracterizam a abordagem utilizada, cuja qual pode variar de acordo com a necessidade do consumidor e ser classificada como: aplicações, ambientes de software, infraestrutura de software, kernel de software e hardware (YOUSEFF, 2008). Esta abordagem está representada em níveis na Figura 4.
  • 34. 33 3.3.1 Nível de Aplicação O nível de aplicação é o mais visível ao usuário final. Normalmente, os serviços prestados por este nível são acessíveis por usuários através de portais Web e, em alguns casos, são serviços pagos. Este modelo mostrou-se atrativo para muitos usuários, uma vez que diminui o peso da preocupação com a manutenção de software e o alto custo com operações e suporte contínuos. Em outras palavras, o trabalho computacional é transferido aos datacenters nos quais as aplicações em nuvem são desenvolvidas. Esta característica diminui as restrições de hardware necessárias ao usuário final, além de fornecer ótimo desempenho a estações de trabalho com hardware mais antigo, sem a necessidade de investimento na compra de novos equipamentos. Este modelo simplifica e facilita até mesmo o trabalho dos provedores de serviços em nuvem. Uma vez que a aplicação é desenvolvida e mantida na infraestrutura da companhia que provê o serviço, os desenvolvedores podem criar pequenos pacotes de atualização e adicionar novas funcionalidades sem atrapalhar o trabalho dos usuários. Isto convenciona uma receita garantida ao desenvolvedor e traz comodidade ao utilizador, sendo benéfica para ambos os lados e normalmente referenciada como SaaS - Software as a Service (Software como Serviço). Apesar dos diversos benefícios oferecidos pelo modelo em questão, alguns problemas de implantação limitam seu uso em larga escala. Especificamente, a segurança e a disponibilidade de aplicações em nuvem são dois dos maiores problemas do modelo que devem ser enfrentados por provedores e utilizadores. Mais um motivo para o retardo na adoção de SaaS é a dificuldade na migração de dados para as nuvens. 3.3.2 Nível de Ambiente de Software O segundo nível de acordo com a proposta de Youseff (2008) é o ambiente de software, também chamado de plataforma 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
  • 35. 34 suporte à escalabilidade necessária para tais aplicações. O serviço oferecido neste nível é comumente tido como PaaS – Platform as a Service (Plataforma como Serviço). Um exemplo deste tipo de serviço é o Google App Engine, o qual oferece um ambiente de desenvolvimento em Python e APIs que permitem aplicações interagirem com a nuvem do Google. O framework App Engine será abordado em detalhes mais adiante. Existem alguns benefícios para desenvolvedores de aplicações que voltam-se para ambientes de programação em nuvem, incluindo estruturas que viabilizam escalabilidade e balanceamento de carga automáticos, bem como a integração facilitada com outros serviços para realização de tarefas como autenticação, tarefas de e-mail e interface com o usuário. Desta forma, grande parte da complexidade de desenvolvimento é abstraída pelo ambiente de programação e o desenvolvedor ganha a habilidade de integrar novos serviços a sua aplicação de acordo com a necessidade. Em resumo, o desenvolvimento torna-se uma tarefa menos complicada, há uma aceleração no tempo de implantação e minimização de falhas lógicas na aplicação. 3.3.3 Nível de Infraestrutura de Software O nível de infraestrutura de software fornece recursos fundamentais para camadas de nível superior, permitindo a criação de novos ambientes de software ou novas aplicações. Prosseguindo na visão de Youseff (2008), este nível pode ser categorizado em: recursos computacionais, armazenamento de dados e comunicações. a) Recursos Computacionais: Neste nível, máquinas virtuais (virtual machines) são a melhor maneira de fornecer recursos computacionais, já que oferecem ao usuário maior flexibilidade, uma vez que ele normalmente possui permissão total para uso da máquina virtual, estando apto a personalizar o software e obter maior performance e eficiência. Estes serviços são normalmente chamados IaaS – Infrastructure as a Service (Infraestrutura como Serviço). A virtualização é a tecnologia responsável pela existência deste componente de nuvem, o qual viabiliza ao usuário uma flexibilidade jamais vista em termos de configuração na proteção da infraestrutura física do datacenter. Recentemente, os avanços em virtualização de sistemas operacionais trouxeram dois conceitos plausíveis para o nível em questão: a paravirtualização e a
  • 36. 35 virtualização assistida por hardware. Embora ambas as tecnologias abordem o isolamento como uma forma de aumento de desempenho entre máquinas virtuais compartilhando os mesmos recursos físicos, a interferência de desempenho entre máquinas virtuais que fazem uso da mesma cache não pode ser descartada. A perda de desempenho em máquinas virtuais compartilhando o mesmo meio físico, resulta na incapacidade dos fornecedores de serviços nas nuvens em oferecerem garantias aceitáveis de desempenho aos seus clientes. b) Armazenamento de Dados: O segundo recurso de infraestrutura é 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 (Armazenamento de Dados como Serviço), um facilitador de tarefas de escalabilidade que podem ir além de servidores limitados. Sistemas de armazenamento de dados surgiram para suprir alguns requisitos sobre gerenciamento de dados e informações, incluindo alta disponibilidade, confiabilidade, desempenho, replicação e consistência de dados. Contudo, devido à natureza conflitante destes requisitos, não existe um sistema capaz de implementar todos eles. Alguns exemplos de sistemas de armazenamento de dados são: sistemas de arquivos distribuídos e bancos de dados relacionais com replicaçã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 infraestrutura em questão. Em consequência disto, estes sistemas possuem a obrigação de fornecer certas capacidades de comunicação “orientadas a serviço”, configuráveis, programáveis, previsíveis e confiáveis. Com estas vantagens, o conceito de CaaS – Communication as a Service (Comunicação como Serviço) surgiu para oferecer suporte a determinados requisitos, tais como segurança em redes, encriptação de dados e monitoramento de rede. Apesar deste ser o modelo comercialmente menos adotado entre todos os serviços em nuvem existentes, segundo Youseff (2008), é possível observar em algumas pesquisas que várias decisões, protocolos e soluções de projeto arquitetural necessitam fornecer CaaS com QoS.
  • 37. 36 Alguns recursos comuns de projeto são compartilhados entre os três componentes de infraestrutura. Por exemplo, segurança, disponibilidade e qualidade de serviços estão entre as características mais importantes. Entretanto, o oferecimento de outros mecanismos de segurança para arquiteturas “orientadas a serviço” é uma rica área de estudos e pesquisas, com enfoque um pouco diferente das comunidades de SOA – Service-Oriented Architecture (Arquitetura Orientada a Serviços) e das comunidades de segurança. A interface com o usuário para componentes de insfraestrutura em nuvem varia substancialmente de um sistema para outro. Exemplos de interfaces utilizadas neste modelo são: SOAP – Simple Object Access Protocol e REST – Representational State Transfer. Contudo, a própria característica de implementação “orientada a serviço” muito atrapalha, sendo plausível projetar uma interface unificada e interativa através de um portal Web para comunicar com serviços Web a fim de oferecer uma interface padronizada para serviços em nuvem neste nível. 3.3.4 Nível de Kernel de Software O nível de Kernel de Software é o responsável por oferecer o gerenciamento de software básico para os servidores físicos que compõem a nuvem. Neste nível, o Kernel de Software tem a possibilidade de ser implementado como um Kernel de SO, hypervisor, máquina virtual e/ou clustering middleware. Algumas aplicações em grid foram implantadas e rodadas neste nível com algumas máquinas conectadas em cluster. Contudo, a falta de bons mecanismos de abstração de virtualização em computação em grid, tornam o trabalho muito semelhante à infraestrutura de hardware e o suporte à migração, pontos de checagem e balanceamento de carga para aplicações deste nível sempre foram tarefas difíceis. O campo de pesquisa da computação em grid é vasto e alguns dos conceitos desenvolvidos com tais estudos podem ser percebidos atualmente na computação nas nuvens. Segundo Youseff (2008), pesquisas na área da computação em grid podem auxiliar potencialmente nos avanços da computação nas nuvens, possibilitando mudanças significativas da idéia atual do novo modelo para uma computação nas nuvens como utilidade (utility computing).
  • 38. 37 3.3.5 Nível de Hardware e Firmware O último nível proposto na ontologia de Youseff (2008) é composto pelo hardware e pelos componentes de rede, os quais formam o esqueleto da nuvem. Desta forma, o cenário de usuários deste nível de computação nas nuvens é composto por empresas de grande porte que necessitam suprir grandes requisitos na parte de TI e podem adotar o modelo HaaS – Hardware as a Service (Hardware como Serviço). Neste tipo de serviço, a empresa fornecedora responsabiliza-se por gerenciar, operar e atualizar o hardware de seus consumidores, por tempo determinado de sublocação. Este modelo é vantajoso para o usuário a partir do momento em que elimina-se a preocupação com investimentos na criação e manutenção de datacenters. Além disso, os fornecedores possuem conhecimento técnico e infraestrutura de custo-benefício necessários para manter seus sistemas, tornando-se especialistas no ramo. As características mais importantes de um provedor de HaaS, entre outras, são agilidade e eficiência em escalar sistemas, manter datacenters e minimizar o consumo de energia. Todos os níveis apresentados estão ilustrados em camadas na Figura 4. Figura 4 - Níveis de divisão da computação nas nuvens segundo a ontologia proposta Fonte: Adaptado de Youseff (2008)
  • 39. 38 3.4 ECONOMIA Os primeiros clientes a demonstrarem interesse na adoção da computação nas nuvens foram as empresas. Tanto grandes quanto pequenas companhias têm a possibilidade de redução de custos em TI e melhorias em produtividade com a utilização de ferramentas baseadas na Web para gerenciamento de projetos, colaboração em documentos e apresentações, gerenciamento de contatos empresariais, agendas e compromissos, etc. A grande vantagem da computação nas nuvens para o meio empresarial é a capacidade de fazer mais com orçamentos limitados. Outra vantagem que a computação nas nuvens traz para uma empresa são os benefícios da portabilidade. Ao invés de prender-se a documentos e aplicações armazenados e instalados em computadores localizados em escritórios ou empresas, os colaboradores podem ter acesso a qualquer dado necessário a partir de qualquer lugar com acesso à Internet – em casa, no trabalho, na rua. Segundo pesquisa publicada por George Reese (2008), o mundo está passando por uma crise financeira jamais vista na história, o que impulsiona a busca por alternativas mais baratas para dar continuidade a operações em empresas. “Os mercados de capitais estão congelados e as empresas que necessitam fazer investimentos de capital para crescer ou continuar as suas operações estão enfrentando um desafio” (REESE, 2008). A falta de capital ocasiona uma falta de flexibilidade em aproveitamento da tecnologia para operar e desenvolver um negócio. No momento em que não é possível para uma empresa conseguir um empréstimo bancário, passa a ser necessário utilizar receitas da própria empresa para comprar novos servidores e estações de trabalho. Tipicamente, quando uma empresa quer ampliar sua estrutura de TI, existem duas alternativas apontadas por Reese (2008): • Implementá-la por si própria, alugar equipamentos caso necessário; • Terceirizar a infraestrutura para um provedor de serviços. Uma característica comum às duas alternativas é a necessidade de suprir picos de uso independentemente do tempo gasto por eles, ou seja, a empresa deve possuir infraestrutura capaz de sanar momentos de maior demanda, sejam eles de apenas uma hora durante um ano ou de praticamente o ano inteiro. Em casos de pouca frequência destes picos, os equipamentos ficam ociosos e/ou subutilizados. A análise proposta por Reese (2008) supõe que, para determinado cliente, dois
  • 40. 39 servidores de aplicação apoiados por dois servidores de banco de dados, mais um balanceador de carga sejam a solução do problema. As opções seriam semelhantes às apresentadas na Tabela 1. Tabela 1 - Comparativo entre TI Interno e Serviços Terceirizados TI Interno ($) Serviços Terceirizados ($) Investimento de Capital 40.000 0 Custos de Implantação 10.000 5.000 Serviços Mensais 0 4.000 Trabalho Mensal 3.200 0 Custo após 3 anos 149.000 129.000 Fonte: Reese (2008) De acordo com as observações feitas pelo pesquisador, assumem-se os seguintes fatores: servidores com boa quantidade de memória RAM e um bom balanceador de carga; custo após três anos é tido como 10% do custo do capital; um bom fornecedor de serviços terceirizados com custo-benefício. Com esta visão, no cenário especificado acima, os serviços terceirizados conseguem uma economia de 13,5% sobre a abordagem de manter um setor interno de TI na empresa. Um dos atrativos de serviços terceirizados é a inexistência de investimento de capital. Analisando a pesquisa de Reese (2008), para uma abordagem com TI interno, o investimento inicial seria de 40.000 dólares, o que representa um altíssimo investimento inicial diante da situação atual da economia. Esta conclusão, mostra que os argumentos sugerem a adoção da abordagem de serviços terceirizados, mas Reese compara esta com a computação nas nuvens, como pode ser visualizado na Tabela 2. Em comparação com o modelo de TI interno na empresa, a computação nas nuvens consegue uma economia de 29%. E em comparação com serviços terceirizados, a computação nas nuvens economiza 18% dos custos. É importante ressaltar que nesta pesquisa não estão sendo consideradas questões como compra por capacidade e compra por uso, o que aumentaria os ganhos com a computação nas nuvens, cuja qual é paga por uso.
  • 41. 40 Tabela 2 - Comparativo entre Serviços Terceirizados e Computação nas Nuvens Serviços Terceirizados ($) Computação nas Nuvens ($) Investimento de Capital 0 0 Custos de Implantação 5.000 1.000 Serviços Mensais 4.000 2.400 Trabalho Mensal 0 1.000 Custo após 3 anos 129.000 106.000 Fonte: Reese (2008) Além dos números, Reese afirma que existem outros benefícios econômicos com a adoção da abordagem em nuvem, tais como: investimento inicial nulo, sejam quais forem as necessidades do consumidor; discrepância entre o pico e a média de uso de processamento torna a diferença entre o custo da computação em nuvem cada vez mais vantajosa em relação a outras opções; no modelo em nuvem há automaticamente a inclusão de um bom espaço de armazenamento, o qual é elástico e cresce de acordo com a necessidade, diferentemente de outras opções que se tornariam consideravelmente mais caras quando da adição de novos itens de hardware; redundância se torna mais barata a partir do momento em que esta é uma preocupação extremamente importante por parte dos provedores de serviços em nuvem. 3.5 APLICAÇÕES E PÚBLICO-ALVO Existem diversas atividades desempenhadas por grupos de pessoas que podem ser melhor realizadas e gerenciadas por sistemas computacionais, especialmente sistemas em nuvem. Pode-se estabelecer formas de colaboração para tomadas de decisão, agendamento de tarefas, eventos e compromissos, criação de orçamentos, controle de despesas, apresentações, entre outras. De acordo com Miller (2008), a migração de aplicativos para as nuvens permitiu o crescimento de grupos de colaboração, bem como a facilitação da execução de suas atividades, especialmente com o surgimento de novos aplicativos para as nuvens. Ele ainda divide usuários de computação nas nuvens em três grupos: usuários domésticos, comunidade e grupos e corporações.
  • 42. 41 3.5.1 Usuários Domésticos É comum que todos os membros de uma família trabalhem em locais diferentes e tenham, então, poucos momentos de comunicação verbal e pessoal. É possível centralizar as comunicações entre membros em comunicações baseadas em webmail, acabando com a ideia de e-mail acessível em um único computador via aplicações como o Microsoft Outlook que efetuam download das mensagens para a estação de trabalho. Da mesma forma que a comunicação via e-mail, a armazenagem de compromissos em agendas de aplicativos locais impedia ou dificultava a colaboração e visualização de eventos programados entre membros de um grupo familiar. Para assegurar confirmações e notificações de compromissos nos sistemas atuais, estão disponíveis estruturas automatizadas para desempenhar tal tarefa. Ou seja, uma vez criado um evento por algum membro possuidor de permissão, cada membro do grupo poderá receber notificações via e-mail ou mensagem SMS, sendo capaz de confirmar ou não a sua participação. Além disso, o usuário pode configurar seu sistema de agenda para ser notificado novamente alguns instantes antes da ocorrência do evento, de acordo com as possibilidades de configuração oferecidas por seu serviço de agenda. Outros serviços funcionam semelhantemente ou servem apenas como referência cujo qual um grupo de membros pode editar. Neste caso, temos exemplos como listas de compras de supermercado, listas de afazeres, gerenciamento de orçamentos e projetos escolares. Um serviço muito comum e de ampla utilização, segundo Miller (2008), é a suíte de aplicativos online Google Docs, que oferece serviços de edição de textos, planilhas e apresentações, todos com possibilidade de colaboração online por número ilimitado de usuários. Além deste, serviços de e-mail como Gmail, Windows Live Hotmail e Yahoo! Mail propiciam o compartilhamento e introduzem novidades tais como a evidência do compartilhamento e os serviços de comunicação instantânea. Pode-se citar também serviços de listas de tarefas como Planner, Remember the Milk, Ta-da List, Bla-bla List, Tudu List e Voo2Do, que possuem características diferentes entre si e os serviços de compartilhamento de álbuns de fotos online, como o famoso Flickr. Veja a Figura 5, que demonstra uma nuvem de serviços divididos em grupos, criada a partir da análise de serviços e com base em citações de Miller (2008).
  • 43. 42 3.5.2 Comunidades e Grupos Semelhantemente às possibilidades de colaboração disponíveis para grupos familiares, existem ferramentas em nuvem para facilitar e gerenciar a troca de informações entre grupos e comunidades de qualquer segmento. O gerenciamento de agendas e compromissos funciona de modo a permitir que todos tenham como confirmar a participação em eventos, trabalhando com notificações e permitindo a mais de um usuário gerenciar a agenda do grupo. De acordo com a necessidade, existem algumas opções como Google Calendar, Yahoo! Calendar, CalendarHub e Zvents. Para o gerenciamento de orçamentos de projetos é possível encontrar serviços como o Salesforce.com AppExchange, um integrante da família Salesforce.com que traz um detalhamento maior e mais precisão nos resultados. Contudo, gratuitamente é possível encontrar algumas outras opções, tais como Google Spreadsheets e Zoho Sheet que oferecem planilhas de cálculo online e colaborativas. Outra necessidade comum a grupos e comunidades são ferramentas de marketing para projetos. Os serviços Google Docs e Zvents facilitam estas atividades e redes sociais como Facebook e Myspace podem auxiliar no aumento da visibilidade destes eventos entre nichos específicos. Veja a Figura 5, que ilustra a divisão em grupos de alguns aplicativos em nuvem mais conhecidos, criada a partir da análise de serviços e com base em citações de Miller (2008). 3.5.3 Corporações Esta é a classe de usuário que antes aderiu aos sistemas de computação nas nuvens, segundo a visão de Miller (2008). A economia e o aumento de produtividade são interessantes a pequenas e grandes empresas, as quais podem fazer mais com orçamentos limitados. Este é o motivo pelo qual existem suítes dedicadas a oferecer conjuntos de ferramentas em um único pacote, com integração entre elas, voltadas a empresas. Exemplos disto são Salesforce.com e Google Apps. Ambos oferecem aplicativos de diversas espécies integrados, que juntos substituem os softwares tradicionais instalados localmente nas estações de trabalho. O uso de computação nas nuvens ajuda empresas a gerenciar projetos com eficiência, englobando agendas de compromissos compartilhadas entre membros da organização, gerenciamento de projetos, relatórios, ferramentas de marketing, orçamentos, relatórios de
  • 44. 43 despesas, apresentações e mobilidade. Aplicativos como BigContacts e Highrise facilitam o gerenciamento e a colaboração de listas de contatos e/ou clientes, da mesma forma que projetos podem ser totalmente gerenciados por aplicativos como AceProject, Basecamp, onProject e Project Insight. Existem alguns serviços de agendas de compromissos voltados para o meio empresarial que pode-se citar, como o Appointment Quest, hitAppoint e Schedulebook, todos oferecendo maiores opções de compartilhamento e visibilidade. Para um melhor entendimento de aplicativos voltados a este meio, elaborou-se a Figura 5 a partir da análise de serviços e com base em citações de Miller (2008). Figura 5 - Aplicativos de computação nas nuvens divididos em grupos de usuários Fonte: o autor
  • 45. 4 PROVEDORES DE SERVIÇOS EM NUVEM Existem alguns níveis de computação nas nuvens como visto no capítulo anterior. Cada serviço possui detalhes que o diferenciam dos demais, como por exemplo, o custo de uso e as limitações impostas. Algumas empresas dedicadas em disponibilizar serviços de computação nas nuvens trabalham com módulos abertos a desenvolvedores, facilitando o crescimento de suas plataformas e abstraindo a complexidade no desenvolvimento de sistemas escaláveis. Muitos são os serviços existentes no mercado, mas existem alguns que podem ser destacados. Os sistemas de cobrança da Amazon, por exemplo, seguem a ideia de pagamento sob-demanda, cobrando do cliente apenas o que ele utiliza de fato. Além deste fator, um ponto positivo dos serviços entregues pela Amazon é a integração entre eles. 4.1 AMAZON WEB SERVICES A Amazon Web Services existe desde 2006 e oferece uma série de serviços em computação nas nuvens, cada um voltado a um específico nicho de usuário, para atender desde a necessidade de taxas altas de processamento até a alta demanda de disponibilidade. 4.1.1 Amazon Elastic Compute Cloud (Amazon EC2) A Amazon Elastic Compute Cloud (Amazon EC2) é uma plataforma paga que oferece remotamente um conjunto de computadores rodando Linux/UNIX ou Windows com permissões de administrador do sistema, cuja qual é capaz de ampliar ou reduzir de acordo com a necessidade do cliente. Isto possibilita “alugar” tantos computadores quanto forem necessários e acessá-los remotamente, podendo o cliente instalar, acessar e desenvolver aplicações para este ambiente, além de armazenar dados e documentos. Trata-se de uma Infraestrutura como Serviço (IaaS), uma vez que oferece recursos para camadas de nível superior, permitindo a criação de novos ambientes de software e de novas aplicações.
  • 46. 45 O oferecimento do Amazon EC2 se dá de várias formas. O cliente decide quantas estações de trabalho necessita, seja usuário doméstico ou corporativo, e contrata o tipo de sistema operacional e outros recursos. 4.1.2 Amazon SimpleDB O Amazon SimpleDB é um serviço que provê as principais funções de um banco de dados voltado para as nuvens. O objetivo do SimpleDB é diminuir a complexidade de uso de bancos de dados escaláveis, permitindo ao desenvolvedor preocupar-se apenas com a aplicação em desenvolvimento. Este tipo de serviço é classificado como Armazenamento de Dados como Serviço (DaaS), visto que ele permite ao usuário armazenar seus dados em discos remotos e acessá-los a qualquer momento e de qualquer lugar. O Amazon SimpleDB trabalha com uma abordagem que elimina a necessidade de modelagem de dados, constantes manutenções e preocupação com aumento de desempenho, o que normalmente acontece com desenvolvedores que utilizam bancos relacionais. O serviço oferece um conjunto de APIs para armazenagem e acesso aos dados, possibilitando implementar escalabilidade, pagando somente por recursos utilizados. 4.1.3 Amazon Simple Storage Service (Amazon S3) O Amazon S3 é outro exemplo de Armazenamento de Dados como Serviço (DaaS), que diferencia-se do SimpleDB por ser voltado apenas à Internet. Trata-se de um sistema de armazenamento de arquivos que vai desde 1Byte até 5GB, escalável, preparado para serviços Web que realizem muitas requisições simultâneas. 4.1.4 Amazon CloudFront Amazon CloudFront é um serviço Web para distribuição de conteúdo. Ele integra-se a outros serviços da Amazon para prover a desenvolvedores e empresas uma forma fácil de distribuir conteúdo para seus clientes, com baixa latência e alta velocidade de transferência de
  • 47. 46 dados. A distribuição de conteúdo se dá por meio de uma rede global distribuída. As requisições são automaticamente encaminhadas para a localidade mais próxima, garantindo assim que o conteúdo seja fornecido com o menor tempo possível. O CloudFront é outro serviço classificado na categoria Armazenamento de Dados como Serviço (DaaS), um dos mais baratos da Amazon. 4.1.5 Amazon Elastic MapReduce O Amazon Elastic MapReduce é um serviço Web que permite a empresas, pesquisadores, analistas de dados e desenvolvedores realizarem o processamento de grandes quantidade de dados de forma fácil e rentável. Trata-se de um serviço utilizador dos recursos de infraestrutura do Amazon EC2 e do Amazon S3. Os usos mais indicados para o serviço são tarefas como indexação da Web, mineração de dados, análise de arquivos de log, aprendizado de máquina, análise financeira, simulação científica e investigação bioinformática. Trata-se de uma Infraestrutura como Serviço (IaaS). 4.1.6 Amazon Virtual Private Cloud (Amazon VPC) O Amazon Virtual Private Cloud (Amazon VPC) é uma forma de transmissão de dados com segurança e transparência entre a infraestrutura de TI de uma empresa e a infraestrutura em nuvem da Amazon. O serviço permite que uma empresa conecte sua infraestrutura existente a um conjunto de recursos oferecidos pela Amazon, de forma isolada através de uma Rede Virtual Privada (VPN), ampliando suas capacidades de gestão, tais como serviços de segurança, firewalls e sistemas de detecção de intrusão. Neste caso, classifica-se o Amazon VPC em Comunicação como Serviço (CaaS), uma vez que há uma forte necessidade de garantia de QoS na transmissão de dados via Internet. 4.2 SUN A Sun oferece a plataforma Sun Open Cloud, uma “infraestrutura open source de
  • 48. 47 cloud computing ativada por tecnologias de software líderes da indústria, incluindo Java, MySQL, OpenSolaris e Open Storage” (SUN, 2009). A estratégia da Sun é o oferecimento de nuvens públicas para garantir maior interoperabilidade, isto é, assegurar a livre troca de informações entre nuvens públicas e privadas. Outro compromisso assumido pela Sun enquanto provedora de serviços em nuvem é o oferecimento de APIs para o público desenvolvedor. A empresa tem histórico forte na criação de comunidades colaborativas para fazer com que seus produtos cresçam e desenvolvam de forma livre, característica que a Sun pretende implantar com serviços em nuvem da mesma forma. A Sun Open Cloud é oferecida sob-demanda e classifica-se em Plataforma como Serviço (PaaS), uma vez que oferece aos desenvolvedores um conjunto definido de APIs para facilitar 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. “Os principais parceiros e entusiastas dos padrões de cloud [nuvem] estão apoiando a Sun Microsystems para oferecer uma plataforma aberta de cloud que ajudará a garantir que os desenvolvedores tenham um ecossistema robusto de aplicações e serviços para acelerar a criação e a implementação de aplicações cloud-enabled (viabilizadas para clouds) e para simplificar o gerenciamento”. (SUN, 2009). 4.3 IBM A IBM mantém o IBM Cloud Labs em nove centros de larga expansão no mundo, incluindo São Paulo. Existe um grupo de softwares oferecidos para dar suporte a cada etapa de migração de um ambiente tradicional para outro em nuvem, através dos quais a IBM facilita as tarefas mais essenciais. Outros softwares estão disponíveis para o controle, gerenciamento e segurança do ambiente em nuvem para serem utilizados após a aquisição do modelo. Tivoli e LotusLive são alguns dos softwares disponibilizados. A plataforma para desenvolvedores da IBM chama-se developerWorks, a qual possui seções específicas para computação nas nuvens.
  • 49. 48 4.4 EUCALYPTUS Eucalyptus (Elastic Utility Computing Architecture Linking Your Programs To Useful Systems) é uma infraestrutura open source para implementação de computação nas nuvens em cluster, por meio de ferramentas em Linux e serviços Web básicos. Atualmente, a interface do Eucalyptus é capaz de comunicar-se com os serviços EC2 e S3 da Amazon, mas o projeto busca oferecer suporte a todos os serviços públicos ou privados existentes no mercado que estiverem interessados em firmar parcerias. O projeto surgiu no departamento de Ciência da Computação da Universidade da Califórnia como projeto de pesquisa, sendo posteriormente transformado em organização por seus criadores. 4.5 VMWARE A VMware tornou-se reconhecida mundialmente devido ao desenvolvimento da plataforma de mesmo nome para virtualização. Como propulsora da computação nas nuvens, a virtualização utiliza de maneira mais eficaz recursos de hardware subutilizados. A aposta da VMware no campo de computação nas nuvens é a associação da virtualização a este novo modelo computacional distribuído, aplicada como VMware vCloud e VMware vSphere. 4.5.1 VMware vCloud O VMware vCloud é a solução em computação nas nuvens oferecida pela VMware. O diferencial deste serviço é o estabelecimento de parcerias com provedores de computação nas nuvens para garantir a interoperabilidade entre nuvens públicas e privadas e a correta execução de aplicativos já existentes. Para tal, o VMware vCloud estabelece padrões de comunicação via interfaces bem estabelecidas.
  • 50. 49 4.5.2 VMware vSphere VMware vSphere, o primeiro sistema operacional em nuvem do setor, utiliza os recursos da virtualização para transformar datacenters em infraestruturas de computação em nuvem consideravelmente simplificadas e permite que as organizações de TI forneçam a próxima geração de serviços de TI flexíveis e confiáveis usando recursos internos e externos com segurança e baixo risco. (VMWARE, 2009) Figura 6 - Organização do VMware vSphere, o primeiro sistema operacional em nuvem do mercado Fonte: VMware (2009)
  • 51. 50 O VMware vSphere é oferecido em seis versões diferentes. Está disponível juntamente com a plataforma um software para efetuar migração de aplicativos já existentes para a plataforma do vSphere. Além disso, cada característica importante segundo a visão da VMware para sistemas de computação nas nuvens, possui um software ou serviço especializado. Por exemplo, para controlar a parte de segurança da plataforma, existe o VMware VMsafe que “permite o uso de produtos de segurança que funcionam em conjunto com a camada de virtualização para oferecer a máquinas virtuais níveis mais altos de segurança do que os oferecidos por servidores físicos (VMWARE, 2009). Na figura 6 é possível visualizar as camadas de trabalho do vSphere. 4.6 MICROSOFT Compute, Storage e Fabric são os três níveis oferecidos pela Microsoft no Windows Azure como forma de facilitar a migração da plataforma tradicional para a abordagem em nuvem. Juntamente com o ambiente de desenvolvimento do Windows Azure, eles fornecem uma ponte para desenvolvedores que quiserem hospedar seus aplicativos. O Azure é parte do Azure Services Platform, que visa prover um ambiente similar ao sistema operacional Windows, voltado a negócios e clientes. Dados e aplicativos dos usuários são armazenados em servidores controlados pela Microsoft e ficam acessíveis via Windows Azure a partir de qualquer lugar no mundo. 4.7 GOOGLE O Google oferece gratuitamente uma plataforma para desenvolvimento de aplicativos nas linguagens de programação Python e Java, juntamente com APIs de desenvolvimento. Trata-se do Google App Engine, classificado no tipo Plataforma como Serviço (PaaS), fazendo parte do nível de ambiente de software de acordo com a taxonomia definida por Youseff (2008), no qual os provedores de serviços oferecem um conjunto de APIs para desenvolvedores, como é o caso do Google. Contudo, há a necessidade de utilizar o BigTable, o banco de dados do Google e existe uma limitação natural à linguagem de programação e aos recursos oferecidos por ela (WAYNER, 2008).