Escolar Documentos
Profissional Documentos
Cultura Documentos
Dissertação de Mestrado
RECIFE/2014
Thiago Jamir e Silva
RECIFE
2014
Catalogação na fonte
Bibliotecária Monick Raquel Silvestre da S. Portes, CRB4-1217
Antes de mais nada, gostaria de agradecer à toda minha família por todo o apoio.
Principalmente minha esposa, Eduarda, por ter acreditado na minha capacidade, quando
eu mesmo duvidei. Meus pais, e meu irmão pelo apoio constante, e pelos exemplos que me
deixaram para seguir.
Aos meus amigos cujo apoio foi fundamental para o término deste trabalho. Fica aqui o
meu obrigado a todos.
Aos professores Professores Silvio Meira (orientador), Rodrigo Assad (co orientador) e
Vinícius Garcia, pela oportunidade dada, pelas trocas de idéia, pela cobrança e pelos
caminhos que foram indicados.
Ao professor Cícero Garrozi, por se disponibilizar a fazer parte da banca deste trabalho.
Ao Centro de Informática da UFPE e todos que o fazem, pelo ensino e suporte dado para
que este possa ter concluído.
Aos colegas do ASSERT Lab por todos os feedbacks dados durante a evolução desse
projeto. Tenho certeza que essas discussões foram proveitosas para todos nós.
A todos os colegas da Ustore, pela paciência e colaboração de todos , que para mim, é
uma segunda casa.
Finalmente, gostaria de agradecer a todos que contribuíram diretamente e indiretamente
à realização de mais etapa na minha vida.
Obrigado a todos!
Resumo
Nos últimos anos, o volume de dados gerados por indivíduos e organizações tem crescido
exponencialmente. Estima-se que globalmente existia 2.7 zetabytes em 2012 e esse número
tem dobrado a cada dois anos. Além disso, com a popularização de dispositivos móveis
conectados, cresceu-se a necessidade de que usuários tenham acesso a arquivos de forma
ubíqua. As soluções tradicionais de backup e armazenamento de arquivos online já não
conseguem suprir as necessidades atuais dos usuários.
A utilização de Cloud Storage para backup e sincronização de arquivos vem a ser uma
ferramenta de grande valia para esse tipo de problema. Porém, implementar um sistema
deste tipo vem a ser um desafio tecnológico relevante.
Nesse sentido, este trabalho se propõe a resolver o problema de armazenamento de arquivos,
propondo uma arquitetura de Cloud Storage para armazenamento de arquivos.
Ao longo trabalho, é feita uma análise dos principais direcionadores de negócio para Cloud
Storage e armazenamento de arquivos, levantando insumos para se projetar uma arquitetura.
Tal arquitetura é descrita em nível de detalhe para que se possa ser implementada.
Finalmente, o trabalho é validado através de uma avaliação de arquitetura cuja metodologia
foi adaptada de acordo com as características da equipe de avaliação.
QA Quality Attribute
Sumário
1 INTRODUÇÃO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.1 Definição do problema . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.2 Metodologia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.3 Fora do escopo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.4 Estrutura da dissertação . . . . . . . . . . . . . . . . . . . . . . . . . . 14
4 DEFINIÇÃO DA ARQUITETURA . . . . . . . . . . . . . . . . . . . 34
4.1 Decisões arquiteturais . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
4.1.1 Orientação a Serviços através de Representational state transfer (REST) . . 34
4.1.2 Persistência . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
4.1.3 Utilização de DHT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
4.1.4 Controle de Acesso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
4.2 Orientação a Serviços . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
4.2.1 Camadas de Serviços . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
4.2.2 Descrição dos serviços . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
4.3 Visão Geral da arquitetura . . . . . . . . . . . . . . . . . . . . . . . . 43
4.4 Camada de Serviços Básicos . . . . . . . . . . . . . . . . . . . . . . . 44
4.5 Camada de Serviços Importantes . . . . . . . . . . . . . . . . . . . . 48
4.6 Modelo de Dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
4.7 Segurança . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
4.8 Conclusão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
5 AVALIACAO DA ARQUITETURA . . . . . . . . . . . . . . . . . . . 55
5.1 Processo de avaliação de arquitetura de software . . . . . . . . . . . 55
5.2 Equipe de Avaliação da arquitetura . . . . . . . . . . . . . . . . . . . 56
5.3 Ameaças á validação . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
5.4 Metodologia de avaliação . . . . . . . . . . . . . . . . . . . . . . . . . 57
5.5 Execução do processo de avaliação . . . . . . . . . . . . . . . . . . . 57
5.6 Cenários propostos e resultados da avaliação . . . . . . . . . . . . . . 58
5.7 Consolidação dos Resultados . . . . . . . . . . . . . . . . . . . . . . . 60
5.8 Conclusão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
6 CONCLUSÃO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
7 CONCLUSÃO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
7.1 Principais Conclusões . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
7.2 Contribuições . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
7.3 Trabalhos Futuros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
REFERÊNCIAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
APÊNDICES 69
1 Introdução
1.2 Metodologia
Para desenvolver este trabalho, a seguinte metodologia foi utilizada:
• Com as técnicas encontradas na revisão, foi projetada uma arquitetura para atender
os requisitos e atributos de qualidade.
• Serviços e features na arquitetura que não estão diretamente ligadas com o armaze-
namento, tais como indexação e busca, APIs externas, entre outros.
• Implementação da arquitetura.
Esta seção visa apresentar uma visão geral de cloud storage, com o objetivo de
definir o conceito de cloud computing, cloud storage e backup online, bem como fazer um
levantamento histórico de sua origem até o estado atual da arte. Além disso, tem o objetivo
de discutir e analisar alguns trabalhos que se relacionam com este.
Em 2002, a Amazon lança a plataforma Amazon Web Service (AMAZON, 2014b), que
disponibiliza serviços como computação e armazenamento em larga escala como um serviço.
Posteriormente, em 2006, seria lançado o Amazon Elastic Cloud Computing (AMAZON,
2014a), um marco para cloud computing, sendo o primeiro serviço no modelo Infrastructure
as a Service (IaaS).
Outro grande aspecto relevante do cloud computing foi em 2009, quando a chamada Web
2.0 apresentou uma grande evolução e a Google, assim como outras organizações, começou
a oferecer aplicações baseadas em browser através de serviços como o Google Apps.
Posteriormente, ainda surgiram novas ferramentas baseadas em cloud computing das quais
podemos destacar Heroku1 , Azure2 , Digital Ocean3 , Cloud Foundry4 , entre outros.
O termo computação pode ter diversos significados, desde utilização de hardware a execução
de um aplicativo específico. Por esse motivo, foram criados os distintos modelos de serviços,
que agrupam o que pode ser entregue como serviço. O modelo SPI, que significa Software,
Platform, Infrastructure, é utilizado para classificar os sistemas de cloud computing de
acordo com o tipo de serviço, como se segue:
• Nuvem híbrida: A infraestrutura é composta por duas ou mais nuvens, que conti-
nuam únicas mas são interligadas de forma que se permita a portabilidade de dados
e aplicações.
2014). Serviço que passaria a vender backup e cloud storage como uma mercadoria, num
modelo utilizado até os dias atuais.
• Backup - Em qualquer organização dados críticos têm que estar seguros, disponíveis
e recuperáveis para uma versão prévia. Um sistema de cloud storage pode substituir
as soluções tradicionais de backup, como por exemplo, fitas magnéticas, sendo uma
forma mais segura, barata e prática de armazenamento de backups.
• Arquivamento - As organizações estão cada vez sendo mais forçadas a reter volumes
maiores de dados por longos períodos. Assim como no backup, os sistemas de Cloud
Storage podem substituir as formas tradicionais de arquivamento reduzindo custos e
aumentando a agilidade da recuperação de informação.
2.3.1 Oceanstore
Oceanstore (KUBIATOWICZ, 2000) é um projeto concebido na Universidade de
Berkley, que visa fornecer uma plataforma aberta e global para armazenamento de dados.
Em sua concepção, foi idealizada para objetivos como servir de plataforma para aplicações
groupware (e-mail, calendário, lista de contatos), repositório de dados de grande volume
para grupos científicos ou como servidor para streaming.
A plataforma Oceanstore tem duas premissas: ser construída a partir de um grande
grupo de servidores não confiáveis, pois equipamentos quebram sem advertência e não
se pode confiar a durabilidade de um dado aos mesmos; a segunda premissa é que os
dados são nômades, pois em um sistema de grandes proporções a localidade dos dados é
muito importante. O Oceanstore faz cache dos dados em várias localidades para manter a
escalabilidade do sistema, abrindo mão da consistência dos dados.
Cada objeto no OceanStore é armazenado com um nome único gerado pseudo-aleatoriamente,
chamado GUID (Global Unique Identifier). Alguns GUID funcionam como um diretório,
contendo uma lista de GUID’s, dando a possibilidade da criação de uma estrutura seme-
lhante a uma árvore.
O controle de acesso é feito em basicamente duas operações: restrição de leitura e restrição
de escrita.
Cada objeto que não é público, é encriptado com uma chave única. Cada usuário que tem
permissão de leitura, recebe essa chave para desencriptar. Para revogar o acesso em dado
objeto, as replicas são reencriptados com uma nova chave.
Para prevenir escritas não autorizadas, cada escrita é assinada digitalmente e cada objeto
tem uma lista de controle de acesso indicando quem pode alterar aquele objeto. A restrição
de escrita é feita pelo server que verifica se o usuário que tenta escrever naquele objeto
tem acesso ao mesmo.
Cada objeto armazenado no OceanStore pode ter uma réplica em qualquer servidor. Para
localizar esses objetos, conta com dois algoritmos. O primeiro, é um algoritmo probabilístico
Seção 2. Contextualização e Trabalhos Relacionados 23
e rápido, que toma a premissa que existe uma grande probabilidade de um dado acessado
frequentemente residir em um servidor próximo. O segundo é um algoritmo hierárquico
mais lento, porém mais confiável.
arquivos, os chunks que compõem cada arquivo e a localização de cada chunk. O servidor
mestre armazena todos os metadados em memória.
Cada arquivo é composto por chunks de 64MB, e eles são armazenados no sistema de
arquivo local dos chunk servers.
Os chunks são replicados de acordo com a necessidade. Existe um controle para que chunks
novos não criem muitas réplicas, para evitar sobrecarga na escrita de novos arquivos. O
controle da replicação do GFS é feito através do mestre.
2.3.4 Ustore
Ustore (DURãO et al., 2013) é uma plataforma de Cloud Storage em nuvem privada
desenvolvido para armazenar arquivos, fazendo backup e sincronização deles.
Uma diferença marcante na plataforma Ustore é que ele pode utilizar discos ociosos das
máquinas de uma corporação, formando uma nuvem privada com as estações de trabalho.
Para que as estações se comuniquem, é utilizado uma rede overlay peer to peer (P2P), que
implementa o protocolo conhecido como JXTA6 .
A arquitetura do Ustore leva em consideração quatro atributos de qualidade como pilares
de suas decisões arquiteturais, que são: escalabilidade, otimização das interações, disponi-
bilidade e segurança.
Na rede overlay existe um tipo de peer especial que tem a responsabilidade de configurar
a rede e manter rotas entre estações diferentes. Esse peer é chamado de Super Peer, e
precisa ser mantido em um servidor conhecido por todos os peers, como uma espécie de
servidor central. Porém, sua úncia função é manter a conectividade entre os peers.
Além da existência do superpeer, existem os chamados peers servidores, que implementam
uma gama de serviços e são localizados pelos peers clientes, através do anúncio de seus
serviços na rede JXTA.
Finalmente os simple peers, ou apenas clientes, que são peers que são utilizados para
enviar ou recuperar arquivos da nuvem, assim como utilizar o espaço ocioso na máquina
do usuário para salvar arquivos de outros usuários.
A replicação no Ustore se dá através de um algoritmo estatístico, em que se registra o
histórico de conexão de cada cliente, traçando assim um perfil do mesmo. As replicados dos
backups são enviados a outros clientes que têm perfil semelhante ao do usuário, otimizando
assim a disponibilidade do arquivo, mantendo um número mínimo de réplicas.
6 https://jxta.kenai.com/
25
Nesta seção será feita uma análise nos direcionadores de negócio de Cloud Storage,
e a partir daí serão desenvolvidos os business drivers. A partir dos business drivers, é
possível obter insumos para pautar as decisões arquiteturais, tais como os Requisitos do
sistema, assim como os principais atributos de qualidade.
Esses insumos também serão úteis para, durante a avaliação da arquitetura, verificar a
conformidade dessa com as necessidades de negócio.
• Vínculo com o serviço - Uma vez que um usuário adota um serviço de armazena-
mento em nuvem, mudar para outro provedor de serviço, ou voltar para abordagens
tradicionais de armazenamento pode tornar-se inviável devido ao grande número de
dados armazenados.
• Coud Provider - Uma pessoa, grupo ou entidade responsável por manter o serviço
disponível para as partes interessadas. No caso do sistema de Cloud Storage, que
hospedaria e manteria o sistema de cloud storage. Além do serviço em si, também
precisa de um módulo em que possa administrar, mensurar e manter o serviço.
• Cloud Auditor - Uma organização que pode conduzir uma auditoria independente
dos serviços de cloud, das operações, performance e segurança da implementação da
cloud. Devem possuir ferramentas que se possa mensurar um grupo de métricas para
se realizar essas auditorias.
• Cloud Broker - Uma entidade que gerencia o uso, performance e entrega dos
serviços de cloud, e negocia a relação entre Cloud Provider e Cloud Consumer. Têm
a necessidade de um módulo que possa gerenciar a nuvem, mensurar o uso e taxar
os usuários.
Para o escopo desse trabalho, serão focadas as necessidades relacionadas aos grupos de
Cloud Consumers, que serão chamados de usuários finais, ou apenas usuários, e os Cloud
Providers, que serão denominados de provedores de serviços.
Seção 3. Cloud Storage Business Drivers 28
3.2.1 Metodologia
Para definir os atributos de qualidade, a seguinte metodologia foi utilizada: Por
meio de revisão bibliográfica foram levantadas as principais vantagens da utilização de
cloud storage as desvantagens, preocupações e ameaças. Além disso, também foram listados
segundo a norma ISO/IEC 25010, os principais atributos de qualidade de um produto de
Seção 3. Cloud Storage Business Drivers 30
software.
Em seguida, foi feita uma matriz, cujas colunas representam as vantagens e desvantagens,
enquanto as linhas representam os atributos de qualidade. Essa matriz foi preenchida com
o valor um, caso a presença do atributo de qualidade contribua para uma das vantagens ou
amenize uma desvantagem, ou zero caso contrário. Dessa forma, foi possível selecionar os
atributos de qualidade de forma que se possa maximizar os benefícios e atenuar as perdas,
selecionando os atributos de qualidade com maior número de 1s seriam considerados os
prioritários.
3.2.2 Resultados
Os atributos de qualidade foram enumerados de acordo com as Tabelas 3 e 4
disponíveis no Apêndice A. Como se pode observar, os principais atributos de qualidade
eleitos estão de acordo com a Tabela 1.
Tabela 1 – Atributos de Qualidade escolhidos
ID Nome
Q1 Disponibilidade
Q2 Utilização de recursos
Q3 Confidencialidade
Q4 Não-repúdio
Q5 Autenticidade
Q6 Portabilidade
Q7 Adaptabilidade
3.3 Requisitos
Em um sistema de software, além dos atributos de qualidade, os requisitos também
guiam as decisões arquiteturais. De acordo com Sommerville (2007), o verdadeiro teste de
uma arquitetura recai sobre quão bem ela atende os requisitos funcionais e não-funcionais
depois de implantada.
Para a definição de requisitos funcionais e não-funcionais neste trabalho, foram observadas
as principais ferramentas de backup em nuvem, tais como o Dropbox (DROPBOX, 2014),
SugarSync (SUGARSYNC, 2014), Google Drive (GOOGLE, 2014), Onedrive (MICRO-
SOFT, 2014), entre outros. Além disso, tais requisitos foram revistos por analistas com
Seção 3. Cloud Storage Business Drivers 31
experiência na indústria nesse segmento. A partir daí, foi possível listar os seguintes
requisitos funcionais e não-funcionais:
• R3 - Exclusão de arquivos
O usuário pode excluir arquivos que tenham sido previamente salvos na nuvem. Não
se pode fazer download de arquivos excluídos. Uma vez que o arquivo tenha sido
deletado, o usuário pode recuperá-lo dentro de um período definido pelo provedor
do serviço.
• R4 - Compartilhamento de arquivos
O usuário pode compartilhar qualquer arquivo ou diretório dentro de seu disco
virtual. Este processo em uma pasta será recursivo. Ou seja, uma vez que uma pasta
tenha sido compartilhada, qualquer arquivo ou subpasta também o será. A qualquer
momento o proprietário do arquivo poderá revogar o acesso àquele arquivo ou pasta.
• R5 - Publicação de arquivos
Assim como um usuário pode compartilhar arquivos, ele também pode publicá-los,
garantindo acesso aos arquivos compartilhados para todos os usuários da nuvem.
Assim como no compartilhamento, a qualquer momento o proprietário pode revogar
acesso aos arquivos.
• R6 - Pesquisa de arquivos
O usuário pode pesquisar arquivos dentro de seu disco, seja por nome de arquivos,
seja pelo conteúdo dos arquivos.
• R7 - Cadastro de usuários
O provedor de serviços terá acesso a um cadastro de usuários, que permitirá incluir,
modificar ou remover usuários. Também será possível habilitar uma funcionalidade
para que o próprio usuário efetue seu cadastro.
• R8 - Tarifação de usuários
O provedor de serviços terá ferramentas que possa mensurar a utilização da nuvem,
Seção 3. Cloud Storage Business Drivers 32
para que possa taxar o usuário de acordo com os termos de serviços estabelecidos
entre as partes.
• R11 - Disponibilidade
O sistema deve manter-se disponível por um período igual ou superior àquele firmado
no SLA entre usuário e provedor. É importante observar que alguns contratos
estipulam um downtime mínimo para que o serviço possa ser considerado indisponível.
• R15 - Durabilidade
Uma vez armazenados, os dados contidos no sistema estarão em definitivo, não sendo
excluídos pelo próprio sistema ou fatores externos, salvo se excluído pelo proprietário
do arquivo.
• R16 - Autenticação
Para garantir a segurança do sistema, para toda ação executada pelo sistema, o autor
daquela ação deverá estar devidamente identificado através de credenciais seguras.
Seção 3. Cloud Storage Business Drivers 33
• R17 - Autorização
Em adição à Autenticação, para cada ação realizada pelo usuário, deverá se verificar
se ele tem a permissão para executá-la, impedindo assim, ao usuário executar ações
que o mesmo não tem direitos.
• R18 - Auditoria
Cada ação de um usuário, além do mesmo estar devidamente identificado e autorizado,
o sistema também manterá um registro de todas as ações críticas executadas pelo
mesmo. Os requisitos Autenticação, Autorização e Auditoria completam a segurança
do sistema.
3.4 Conclusão
A partir de uma análise do negócio de cloud storage e backup online, foi possível
estabelecer diretrizes para o desenvolvimento de uma arquitetura de cloud storage para
backup e armazenamento de arquivos.
A partir dos requisitos e atributos de qualidade, é possível tomar decisões arquiteturais de
forma que os satisfazem, priorizando os principais atributos de qualidade.
Além disso, deveremos utilizar os atributos de qualidade na avaliação da arquitetura
proposta, validando assim este trabalho
34
4 Definição da Arquitetura
• Reuso, serviços podem ser reutilizados para funções comuns dentro do sistema de
cloud storage. Além disso, serviços existentes podem ser reutilizados em desenvolvi-
mento de novos sistemas de software;
Entretanto, essa opção trará pontos adversos, que deverão ser considerados no restante do
projeto do sistema de software. São elas:
• Perda de robustez, pelo fato de que transações podem envolver vários serviços,
nesse caso, não é possível garantir a atomicidade das mesmas. Esse ponto deverá ser
observado nas demais decisões e design da solução;
• Segurança, pode ser um problema relevante, dado que como os serviços executam de
forma distribuída e independente, então um agente malicioso pode se passar por um
serviço e conseguir acesso a informações não autorizadas.
Outro aspecto entre o casamento entre SOA e Cloud Computing pode ser justificado de
acordo com Yang e Zhang (2012) que declara as seguintes afirmações:
Finalmente, na abordagem SOA para o sistema de Cloud Storage, deverá ser imple-
mentado utilizando o padrão de projeto SOA chamado camada de serviços (ERL, 2009),
que consiste em várias camadas de inventários de serviços, que são serviços agrupados por
afinidade. Funciona como o estilo arquitetural em camadas em softwares tradicionais. As
camadas serão apresentadas mais adiante neste mesma Seção.
4.1.2 Persistência
Assim como qualquer sistema, o Cloud Storage precisa persistir dados de forma
organizada. Em um sistema de grande porte, tipicamente se utiliza um banco de dados,
relacional ou não, para armazená-los. Porém, um sistema de cloud storage, por definição,
é utilizado para guardar dados de forma segura e escalável, assim como os sistemas de
gerenciamento de banco de dados.
Logo, optou-se por não utilizar um banco de dados externo para armazenar metadados do
sistema, de forma a reduzir custos e aumentar a portabilidade do sistema. Será utilizado o
próprio ambiente de cloud storage para se guardar tanto os conteúdos dos arquivos, que
serão denominados de dados, como as metainformações sobre o sistema de arquivo, que
serão chamados de metadados.
É comum em sistemas de arquivos distribuídos (DFS) (BžOCH, 2012) subdividir o arma-
zenamento em duas unidades, sendo uma para conteúdo dos arquivos (dados) e outra para
metadados.
Em Subashini S. e Kavitha (2011>) podemos observar um exemplo de utilização de cloud
Seção 4. Definição da Arquitetura 37
storage para armazenar metadados de forma eficiente e segura. Nesse trabalho, a segurança
é obtida através da fragmentação de dados sensíveis.
Em Jiang et al. (2012) podemos observar que é possível utilizar um ambiente de cloud para
implementar uma arquitetura de cloud flexível e escalável, abrindo mão da consistência
imediata. Nesses trabalhos, a consistência é atingida através da chamada consistência
eventual, em que os dados salvos no nós distribuídos em um certo intervalo de tempo após
sua inclusão.
Podemos listar as vantagens dessa abordagem. Primeiramente seria a escalabilidade já que
o armazenamento de metadados deverá crescer de acordo com o crescimento do sistema.
Ademais, trata-se de um armazenamento distribuído, por isso elimina pontos únicos de
falha. Também é importante considerar a portabilidade e adaptabilidade, visto que devido
à não necessidade de um software externo para armazenar metadados, não há dependência
de sistema operacional, ambiente ou qualquer situação que restrinja o uso de um software.
Ou seja, na fase de implantação do software, ele elimina o pré-requisito de um software de
um sistema de gerenciamento de banco de dados, e não requer a manutenção do mesmo
na fase de produção.
Contudo, uma consequência dessa decisão arquitetural será o maior esforço de imple-
mentação, visto que utilizar um sistema de gerenciamento de banco de dados seria mais
rápido. Um aspecto importante nesse sentido, seria manter o baixo acoplamento, para
flexibilizar a utilização de diferentes formas de armazenamento de metadados no futuro. É
importante deixar em aberto na arquitetura, interface para que se acople formas diferente
de armazenamento tais como sistemas de arquivos, banco de dados em memória, bancos
de dados externos entre outros. Porém, nesse trabalho, utilizaremos apenas o cloud storage
como armazenamento de metadados. Assim como na implementação, a manutenibilidade
é outro ponto a se considerar, pois da mesma forma que a implementação, utilizar um
banco de dados externo tornaria mais fácil a manutenção do sistema. Finalmente, a falta
de segurança é uma ameaça importante, pois esses metadados não poderão ser acessados
por pessoas não autorizadas.
partir da chave de um objeto, que é conhecida, pode-se recuperar aquele objeto na DHT.
Em geral, os algoritmos de DHT lidam com três problemas básicos:
• Mapear chaves com nós de forma balanceada: Cada nó deve conter aproxi-
madamente a mesma quantidade de dados para evitar problemas de sobrecarga de
um dado nó. Geralmente esse problema é resolvido utilizando uma função de hash
tanto para a identificação do nós (ex: o endereço IP do nó) quanto para a chave em
questão, e feita uma correlação entre eles;
• Resiliência de dados: Esse serviço tem o objetivo de garantir que não haja
inconsistência ou indisponibilidade de chunks ou objetos armazenados na camada de
serviços básicos. Ela é responsável pela tolerância a falhas de todo o sistema.
• Tarifação: Esse serviço é utilizado pelo cloud provider ou cloud broker para tarifar
os cloud consumer em base na utilização do serviço (SILVA, 2013).
• Instrumentação: Esse serviço pode ser utilizado juntamente com a tarifação para
se mensurar a quantidade de armazenamento, tráfego e utilização de recursos em
geral pelo cloud consumer.
Como especificado anteriormente, essa lista não é exaustiva, nem tem esse objetivo. As
possibilidades de se implementar novos serviços são ilimitadas.
inteiramente das camadas de cima. Devido a esse comportamento, essa camada pode ser
denominada também de Armazenamento Básico.
Os valores ainda contam com um número de versão. Este número de versão é um número
sequencial que é incrementado a cada modificação da tupla. Ele visa tanto recuperar
versões anteriores para fins de auditoria, como evitar inconsistência em caso de acessos
concorrentes para escrita.
A Figura 7 mostra um exemplo de implantação do serviço de armazenamento básico. Ela
é composta essencialmente por tabela de hash distribuída (DHT) composta por vários nós
de armazenamento, sendo que cada nó está dentro de um ambiente de execução diferente,
tanto em máquinas virtuais como em hardwares distintos. Com a utilização de hardware
distinto, pode-se manter uma segurança maior nas cópias dos dados. Até mesmo, sendo um
hardware modesto, como mostrado no GFS (GHEMAWAT; GOBIOFF; LEUNG, 2003).
A Figura 8 mostra a visão de componentes do armazenamento básico, que provê duas
adiante.
Vale também destacar que a a única interface provida para o engenho de armazenamento
é via sistema de arquivos, porém está aberta a possibilidade de novas implementações.
Essa camada utiliza o armazenamento básico como plataforma, sendo esta a camada de
acesso a dados. Todos os módulos dessa camada têm uma estrutura similar. No nível mais
acima, se encontra a fachada do serviço. Ela tem o objetivo de simplificar a interface do
serviço, reduzindo o acoplamento com a forma de transporte das requisições. Cada serviço
tem sua própria fachada que provê as operações daquele serviço para as aplicações clientes.
A Figura 11 mostra a visão geral de um serviço.
Na camada abaixo da fachada, está o controller. O controller é responsável por toda
a lógica do serviço, incluindo as regras de negócio. Essa é a parte mais complexa da
implementação de um serviço.
Mais abaixo, está a camada de acesso a dados, o DAO (Data Access Object). No nosso
caso, o DAO utiliza tanto o serviço de armazenamento de dados para incluir, modificar e
excluir objetos, como o serviço de controle de acesso para decriptar objetos protegidos
pelo sistema através da chave do usuário.
A inclusão de um objeto no sistema é feito por meio das seguintes etapas: o objeto é
serializado e transformado num stream de bytes ou caracteres, caso necessário, o serviço
de controle de acesso encripta esses dados. Finalmente esses dados são associados com um
identificador único e inserido no armazenamento básico.
A Figura 12 mostra a visão de diagrama de classes da camada de Serviços Importantes,
Seção 4. Definição da Arquitetura 50
Os valores das chaves estão guardados como strings no formato JSON (JSON, 2014) que é
um formato extensível, legível por humanos e mais eficiente que o XML.
Com exceção dos valores relativos a usuários autenticados e chaves de segurança, todos
os dados são criptografados com a chave do usuário, com o objetivo de assegurar a
confidencialidade de seus dados.
4.7 Segurança
Como especificado antes, os metadados relativos ao usuário são encriptados. Nesta
seção, será detalhado o projeto da segurança da arquitetura.
Quando um novo usuário se registra, a partir da senha fornecida pelo usuário, é gerada
uma chave para o usuário que só pode ser recuperada a partir dessa senha do usuário.
Opcionalmente, o usuário ou administrador do sistema pode optar, que essa senha seja
armazenada para o caso de posterior recuperação de senha. Nesse caso, a senha é cifrada
com uma chave baseada na senha do administrador do sistema.
Ao incluir os metadados do usuário no sistema, eles são cifrados utilizando a chave do
usuário, logo, só poderão ser reabertos através da senha do mesmo.
A partir daí, para cada arquivo ou diretório enviado para o sistema, é gerada uma chave
para aquele arquivo. Os metadados desse arquivo então são cifrados de modo que eles
possam ser abertos a partir de uma dessas três chaves: a chave do usuário, a chave do
próprio arquivo ou pela chave do diretório que contém aquele arquivo ou diretório. Esse
recurso será utilizado mais à frente para o compartilhamento.
Quando o usuário troca de senha, seus arquivos deverão ser encriptados novamente com a
Seção 4. Definição da Arquitetura 53
chave gerada pela nova senha. Este processo deverá ser feito em batch, podendo o usuário
ter alguns arquivos indisponíveis nesse intervalo.
No compartilhamento, o usuário utiliza a chave pública do usuário que receberá o com-
partilhamento, e gera o compartilhamento daquele arquivo. Uma vez que um usuário que
recebeu o compartilhamento de um diretório, é possível navegar nele, pois a partir da
chave de um diretório, é possível acessar todos os arquivos ou diretórios nele contidos.
Quando o usuário revoga o acesso ao arquivo ou diretório, aquele compartilhamento é
removido, e o usuário não terá meios mais para desencriptar aquele arquivo.
Somado ao esquema de criptografia que foi descrito acima, também é importante registrar
todas as ações dos usuários. Ao requisitar um arquivo ou fazer qualquer modificação nos
seus metadados, as ações do usuário são registradas pelo serviço de controle de acesso.
Seção 4. Definição da Arquitetura 54
4.8 Conclusão
Nesta seção, foi mostrada toda a arquitetura para um sistema de backup e sincroni-
zação de arquivos em nuvem. Daqui em diante, esse trabalho será validado a partir de
uma avaliação de arquitetura cuja metodologia e resultados serão apresentados no próxima
seção.
55
5 Avaliacao da Arquitetura
• 1. Troca de senha
Descrição: Imaginando um usuário X trocando sua senha, todos seus arquivos serão
reencriptados em batch, o que acarretará na reencriptação de todos os chunks e na
re-replicação desses chunks, causando um overhead na rede ou de processador
Atributos de qualidade: Utilização de recursos, comportamento temporal
Resultado: Nesta situação a arquitetura responde mal. Se o usuário tiver um
número muito grande de arquivos ou um número grande de usuários trocar de senha,
o sistema irá consumir uma grande quantidade de recursos de cpu e banda.
• 2. Cache de memória
Descrição: Devido a constante replicação e pedidos de restore, os peer de dados
poderiam manter um cache em memória dos chunks mais acessados, ou até mesmo
fazer um cache de escrita
Atributos de qualidade: Utilização de recursos, comportamento temporal
Seção 5. Avaliacao da Arquitetura 59
• 4. Duplicidade de dados
Descrição: Dois usuários fazem backup do mesmo arquivo
Atributos de qualidade: Utilização de recursos
Resultado: Apesar, da operação ocorrer sem problemas, não acontecerá de forma
otimizada. Em um ambiente ideal, os dois arquivos, que contém rigorosamente os
mesmos chunks, poderiam referenciar um ao outro. Porém, como cada arquivo é
encriptado por uma chave diferente, isso não ocorrerá, pois com a encriptação do
arquivo, os dois conteúdos serão distintos. Neste cenário houve um tradeoff entre
segurança e utilização de recursos, no qual a segurança foi favorecida.
• 5. Crescimento do negócio
Descrição: Devido à mudanças no modelo de negócio a empresa que detém o sistema
de armazenamento "abre"o serviço para Web. Deste modo, a quantidade de usuários
que totalizava 400 usuários, após 1 ano, tornou-se em 4000.
Atributo de qualidade: Escalabilidade
Resultado: Pelas características da implementação dos serviços (baixo acoplamento,
sessões sem estado) além da utilização da DHT, o sistema é amplamente escalável,
desde que exista o hardware necessário para comportar a quantidade de serviços e
nós de armazenamento.
• 6. Migração
Descrição: Migração do serviço de armazenamento para um outro serviço de arma-
zenamento
Atributo de qualidade: adaptabilidade
Resultado: Como especificado nos Business Drivers, esta é uma das limitações de
cloud storage. Porém, através da utilização dos serviços, é possível desenvolver uma
aplicação que recupere os arquivos e envie-as para o novo serviço. Portanto esse
cenário é parcialmente atendido.
Seção 5. Avaliacao da Arquitetura 60
• 7. Falha em discos
Descrição: Máquina que contem a base de metadados tem o conteúdo do disco
corrompido.
Atributo de qualidade: Tolerância a falhas
Resultado: Na arquitetura não existe um servidor central de metadados. Todos os
dados são armazenado numa DHT. Se um nó da DHT falha, existem réplicas que
nos ajudam a recuperar esses dados. Logo, esse cenário é totalmente atendido.
Como pode-se observar na Tabela 2, que mostra os resultados consolidados, três cenários
foram atendidos totalmente. Enquanto seis desses foram atendidos parcialmente, ou seja,
necessitam de pequenas modificações na arquitetura, nas quais a maioria delas, pode ser
feita, após a arquitetura implementada. E finalmente, um cenário não foi atendido.
Como recomendação da avaliação, é necessário se pensar um esquema criptográfico
mais eficiente, que mantenha a segurança e não torne arquivos indisponíveis.
Finalmente, podemos considerar que a arquitetura respondeu bem à avaliação, com uma
ressalva, que foi em relação ao esquema de criptografia. Atributos de qualidade como
escalabilidade, adaptabilidade, utilização de recursos e segurança responderam bem aos
estímulos da avaliação.
5.8 Conclusão
Como podemos observar, a avaliação antecipou um problema que poderia ocorrer
em tempo de execução da arquitetura, que seria o uso excessivo de recursos, aliado com a
perda de performance do sistema durante o processo de troca de senha para o usuários.
Na indústria, uma situação como essa salvaria um valor significativo de tempo em dinheiro.
Pois os arquitetos poderiam modificar e reavaliar a arquitetura, ou ainda, colocar essa
falha como uma limitação do sistema.
62
6 Conclusão
63
7 Conclusão
Apesar de um item falho, ao longo de todo o trabalho, foi possível projetar uma
arquitetura elástica, escalável e segura para um sistema de Cloud Storage.
Nesta seção, serão apresentadas as conclusões que puderam ser tiradas ao longo de todo o
desenvolvimento desse trabalho.
7.2 Contribuições
As principais contribuições deixadas por esse trabalho foram:
Seção 7. Conclusão 64
• Uma analise dos direcionadores do negócio de Cloud Storage, que serviu de insumo
para o desenvolvimento da arquitetura proposta.
• Uma arquitetura, que pode ser útil para implementar um sistema de armazenamento
de arquivos, ou mesmo, como fonte para que novas arquiteturas sejam elaboradas.
• Uma metodologia de avaliação para ser utilizada por equipes geograficamente distri-
buídas e com disponibilidade de tempo incompaties.
• Implementar a arquitetura.
Referências
BABAR, M.; GORTON, I. Software architecture review: The state of practice. Computer,
v. 42, n. 7, p. 26–32, July 2009. ISSN 0018-9162.
BOHN, R. B. et al. Nist cloud computing reference architecture. In: IEEE WORLD
CONGRESS ON SERVICES, 2011, Washington. Proceedings... Washington, DC, USA:
IEEE Computer Society, 2011. p. 594–596.
BžOCH, P. Distributed file systems: the state of the art and concept of ph.d. thesis. [S.l.],
2012.
CALDER, B. et al. Windows azure storage: a highly available cloud storage service with
strong consistency. In: ACM SYMPOSIUM ON OPERATING SYSTEMS PRINCIPLES,
23., 2011, Cascais. Proceedings... New York: ACM, 2011. p. 143–157.
DURãO, F. et al. Usto.re: a private cloud storage software system. In: INTERNATIONAL
CONFERENCE ON WEB ENGINEERING, 13., 2013, Aalborg. Proceedings... Berlin:
Springer-Verlag, 2013. p. 452–466.
ENISA. Cloud computing: benefits, risks and recommendadtions for information security.
2009. Disponível em: <https://www.enisa.europa.eu/activities/risk-management/files/
deliverables/cloud-computing-risk-assessment/at_download/fullReport>. Acesso em: 2
jul. 2014.
ERL, T. SOA design patterns. 1st. ed. Upper Saddle River, NJ, USA: Prentice Hall PTR,
2009. ISBN 0136135161, 9780136135166.
GANTZ J. E REINSEL, D. Extracting value from chaos state of the universe: an executive
summary. Framingham, MA, USA, 2011.
GHEMAWAT, S.; GOBIOFF, H.; LEUNG, S.-T. The google file system. In: ACM
SYMPOSIUM ON OPERATING SYSTEMS PRINCIPLES, 19., 2003, Bolton Landing.
Proceedings... New York: ACM, 2003. p. 29–43.
GILBERT, S.; LYNCH, N. Brewer’s conjecture and the feasibility of consistent, available,
partition-tolerant web services. SIGACT News, ACM, New York, NY, USA, v. 33, n. 2, p.
51–59, jun. 2002. ISSN 0163-5700.
ISO/IEC. ISO/IEC 25010 - systems and software engineering : systems and software
quality requirements and evaluation (square) - system and software quality models. [S.l.],
2010.
JIANG, W. et al. Mystore: a high vailable distributed storage system for unstructured data.
In: INTERNATIONAL CONFERENCE ON HIGH PERFORMANCE COMPUTING
AND COMMUNICATION, 14, INTERNATIONAL CONFERENCE ON EMBEDDED
SOFTWARE AND SYSTEMS, 9, 2012, Paris. Proceedings... Paris: IEEE Computer
Society, 2012. p. 233–240.
JOSUTTIS, N. Soa in practice: the art of distributed system design. [S.l.]: O’Reilly Media,
Inc., 2007. ISBN 0596529554.
JSON. Introducing JSON. 2014. Disponível em: <http://json.org>. Acesso em: 7 ago.
2014.
Referências 67
MELL, P.; GRANCE, T. The NIST definition of cloud computing. Gaithersburg, MD,
2011.
SALESFORCE. CRM e cloud computing para crescer seu negócio: Salesforce.com brasil.
2000. Disponível em: <http://www.salesforce.com/br>. Acesso em: 15 jun. 2014.
SANDBERG, R. The sun network files system: Design, implementation and experience.
[S.l.], 1986.
Referências 68
SHIVAKUMAR, S. Thought floor: a walk in the clouds (pt 1). 2014. Disponível em:
<http://www.infosysblogs.com/thought-floor/2012/02/a_walk_in_the_clouds_part_
1.html>. Acesso em: 8 ago. 2014.
SNIA. Implementing, serving, and using cloud storage. 2013. Disponível em:
<http://snia.org/sites/default/files/Implementing_Serving_and_Using_The_
Cloud-Nov_2013.pdf>. Acesso em: 15 jun. 2014.
SUGARSYNC. File sharing, online backup and cloud storage from any device: Sugar sync.
2014. Disponível em: <http://www.sugarsync.com>. Acesso em: 13 jul. 2014.
YANG, X.; ZHANG, H. Cloud computing and soa convergence research. In:
INTERNATIONAL SYMPOSIUM ON COMPUTATIONAL INTELLIGENCE AND
DESIGN (ISCID), 5., 2012, Hangzhou. Proceedings... Hangzhou: IEEE Computer Society,
2012. p. 330–335.
Apêndices
70