Pontifícia Universidade católica do rio de janeiro
iPuc
Ruhan dos Reis Monteiro
Orientadora: Karin Koogan Breitman
Centro Técnico Científico - CTC
Departamento de Informática
Rio de Janeiro, Julho de 2012
1
1. Introdução
A computação em nuvem é uma das plataformas que mais vêm se destacando
atualmente. Seu conceito remete-se ao consumo de recursos computacionais tais como,
processamento e armazenamento de dados via internet.
Esse modelo nos traz de volta ao inicio da história da computação, onde tínhamos os
chamados “terminais burros”. Estes eram simplesmente um conjunto de monitores e teclados
ligados a um Servidor, responsável por todo o processamento e exibição dos resultados.
Com o avanço da tecnologia, estes terminais ganharam a sua própria capacidade de
processamento, deixando, parcialmente, de lado a necessidade de um Mainframe de grande
porte.
Uma das principais empresas no setor de vendas pela internet, a Amazon, fui uma das
principais difusoras do modelo de computação em nuvem que vemos atualmente. Muitos já
perceberam que o volume de vendas aumenta bastante no período de festas como Natal e
Ano Novo. A Amazon1 também percebeu isto e providenciou um grande número de servidores
para balancear o número de acessos simultâneos à seu site durante esses períodos, que
obviamente não duram o ano inteiro. Mas o que fazer com esses servidores durante a maior
parte do ano? Deixá-los parados? A resposta é não. Com um grande número de máquinas em
stand-by, veio a ideia de alugá-las e o cliente pagar apenas pelo que usou.
O fato de pagar pelo que usa chamou muito à atenção. Isso possibilitou, a muitos, corte
nos custos, principalmente os que necessitam de um grande volume de processamento por um
curto período de tempo.
O modelo da Amazon é apenas um dos muitos que temos. Google, IBM, Microsoft e
Oracle também têm seus próprios serviços de nuvem. Podemos citar o Gmail2, MSN3, Google
Docs4, SkyDrive5, como algumas das muitas aplicações hospedadas na web.
Uma das muitas outras aplicações da computação em nuvem está na compatibilidade
com os smartphones, um mercado que está crescendo de forma estrondosa. O smartphone
não possui o mesmo poder de processamento de um computador, por exemplo, o que torna
a execução de algumas atividades, como processamento de vídeo ou músicas, totalmente
inviáveis. A nuvem entra como um serviço, onde mandamos a requisição e esta nos devolve
1
www.amazon.com
www.gmail.com
3 www.msn.com
4 Docs.google.com
5 www.skydrive.com
2
2
um vídeo, música ou qualquer outro tipo de arquivo decodificado para o aparelho. Vale
salientar que isto não vale somente para smartphones, mas também para computadores que
não possuem o nível suficiente de processamento dado certo tipo de problema.
O armazenamento de arquivos também é outro dentre os principais produtos
que a nuvem nos proporciona. Praticamente todos os serviços de nuvem oferecem o
armazenamento. A vantagem disto é que podemos ter acesso aos nossos arquivos em
qualquer computador com acesso à rede, como, por exemplo, o Google Docs faz com os
documentos.
Muitas pessoas atualmente querem compartilhar estes arquivos armazenados com seus
amigos, seja numa rede social ou outro tipo de serviço. O compartilhamento pode ser aplicado
às mais diversas formas, como o material didático de uma aula. A importância da nuvem é que
os arquivos sempre estarão disponíveis, a qualquer momento, devido à disponibilidade 24x7 do
serviço.
2. Motivação
Embora possa ser tentador pensar (e promover) que a computação em nuvem irá
eliminar de uma vez o armazenamento em centros de dados tal como o conhecemos hoje,
a realidade não é bem assim. Não há nenhuma mágica na nuvem, e o conceito de uma
arquitetura consistente geograficamente separada do centro de dados principal, não se
adaptam a todos os casos. Por isso, clientes e fornecedores devem analisar cuidadosamente o
seu caso específico e se o volume de dados em causa pode ser adequadamente provisionado
através de uma arquitetura na nuvem. Abaixo segue uma lista nas principais situações de uso
do armazenamento na nuvem:
1- Aplicação “tudo na nuvem” com o seu próprio armazenamento
Este tipo de modelo permite que os recursos de servidor e armazenamento continuem
implementados, mas já não se encontram na empresa. Com esta mudança, a integridade
dos dados, a sua resistência a ataques exteriores e o backup da aplicação passam a ser de
responsabilidade do fornecedor (SaaS6), que à partida tem mais recursos e mais experiência
que os seus clientes.
6
http://pt.wikipedia.org/wiki/Software_como_servi%C3%A7o
3
2- Backup na nuvem
As opções disponíveis no mercado diferem do tradicional serviço de cópia de segurança, na
medida em que normalmente consistem num sistema de rede globalmente disperso e utilizado
por múltiplos clientes que aloja todos os dados numa infraestrutura segura e de baixo custo.
3- Armazenamento de arquivos na nuvem
Muitas empresas com escritórios espalhados por múltiplas áreas geográficas já
recorrem às WANs7 para obter serviços de arquivos centralizados. A migração deste conteúdo
para uma solução na nuvem não é algo radical. É especialmente uma boa opção para os dados
menos críticos e de pouca frequência no acesso, tais como arquivos e informações de projetos
antigos.
Depois de analisados os casos, precisam ser selecionados fornecedores certos,
ou seja, os que contem uma infraestrutura e aplicações de gestão de armazenamento
mais adequadas. Se for bem feito, o armazenamento na nuvem tem o enorme potencial
de “libertar” os profissionais de TI das tarefas complexas de gestão do armazenamento da
empresa. Há apenas que se certificar de que os dados migrados são adequados e fazê-lo
com cuidado, avaliando os riscos e os benefícios de fazê-lo. Para obter todos os benefícios
do armazenamento na nuvem sem pôr em perigo a eficácia operacional e aumentar o nível de
risco, deve:
a) Ser específico quanto ao tipo de dados a armazenar e utilização dos mesmos
Existem limitações quanto aos tipos de dados funcionam melhor num ambiente na nuvem.
Pode ter a certeza que as coisas não irão correr bem se os dados a armazenar não se
enquadrarem em um dos cenários descritos acima. Talvez, num futuro próximo, sejam feitos
melhorias no nível da computação, do acesso remoto à cache ou da otimização WAN para
permitir que as aplicações de base de dados recorram ao armazenamento em localizações
remotas.
b) Risco dos dados a armazenar fora da empresa
As soluções de armazenamento na nuvem ainda são recentes no mercado, faz sentido
começar a migrar apenas os dados menos críticos. As empresas com vários tipos de dados
7
http://pt.wikipedia.org/wiki/Software_como_servi%C3%A7o
4
devem criar uma classificação de risco e uma política que defina quais os dados podem ser
guardados na nuvem. Deve-se exigir um elevado nível de transparência dos fornecedores, pois
só assim é possível construir uma relação de confiança benéfica para ambas as partes.
c) Analisar bem os contratos
É preciso certificar-se de que o fornecedor detalha os SLAs (acordos de nível de serviço)
no contrato, descrevendo exatamente o que vai ser fornecido, os níveis de desempenho
e disponibilidade garantidos, as medidas em vigor para proteger o acesso aos dados e as
penalizações por violação desses SLAs. Uma boa capacidade de armazenamento e boas
capacidades de provisionamento dos dados não são suficientes.
3. Arquitetura geral da Computação em nuvem
O modelo de Computação em Nuvem encontrado com maior frequência é a arquitetura em três
camadas[Armbrust 2009].:
●
IaaS
○ Infraestrutura como um serviço. Caracteriza-se pelo uso de servidores para
desenvolvimento proprietário.
○
●
Exemplos: Force8, Google App Engine9.
PaaS
○ Plataforma como um serviço. Composta por um hardware virtual disponibilizado
como um serviço. Oferecem um serviço específico como banco de dados ou um
web service.
○
●
Exemplos: Windows Azure, AWS10, EC211.
SaaS
○ Software como um serviço. Composta por aplicativos que são executados em
um ambiente de nuvem.
○
Exemplos: Google Docs, Facebook, Dropbox, Skydrive.
8
www.force.com
https://developers.google.com/appengine/?hl=pt-BR
10 Aws.amazon.com
11 http://aws.amazon.com/pt/ec2/
9
5
3.1 Tipos: nuvens públicas, privadas e híbridas
Nuvens públicas são serviços em nuvem fornecidos por terceiros (fornecedor). Elas
existem além do firewall da empresa e são completamente hospedadas e gerenciadas pelo
provedor da nuvem.
As nuvens públicas tentam a fornecer aos consumidores elementos de TI sem
problemas. Seja software, infraestrutura de aplicativo ou infraestrutura física, o provedor
de nuvem assume as responsabilidades de instalação, gerenciamento fornecimento
e manutenção. Os clientes são cobrados somente pelos recursos usados, portanto, a
subutilização é eliminada.
No entanto, isso tem um custo. As opções de configuração são geralmente um
subconjunto menor do que seriam se o recurso fosse controlado diretamente pelo consumidor.
Outra coisa que deve ser lembrada é que como os consumidores têm pouco controle sobre a
infraestrutura, os processos que requerem forte segurança e conformidade reguladora nem
sempre são uma boa adequação para nuvens públicas.
Nuvens privadas são serviços em nuvem fornecidos dentro da empresa. Essas nuvens
existem dentro do firewall da empresa e são gerenciadas pela empresa. Elas oferecem muitos
dos mesmo benefícios que as nuvens públicas com uma principal diferença: a empresa é
responsável por configurar e manter a nuvem.
A dificuldade e o custo de estabelecer uma nuvem interna podem, às vezes, ser
proibitivos e o custo da operação contínua da nuvem pode exceder o custo de usar uma nuvem
pública.
As nuvens privadas são ideais quando o tipo de trabalho que está sendo realizado não
é prático para as nuvens públicas, devido a preocupações com segurança e regulação.
As nuvens híbridas são uma combinação de nuvens públicas e privadas. Essas nuvens
seriam geralmente criadas pela empresa e as responsabilidades de gerenciamento seriam
divididas entre a empresa e o provedor de nuvem pública. A nuvem híbrida usa serviços que
estão no espaço público e no privado.
As nuvens híbridas são a resposta quando uma empresa precisa empregar os
serviços de nuvens públicas e privadas. Nesse sentido, uma empresa pode determinar os
objetivos e necessidades de serviços e obter os mesmos da nuvem pública ou privada,
conforme apropriado. Uma nuvem híbrida bem construída poderia atender processos seguros
críticos para a missão, como o recebimento de pagamentos de clientes, assim como aqueles
6
secundários para os negócios, como processamento de folha de pagamento de funcionários.
A principal desvantagem dessa nuvem é a dificuldade de criar e controlar de forma
efetiva tal solução. Serviços de diferentes origens devem ser obtidos e fornecidos como se
tivessem originado de um único local e interações entre componentes privados e públicos
podem tornar a implementação ainda mais complicada. Como esse é um conceito arquitetônico
relativamente novo em computação em nuvem, boas práticas e ferramentas sobre esse padrão
continuam a surgir e pode haver uma relutância geral para adotar esse modelo até que seja
mais conhecido.
A figura abaixo mostra a relação entre os três tipos de nuvem:
Figura 1 – Tipos de Nuvem
4. Armazenamento na nuvem
As arquiteturas de armazenamento na nuvem estão divididas em, basicamente, três
camadas: Front End, Lógica e Back-End Storage. O Front End corresponde às formas de
acesso ao arquivos propriamente ditos. Após o Front End está a lógica do armazenamento,
responsável pela implementação de diversos recursos tais como replicação e redução de
dados, dentre outros. Já o Back End implementa o armazenamento físico dos dados. A figura a
seguir nos mostra como é a divisão em camadas:
7
Figura 2 – Camadas do Armazenamento [IBM 2011]
4.1 Métodos de Acesso
Grande parte dos provedores de armazenamento implementam diversas formas
de acesso aos seus serviços, mas as APIs12 são bem comuns. Muitas das APIs são
implementadas nos principios REST13, usando HTTP como transporte. As APIs REST são
stateless, por isso são simples e eficientes de fornecer.
Alguns metódos de acesso comuns são usados com o armazenamento na nuvem,
protocolos com base em arquivo, como NFS/Common Internet File System (CIFS)
14
ou FTP15
são usados, uma vez que são protocolos com base em bloco, como o iSCSI16. A tabela abaixo
resume os principais protocolos de acesso:
12
http://pt.wikipedia.org/wiki/API
http://pt.wikipedia.org/wiki/Rest
14 http://pt.wikipedia.org/wiki/CIFS
15 http://pt.wikipedia.org/wiki/FTP
16 http://pt.wikipedia.org/wiki/ISCSI
13
8
REST/SOAP17
Amazon S3
X
Azure
X
Mezeo
X
NFS/CIFS/FTP
Zetta
X
IBM
X
ISCSI
X
CleverSafe
X
CloudSafe
X
Nirvanix
webDAV18
X
X
4.2 Desempenho
Desde sua concepção, a Computação em Nuvem tem o desempenho como um de seus
maiores desafios. Um dos protocolos mais usados para o controle do fluxo de dados, o TCP19,
é ideal para um pequena quantidade de dados, mas para grandes pode ser um problema.
A Amazon, resolveu adotar um novo protocolo, chamado FASP(Fast and Secure
Protocol)20. A chave é o uso do UDP21, que é o protocolo de transporte parceiro para TCP. O
UDP permite que o host gerencie a congestão, empurrando esse aspecto para o protocolo de
camada de aplicativo do FASP.
4.3 Escalabilidade
Escalabilidade é definida como a habilidade de aumentar os recursos computacionais
dado um requisito. A capacidade de escalar as necessidades de armazenamento (tanto para
cima quanto para baixo) significa melhor custo para o usuário e maior complexidade para o
provedor de armazenamento em nuvem.
17
http://pt.wikipedia.org/wiki/SOAP
http://pt.wikipedia.org/wiki/WebDAV
19 http://pt.wikipedia.org/wiki/Tcp
20 http://en.wikipedia.org/wiki/Fast_And_Secure_Protocol
21 http://pt.wikipedia.org/wiki/Protocolo_UDP
18
9
A escalabilidade deve ser fornecida para o armazenamento e também para a
distribuição geográfica dos dados, permitindo que estes estejam próximos do usário, assim
diminuindo o tempo de latência. A replicação e distribuição são bastante usadas.
4.4 Disponibilidade
Os usuários devem ser capazes de poder armazenar seus dados e obtê-los novamente
da mesma forma que foram armazenados, a qualquer momento. Deve haver redundância na
infra-estrutura do provedor, a fim de evitar perda de dados.
4.5 Criptografia
Sempre que solicitado pelo usuário, os dados devem ser criptografados. As políticas de
privacidade devem ser bem definidas e claras, de modo que não haja nenhuma interpretação
errada. Somente os usuários podem ter acesso aos seus respectivos dados.
4.6 Localização
A localização dos dados deve ser fornecida ao usuário. O usuário também deve poder
selecionar o local, de acordo com sua preferência, sempre que possível. Pontos de entrada
(URLs) devem ser de posse do usuário, de modo a facilitar a transição e eventual troca de
provedores.
4.7 Cobrança
Deve estar sempre disponível ao usuário uma fatura detalhada a fim de justificar o que
foi cobrado. Também deve ser mantido um histórico para consulta. A figura a seguir mostra
uma fatura do Amazon AWS:
10
Figura 3 – Detalhamento de fatura 05/2012
Podemos observar que todas as ações cobradas são detalhadas e também é possível fazer o
download do relatório de uso. Isto é importante para evitar cobranças indevidas no uso.
4.8 Acordo de Nível de Serviço (SLA)
Os contratos de prestação de serviços devem ser claros, concisos e possuir suporte
baseado em penalidades, caso não forem cumpridos. Podemos ver o acordo do Amazon S3 no
seguinte site: https://aws.amazon.com/pt/s3-sla/
5. Principais Serviços e Plataformas
A seguir apresentamos algumas das principais plataformas de Armazenamento na Nuvem
dando mais ênfase ao Amazon Web Services.
5.1 Amazon S322
22
Aws.amazon.com/s3
11
O Amazon S3 é o serviço de armazenamento fornecido pela Amazon Web Services. Dentre
suas principais funcionalidades estão:
● Escrever, ler e apagar objetos contento um byte até cinco terabytes de dados. O
número de objetos armazenados é ilimitado.
●
Cada objeto é armazenado e lido por uma única chave.
● Os objetos podem ser armazenados em diversas localidades. As regiões de
armazenamento podem ser escolhidas com a finalidade de diminuir custos e otimizar a
latência do serviço. As regiões disponíveis são: e US Standard, EU (Ireland), US West
(Northern California), Asia Pacific (Singapore), Asia Pacific (Tokyo) e GovCloud (US).
● Um objeto armazenado em uma região jamais a deixa, a não ser que façamos a
transferência.
● Mecanismos de autenticação são providos com a finalidade de que os dados estejam
seguros de acesso não autorizado. Os objetos podem ser públicos ou privados.
●
Utiliza interfaces REST e SOAP com base padrão projetadas para trabalhar com
qualquer ferramenta de desenvolvimento de Internet.
● Projetado para ser flexível para que camadas funcionais ou de protocolo possam ser
facilmente adicionadas. O protocolo padrão de download é HTTP. Uma interface de
protocolo BitTorrent23 é fornecida para reduzir custos na distribuição de alta escala.
5.1.1 Segurança
O Amazon S3 oferece quatro mecanismos de controle de acesso diferentes: políticas
Identity and Access Management (IAM), Access Control Lists (ACLs), políticas de bucket e
autenticação de sequência de caracteres de consulta. IAM permite que organizações com
vários funcionários criem e gerenciem vários usuários em uma única conta AWS. As ACLs
são usadas para adicionar ou negar permissões à determinados objetos armazenados. . Com
a Autenticação da sequência de caracteres de consulta, é possível compartilhar objetos do
Amazon S3 por meio de URLs que são válidas por um período de expiração predefinido.
O Amazon S3 também provê uma encriptação dos dados no lado do servidor, ou seja,
os dados são encriptados quando escrito nos discos do data center e quando o usuário os
solicita, eles são desencriptados. Por outro lado, encriptação do lado cliente é totalmente
administrada pelo usuário.
23
http://pt.wikipedia.org/wiki/BitTorrent
12
O servidor encripta cada objeto com uma chave única, que tambpem é encriptada com
uma chave mestra que é regularmente atualizada. É usado o AES-256 (Advanced Encryption
Standard 256-bit) para encriptar os dados.
É possível especificar a encriptação a nível dos objetos. Quando o upload é feito,
podemos escolher se o objeto será encriptado ou não. O Amazon S3 suporta uma política de
buckets que é necessário encriptar todos os objetos armazenados. Por exemplo, a seguinte
política nega o upload de um objeto (s3:PutObject) se o request não conter o cabeçalho x-amzserver-side-encryption para a encriptação no lado do servidor. O pedaço de código abaixo nos
mostra como é formada a política para o somente aceitar objetos encriptados:
{
"Version":"2008-10-17",
"Id":"PutObjPolicy",
"Statement":[{
"Sid":"DenyUnEncryptedObjectUploads",
"Effect":"Deny",
"Principal":{
"AWS":"*"
},
"Action":"s3:PutObject",
"Resource":"arn:aws:s3:::YourBucket/*",
"Condition":{
"StringNotEquals":{
"s3:x-amz-server-side-encryption":"AES256"
}
}
}
]
}
5.1.2 Durabilidade e confiabilidade de dados
13
Os objetos são armazenados redundantemente em vários dispositivos em diversas
instalações em uma região do Amazon S3. Para ajudar a assegurar a durabilidade, as
operações PUT e COPY do Amazon S3 armazenam sincronamente os dados em diversas
instalações antes de exibir SUCCESS. Uma vez armazenados, o Amazon S3 mantém a
durabilidade dos objetos ao detectar e reparar rapidamente qualquer redundância perdida.
O Amazon S3 também verifica regularmente a integridade dos dados armazenados usando
somatórias. Se um corrompimento for detectado, ele será reparado usando dados redundantes.
Além disso, o Amazon S3 calcula somatórias em todo o tráfego da rede para detectar o
corrompimento de pacotes de dados durante a classificação ou a recuperação de dados.
O armazenamento padrão do Amazon S3 é:
●
Respaldado pelo Acordo de Nível de Serviço do Amazon S3.
● Projetado para fornecer 99,999999999% de durabilidade e 99,99% de disponibilidade
dos objetos em um determinado ano.
●
Projetado para sustentar a perda simultânea de dados em duas instalações
5.1.3 Armazenamento de redundância reduzida (RRS)
Este serviço permite que os usuários armazenem seus dados em um nível de
redundância mais baixo que o padrão fornecido pelo Amazon S3, assim reduzindo os custos de
armazenamento. A opção RRS armazena objetos em vários dispositivos em diversas
instalações, fornecendo 400 vezes a durabilidade de uma unidade de disco típica, mas não
replica a mesma quantidade de objetos que o armazenamento padrão do Amazon S3 e,
portanto, é ainda mais econômico. O armazenamento de redundância reduzida é:
●
Respaldado pelo Acordo de Nível de Serviço do Amazon S3.
●
Projetado para fornecer 99,99% de durabilidade e 99,99% de disponibilidade de objetos
em um determinado ano. Esse nível de durabilidade corresponde a uma perda anual
esperada média de 0,01% de objetos.
●
Projetado para sustentar a perda de dados em uma única instalação.
5.1.4 Preços
14
Os serviços são cobrados baseando-se em categorias, são elas: armazenamento, solicitações
e transferência de dados. As figuras a seguir exemplificam os preços praticados:
Figura 4 – Preços 05/2012
15
Figura 5 – Preços 05/2012
6. Requisitos gerais do projeto
Para obter acesso ao sistema, os usuários deverão primeiramente cadastrar-se no
site, para posteriormente ter acesso a todas as suas funcionalidades, as quais serão descritas
adiante. Dado o cadastro, o usuário recebe um e-mail de confirmação, contento todos os dados
que este preencheu.
Os usuários terão a possibilidade de armazenar qualquer tipo de arquivo de seu
computador. Depois de armazenado, os arquivos ficam organizados em pastas, a critério do
usuário. As pastas podem ser ou não compartilhadas com outros usuários. O usuário poderá
fazer o download dos arquivos sempre que desejar.
O compartilhamento é sempre sobre um grupo. Um grupo consiste em vários usuários.
Os grupos não possuem líderes, todos tem o privilégio de convidar outros usuários. Todos
os usuários cadastrados no grupo terão acesso aos arquivos compartilhados, podendo fazer
download e upload de novos arquivos, mas somente o dono de uma pasta pode excluí-la. Não
há limite para o número de pastas e arquivos compartilhados em um grupo, bem como não há
limite de usuários.
16
Ao convidar um novo usuário ao grupo, imediatamente este terá acesso a todas as
pastas e arquivos compartilhados, sem a necessidade de aceitar ou não a entrada no grupo.
Caso o usuário adicionado não esteja cadastrado no sistema, um e-mail automático será
enviado a ele para que faça o cadastro.
Os usuários podem visualizar a qualquer momento todos os eventos que aconteceram
desde que a sua conta foi criada. Os eventos podem ser desde a criação de uma pasta a um
upload de um novo arquivo.
7. Arquitetura do Projeto
Será apresentado nesta seção como o projeto está dividido e também explicaremos
o funcionamento dos frameworks usados. A linguagem de programação utilizada para o
desenvolvimento do projeto foi Java, na versão 6. Foram também utilizados os frameworks
Hibernate e Spring MVC, os quais serão descritos adiante.
O código fonte foi dividido em pacotes, sendo eles: rrbox.json, rrbox.arquivo,
rrbox.grupo,
rrbox.pasta,
rrbox.usuario,
rrbox.dao,
rrbox.evento,
rrbox.conta,
servlets,
spring.controllers, e útil.
7.1 Amazon EC2
A instância, na Amazon, utilizada para o desenvolvimento do projeto será a básica a qual tem o
seguinte hardware e sistema operacional:
● 1.7 GB de memória, uma EC2 unidade de computação (um virtual core
EC2 unidade de computação), 160 GB de armazenamento local,
●
Amazon Linux AMI
●
Acesso remoto via SSH
com
uma
plataforma 32-bit.
Nesta instância encontra-se o SGBD MySQL 5.0 na URL ec2-107-22-31-66.compute1.amazonaws.com/test. A escolha deste conjunto se deu pelo fato de ser o plano mais básico
provido pela Amazon. Como se trata de um projeto acadêmico, este plano é mais do que
suficiente para o desenvolvimento/testes.
7.2 Amazon S3
O Amazon S3 foi usado neste projeto para armazenar os arquivos dos usuários. Ao
cadastrar-se, é criado um buckets para o usuário. Por exemplo: o usuário cadastra o e-mail
[email protected], o bucket será criado com o nome de rrbox-ruhan-puc-com-br. A escolha do
e-mail como nome do bucket se dá pois o bucket tem que ter um nome único.
17
Como o bucket não possui o conceito de pastas faz-se necessário simular uma
hierarquia. No caso do sistema RRBox, o nome do arquivo é composto pelo nome da pasta e o
nome do arquivo. Por exemplo: Pasta1&arquivo1.
Todos os arquivos armazenados no sistema RRBox são encriptados com o algoritmo
AES-256 bit, o qual é bastante utilizado no mercado. Com isso, o usuário tem total privacidade
sobre seus dados.
8. Conclusão
Este trabalho buscou aprofundar os conhecimentos acerca da Computação em
Nuvem e suas tecnologias associadas. O aprendizado obtido com a pesquisa e posterior
implementação foi imensurável, pois na graduação os alunos não tem muito contato com as
que tecnologias foram abordadas neste projeto.
O projeto ainda tem muitos pontos que podem ser melhorados. Pretendo, no futuro,
fazer uma integração com os sistemas Desktop a fim de os usuários poderem acessar os
arquivos armazenados na nuvem mesmo de modo off-line. Também seria interessante portar
o projeto para outros dispositivos móveis, como o Android e o Windows Phone, além de criar
uma SDK que permita fazer o upload dos arquivos. Quanto à precificação, prefiro mantê-lo de
graça, pois se trata de um projeto acadêmico.
Em algum momento no futuro gostaria de me aprofundar nas tecnologias de Banco de
dados usadas na Computação em Nuvem, na disponibilidade dos dados especificamente.
9. Referências
Meyer, L.A et al 2007. An Opportunistic Algorithm for Scheduling Workflows on Grids. High
Performance Computing for Computational Science - VECPAR 2006, p.583-597.
Apache Hadoop .http://hadoop.apache.org
Dean J., and Ghemawat S, S. 2004. MapReduce: Simplified Data Processing on Large
Clusters. Proc. Symp. Operating System Design and Implementation (OSDI), p. 137-150.
18
Altschul, S.F. et al. 1990. Basic local alignment search tool, J. Mol. Biol., vol. 215, no. 3, p. 403–
410.
Forum, M.P. 1994. Mpi: A message-passing interface standard. Technical report, Knoxville, TN,
USA.
Amazon Web Services. Available at: http://aws.amazon.com/
JAVA. http://java.sun.com/
MCL (Markov Clustering algorithm). http://micans.org/mcl/.
Arun Krishnan. 2005. GridBLAST: a Globus-based high-throughput implementation of BLAST in
a Grid computing framework. Concurrency and Computation, v.17, Issue 13, p. 1607-1623.
MC. Schatz. BlastReduce: high performance short read mapping with MapReduce. Available at:
http://www.cbcb.umd.edu/software/blastreduce.
[22] Ogasawara, E. et al. 2009. Exploring many task computing in scientific workflows. In:
MTAGS 09, Portland, Oregon, p. 1-10.
[23] Lu, W., Jackson, J., and Barga, R. 2010. AzureBlast: A Case Study of Developing Science
Applications on the Cloud. Proc of the 1st Workshop on Scientific Cloud Computing.
[24] Windows Azure. http://www.microsoft.com/windowsazure/.
JADE. http://jade.tilab.com/
Jonquet, C., Dugenie, P. and Cerri, S.A. 2008. Agent-Grid Integration Language. Multiagent
Grid Syst. 4, 2, p. 167-211.
[29] De-wei, P., Yan-xiang, H. 2004. A Mobile Agent Based Middleware For Computational Grid.
Proc of the IADIS International Conference on Applied Computing, Lisbon, Portugal, p. 273-278.
19
Kurkovsky, S., Bhagyavati. 2003. Agent-Based Distributed IDA* Search Algorithm for a Grid of
Mobile Devices. In Proceedings of The 7th World Multi-Conference on Systemics, Cybernetics
and Informatics (SCI-2003), Orlando, FL, July 2003.
20
Download

iPuc Ruhan dos Reis Monteiro