Escolar Documentos
Profissional Documentos
Cultura Documentos
Dissertao de Mestrado
RECIFE
AGO/2014
RECIFE
AGO/2014
Agradecimentos
Antes de mais nada, gostaria de agradecer toda minha famlia por todo o apoio.
Principalmente minha esposa, Eduarda, por ter acreditado na minha capacidade, quando eu
mesmo duvidei. Meus pais, e meu irmo pelo apoio constante, e pelos exemplos que me
deixaram para seguir.
Aos meus amigos cujo apoio foi fundamental para o trmino deste trabalho. Fica aqui o meu
obrigado a todos.
Aos professores Professores Silvio Meira (orientador), Rodrigo Assad (co orientador) e Vincius
Garcia, pela oportunidade dada, pelas trocas de idia, pela cobrana e pelos caminhos que foram
indicados.
Ao professor Ccero Garrozi, por se disponibilizar a fazer parte da banca deste trabalho.
Ao Centro de Informtica da UFPE e todos que o fazem, pelo ensino e suporte dado para que
este possa ter concludo.
Aos colegas do ASSERT Lab por todos os feedbacks dados durante a evoluo desse projeto.
Tenho certeza que essas discusses foram proveitosas para todos ns.
A todos os colegas da Ustore, pela pacincia e colaborao de todos , que para mim, uma
segunda casa.
Finalmente, gostaria de agradecer a todos que contriburam diretamente e indiretamente
realizao de mais etapa na minha vida.
Obrigado a todos!
Resumo
Nos ltimos anos, o volume de dados gerados por indivduos e organizaes tem crescido
exponencialmente. Estima-se que globalmente existia 2.7 zetabytes em 2012 e esse nmero tem
dobrado a cada dois anos. Alm disso, com a popularizao de dispositivos mveis conectados,
cresceu-se a necessidade de que usurios tenham acesso a arquivos de forma ubqua. As
solues tradicionais de backup e armazenamento de arquivos online j no conseguem suprir as
necessidades atuais dos usurios.
A utilizao de Cloud Storage para backup e sincronizao de arquivos vem a ser uma ferramenta
de grande valia para esse tipo de problema. Porm, implementar um sistema deste tipo vem a ser
um desafio tecnolgico relevante.
Nesse sentido, este trabalho se prope a resolver o problema de armazenamento de arquivos,
propondo uma arquitetura de Cloud Storage para armazenamento de arquivos.
Ao longo trabalho, feita uma anlise dos principais direcionadores de negcio para Cloud
Storage e armazenamento de arquivos, levantando insumos para se projetar uma arquitetura. Tal
arquitetura descrita em nvel de detalhe para que se possa ser implementada.
Finalmente, o trabalho validado atravs de uma avaliao de arquitetura cuja metodologia foi
adaptada de acordo com as caractersticas da equipe de avaliao.
Palavras-chave:
cronizao.
Abstract
In the last years, the amount of data generated by individuals and organizations has
grown exponentially. It is estimated that there were 2.7 zettabytes of global data in 2012, and
this number has doubled each two years. In addition to this, with the popularization of mobile
connected devices, the users need to have ubiquous access has grown. Traditional solutions for
backup and online file storage can no longer meet the current needs.
The use of cloud storage for backup and file synchronization becomes a tool of great value to
this kind of problem. However, implementing such a system becomes a significant technological
challenge.
Thus, this works proposes to solve the problem of storing files, designing a Cloud Storage
architecture for storing archives.
Throughout work, an analysis of the key business drivers for Cloud Storage and File storage is
done by lifting inputs for designing an architecture. This architecture is described in detail for
level that can be implemented.
Finally, the work is validated through an evaluation of architecture whose methodology was
adapted according to the characteristics of the evaluation team.
Keywords: Software Architecture, Cloud Computing, Cloud storage, Backup, Synchronization.
Summary
Lista de Figuras
Lista de Tabelas
xi
Lista de Acrnimos
xii
Introduo
1.1 Definio do problema
1.2 Metodologia . . . . . .
1.3 Fora do escopo . . . .
1.4 Estrutura da dissertao
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
1
2
2
2
3
.
.
.
.
.
.
.
.
.
.
.
.
4
4
4
5
8
8
9
10
10
11
11
12
13
.
.
.
.
.
.
.
.
.
14
14
15
15
16
17
17
18
19
19
3.3
3.4
4
Requisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Concluso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Definio da Arquitetura
4.1 Decises arquiteturais . . . . . . . . . . . . . .
4.1.1 Orientao a Servios atravs de REST
4.1.2 Persistncia . . . . . . . . . . . . . . .
4.1.3 Utilizao de DHT . . . . . . . . . . .
4.1.4 Controle de Acesso . . . . . . . . . . .
4.2 Orientao a Servios . . . . . . . . . . . . . .
4.2.1 Camadas de Servios . . . . . . . . . .
4.2.2 Descrio dos servios . . . . . . . . .
4.3 Viso Geral da arquitetura . . . . . . . . . . .
4.4 Camada de Servios Bsicos . . . . . . . . . .
4.5 Camada de Servios Importantes . . . . . . . .
4.6 Modelo de Dados . . . . . . . . . . . . . . . .
4.7 Segurana . . . . . . . . . . . . . . . . . . . .
4.8 Concluso . . . . . . . . . . . . . . . . . . . .
20
23
.
.
.
.
.
.
.
.
.
.
.
.
.
.
24
24
25
27
28
29
30
30
31
34
37
40
43
44
46
.
.
.
.
.
.
.
.
47
47
48
48
49
50
51
53
54
Concluso
6.1 Principais Concluses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.2 Contribuies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.3 Trabalhos Futuros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
55
55
56
56
Avaliacao da Arquitetura
5.1 Processo de avaliao de arquitetura de software
5.2 Equipe de Avaliao da arquitetura . . . . . . .
5.3 Ameaas validao . . . . . . . . . . . . . .
5.4 Metodologia de avaliao . . . . . . . . . . . .
5.5 Execuo do processo de avaliao . . . . . . .
5.6 Cenrios propostos e resultados da avaliao . .
5.7 Consolidao dos Resultados . . . . . . . . . .
5.8 Concluso . . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Referncias Bibliogrficas
57
Apndice
62
63
List of Figures
2.1
Modelos de Servios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.1
Atributos de Qualidade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
19
4.1
4.2
4.3
4.4
4.5
4.6
4.7
4.8
4.9
4.10
4.11
4.12
31
32
35
36
38
38
40
41
42
43
44
45
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
List of Tables
3.1
20
5.1
54
64
65
Lista de Acrnimos
11
1
Introduo
Atualmente, tem-se observado um crescimento alarmante no volume de dados mundial.
De acordo com Gantz and Reinsel (2011), esse volume global superou 1 zettabyte em 2010 e
tem previso de alcanar 8 zettabytes em 2015.
Este fato tem ocorrido devido crescente quantidade de aplicativos e dispositivos que geram
contedos para armazenar. Desde textos, e-mails at vdeos em alta resoluo. Alm disso, com
o advento dos dispositivos portteis e a internet mvel, surgiu a necessidade dos usurios de
acessar seus contedos de forma ubqua.
As solues de de backups e sincronizao de arquivos tradicionais j no tm suprido a demanda
crescente dos usurios. Pois, podemos encontrar alguns problemas nessas soluo, tais como:
1.1
Definio do problema
O problema que se pretende resolver neste trabalho projetar uma arquitetura para
armazenamento de arquivos de forma elstica, escalvel e segura. Para apoiar esse desenvolvi-
12
1.2. METODOLOGIA
1.2
Metodologia
Para desenvolver este trabalho, a seguinte metodologia foi utilizada:
1.3
Fora do escopo
Os seguintes tpicos foram excludos do escopo para esse trabalho:
1.4
Implementao da arquitetura.
Estrutura da dissertao
O restante da dissertao estar organizada da seguinte forma:
13
14
2
Contextualizao e Trabalhos Relacionados
Este captulo visa apresentar uma viso geral de cloud storage, com o objetivo de definir
o conceito de cloud computing, cloud storage e backup online, bem como fazer um levantamento
histrico de sua origem at o estado atual da arte. Alm disso, tem o objetivo de discutir e
analisar alguns trabalhos que se relacionam com este.
2.1
Cloud Computing
Antes de estudar cloud storage, importante ter uma viso geral dos conceitos de
cloud computing, ou computao em nuvem. Uma breve viso histrica e contextual de cloud
computing ser feita nesta seo.
2.1.1
Apesar de ter ganhado destaque nos ltimos anos, o conceito de cloud computing no
pode ser considerado recente. Em 1950, o cientista da computao Herb Grosh (Cruz, 2004)
postulou que o mundo inteiro operaria em terminais burros que seriam servidos por aproximadamente 15 clusters de computadores.
Mais tarde, em 1961, (Dalakovi, 2014b) sugeriu num discurso que a tecnologia de compartilhamento de processamento levaria a um futuro cujo poder computacional ou at aplicaes
poderiam ser vendidas como um servio, tal como energia ou eletricidade. Em 1962, J.C.R Licklider (Dalakovi, 2014a) descreveu um conceito de uma Rede Intergalctica de Computadores,
antes de fazer parte da Agncia de Projetos de Pesquisa Avanada ( Advanced Research Project
Agency - ARPA), que pode ser considerada como a origem da internet. Nesta rede, usurios
poderiam rapidamente localizar e acessar dados e softwares dentro dela e poderiam migr-las
caso necessrio. Este conceito descreve no s a Internet como conhecemos hoje, mas tambm
um dos princpios de cloud computing.
Em 1966, Douglas Parkhill, em seu livro The Challenge of the Computer Utility (Parkhill,
1966) descreveu o provisionamento de poder computacional de forma elstica e infinita. Apesar
da ideia de cloud computing ter surgido h mais de 50 anos atrs, o termo s veio surgir no ano
15
2.1.2
De acordo com o NIST (Mell and Grance, 2011), Cloud Computing pode ser introduzido
com a seguinte definio que foi traduzida livremente:
Computao em Nuvem um modelo que proporciona um acesso de rede ubquo,
conveniente e sob demanda, para uma reserva compartilhada de recursos computacionais (ex: rede, servidores, armazenamento, aplicaes e servios) que pode
ser rapidamente providas e liberadas com um esforo mnimo de configurao ou
mnima interao com o provedor de servios. Este modelo composto por cinco
caractersticas essenciais, trs modelos de servios e quatro modelos de implantao.
Dentro da definio apresentada acima, importante destacar alguns elementos. O compartilhamento de recursos viabiliza que um recurso computacional ocioso para um usurio seja
utilizado por outros, conforme necessidade. Tambm importante frisar que a expanso ou
encolhimento da nuvem, dever ser feita conforme a necessidade e com o mnimo possvel de
esforo do administrador. Isso viabiliza aplicativos e servios que outrora dependeriam de toda
uma infraestrutura para operar.
Ainda de acordo com o NIST, a Cloud Computing tem cinco caractersticas essenciais. So elas:
1 https://www.heroku.com/
2 http://azure.microsoft.com
3 https://www.digitalocean.com/
4 http://cloudfoundry.org/index.html
16
O termo computao pode ter diversos significados, desde utilizao de hardware a execuo de
um aplicativo especfico. Por esse motivo, foram criados os distintos modelos de servios, que
agrupam o que pode ser entregue como servio. O modelo SPI, que significa Software, Platform,
Infrastructure, utilizado para classificar os sistemas de cloud computing de acordo com o tipo
de servio, como se segue:
Software as a Service (SaaS): O provedor disponibiliza aplicaes que so executadas em uma infraestrutura de cloud computing. Geralmente, essas aplicaes so
utilizadas em um modelo de pagamento por uso e so acessveis a vrios clientes
tanto atravs de um terminal burro, como um browser ou por meio de um software
cliente. O cliente no tem controle sobre a infraestrutura usada pela aplicao.
Platform as a Service (PaaS): O provedor disponibiliza uma plataforma capaz de
executar programas desenvolvidos ou adquiridos pelo cliente, que foram criados
utilizando linguagens de programao, bibliotecas, servios e ferramentas suportadas
pelo provedor. O cliente no tem controle sobre a infra-estrutura utilzada pela
aplicao.
Infrastructure as a Services(IaaS): O provedor disponibiliza para o cliente processamento, armazenamento, rede e outros recursos computacionais bsicos, nos quais
o cliente pode implantar e executar qualquer tipo de software, que inclui sistemas
operacionais e aplicaes. O cliente no tem controle total sobre a infraestrutura
17
A Figura 2.1, extraida de Shivakumar (2014) ilustra os diferentes nveis dos modelos de servios,
com alguns exemplos de ferramentas em cada nvel de servio. Quanto maior o nvel de abstrao,
maior o julgamento de valor sobre o servio que est sendo adquirido e tambm menor o controle
sobre a infraestrutura em uso.
18
2.2
Cloud Storage
Uma vez que foi entendida a idia de cloud computing e suas principais caractersticas,
vamos introduzir e analisar conceitos, requisitos e tcnicas envolvidas com cloud storage.
2.2.1
19
2.2.2
Cloud storage nada mais que um caso especial de Cloud Computing com um propsito
especfico de armazenar dados.
Dessa forma, baseado na definio dada pelo NIST, podemos definir Cloud storage como
"um modelo que proporciona o armazenamento de dados de forma ubqua, conveniente e sob
demanda a partir de uma reserva de armazenamento compartilhada que pode ser rapidamente
disponibilizada com o mnimo de esforo de configurao ou interao com o provedor de
servios."
Assim como nos sistemas de cloud computing, as cinco caractersticas so aplicveis ao cloud
storage (auto-servio sob demanda, acesso de rede amplo, reserva de recursos, elasticidade
rpida e servio instrumentado).
Alm disso, os trs modelos de servios tambm se aplicam ao cloud storage. possvel
a um cliente adquirir armazenamento como um software, como uma aplicao de backup e
sincronizao; como uma plataforma, no caso em que o provedor oferece, por exemplo, um
banco de dados relacional ou no; ou mesmo como infraestrutura, quando o provedor oferece
armazenamento bruto, que seria um disco virtual para que o usurio armazene documentos,
dados de aplicativos ou qualquer outro tipo de dados.
2.2.3
De acordo com SNIA (2013), os sistemas de Cloud Storage podem ter vrias aplicaes
dependendo dos objetivos das organizaes que as utilizam. Seguem alguns dos principais
cenrios:
20
2.3
Trabalhos Relacionados
Nesta seo, sero apresentados alguns trabalhos que se relacionam com este trabalho,
pois se tratam de sistemas de cloud storage, que foram ou esto sendo utilizados tanto na
academia quanto na indstria. Os trabalhos foram apresentados por ordem de publicao.
2.3.1
Oceanstore
21
2.3.2
Windows Azure Storage (Calder et al., 2011), ou WAS o sistema de Cloud Storage da
Microsoft, que est em produo desde o final de 2008.
O WAS armazena dados em trs formatos: BLOBs, tabelas ou filas para entrega de mensagens.
O projeto do WAS, levou em considerao pedidos de vrios clientes, que direcionou algumas
decises de projeto. Entre elas esto consistncia forte, armazenamento global e escalvel,
recuperao de desastres, armazenamento multi-tenant.
O WAS roda em mltiplos servidores espalhados ao redor do mundo. Ele possui uma camada
que prov gerenciamento de ns, monitoramento da status, e implantao do servio para o
sistema. Essa camada chamada de Fabric Controller.
Os ns de armazenamento do Windows Azure esto organizados em clusters, denomidados
Storage Stamp, que so gerenciados pelos Location Service, que um servidor localizado em
uma dada localizao, como Europa, Amrica do Norte e sia.
Existem dois engenhos de replicao dentro do WAS, o chamado Intra-Stamp, que responsvel
pela replicao dentro do cluster de armazenamento, e o Inter-Stamp, que armazena dados de
um Stamp para outro, para uma recuperao em caso de desastre.
2.3.3
mento
so pequenos pedaos dos quais se compes um arquivo, registro, ou qualquer unidade de armazena-
22
2.3.4
Ustore
Ustore (Duro et al., 2013) uma plataforma de Cloud Storage em nuvem privada
desenvolvido para armazenar arquivos, fazendo backup e sincronizao deles.
Uma diferena marcante na plataforma Ustore que ele pode utilizar discos ociosos das mquinas
de uma corporao, formando uma nuvem privada com as estaes de trabalho.
Para que as estaes se comuniquem, utilizado uma rede overlay peer to peer (P2P), que
implementa o protocolo conhecido como JXTA6 .
A arquitetura do Ustore leva em considerao quatro atributos de qualidade como pilares de
suas decises arquiteturais, que so: escalabilidade, otimizao das interaes, disponibilidade e
segurana.
Na rede overlay existe um tipo de peer especial que tem a responsabilidade de configurar a rede e
manter rotas entre estaes diferentes. Esse peer chamado de Super Peer, e precisa ser mantido
em um servidor conhecido por todos os peers, como uma espcie de servidor central. Porm, sua
ncia funo manter a conectividade entre os peers.
Alm da existncia do superpeer, existem os chamados peers servidores, que implementam uma
gama de servios e so localizados pelos peers clientes, atravs do anncio de seus servios na
rede JXTA.
Finalmente os simple peers, ou apenas clientes, que so peers que so utilizados para enviar ou
recuperar arquivos da nuvem, assim como utilizar o espao ocioso na mquina do usurio para
salvar arquivos de outros usurios.
A replicao no Ustore se d atravs de um algoritmo estatstico, em que se registra o histrico
de conexo de cada cliente, traando assim um perfil do mesmo. As replicados dos backups
so enviados a outros clientes que tm perfil semelhante ao do usurio, otimizando assim a
disponibilidade do arquivo, mantendo um nmero mnimo de rplicas.
6 https://jxta.kenai.com/
23
3
Cloud Storage Business Drivers
Neste captulo ser feita uma anlise nos direcionadores de negcio de Cloud Storage, e
a partir da sero desenvolvidos os business drivers. A partir dos business drivers, possvel
obter insumos para pautar as decises arquiteturais, tais como os Requisitos do sistema, assim
como os principais atributos de qualidade.
Esses insumos tambm sero teis para, durante a avaliao da arquitetura, verificar a conformidade dessa com as necessidades de negcio.
3.1
Definio do Negcio
Embora cloud storage ja tenha sido definido anteriormente, necessrio ressaltar que o
conceito de armazenamento em nuvem bastante abstrato. Neste trabalho, os esforos sero
concentrados em sistemas de armazenamento de arquivos.
Deseja-se utilizar a elasticidade da nuvem para armazenar arquivos, garantindo fatores como a
disponibilidade, segurana, escalabilidade e acesso ubquo aos dados armazenados pelos usurios,
para uso de backup, sincronizao de arquivos ou arquivamento.
Esta soluo ir representar duas das maiores tendncias na Tecnologia da Informao (Marston
et al., 2011) a eficincia tecnolgica, pois o poder computacional melhor utilizado atravs
de recursos de hardware e software escalveis e agilidade de negcio, que possibilita empresas
pequenas ou em estgio inicial, ter acesso a um elevado poder computacional.
Em Grossman (2009), ENISA (2009) e Aljabre (2012) possvel observar algumas das principais
vantagens e desvantagens da adoo de Cloud Computing por empresas. A partir delas, foi
possvel observar tambm sua aplicabilidade para Cloud Storage.
3.1.1
Principais Vantagens
24
3.1.2
A adoo de cloud storage pode apresentar um conjunto de benefcios, conforme apresentado anteriormente. Entretanto, relevante se considerar os pontos fracos, ameaas e
preocupaes relativas ao uso de cloud storage. A lista abaixo apresenta algumas das principais
desvantagens de utilizar um servio de nuvem para armazenamento.
25
3.1.3
26
Para o escopo desse trabalho, sero focadas as necessidades relacionadas aos grupos de Cloud
Consumers, que sero chamados de usurios finais, ou apenas usurios, e os Cloud Providers,
que sero denominados de provedores de servios.
3.1.4
Restries do negcio
Adicionalmente, para o desenvolvimento de qualquer arquitetura, imperativo se observar as restries que o negcio impe ao software. Em Khajeh-Hosseini et al. (2012) so
apresentadas algumas dessas restries que pode afetar um sistema de cloud computing. Dentre
elas, destacamos algumas:
3.1.5
Restries tcnicas
Assim como no caso das restries de negcio, relevante listar as restries tcnicas
para evitar surpresas no desenvolvimento de uma arquitetura. Algumas delas so encontradas
em sistemas de cloud storage:
27
3.2
Atributos de Qualidade
3.2.1
Metodologia
Para definir os atributos de qualidade, a seguinte metodologia foi utilizada: Por meio de
reviso bibliogrfica foram levantadas as principais vantagens da utilizao de cloud storage as
desvantagens, preocupaes e ameaas. Alm disso, tambm foram listados segundo a norma
28
3.3. REQUISITOS
3.2.2
Resultados
Nome
Disponibilidade
Utilizao de recursos
Confidencialidade
No-repdio
Autenticidade
Portabilidade
Adaptabilidade
3.3
Requisitos
29
3.3. REQUISITOS
30
3.3. REQUISITOS
31
3.4. CONCLUSO
se ele tem a permisso para execut-la, impedindo assim, ao usurio executar aes
que o mesmo no tem direitos.
3.4
R18 - Auditoria
Cada ao de um usurio, alm do mesmo estar devidamente identificado e autorizado,
o sistema tambm manter um registro de todas as aes crticas executadas pelo
mesmo. Os requisitos Autenticao, Autorizao e Auditoria completam a segurana
do sistema.
R19 - Interface externa
O sistema dever prover interfaces para o desenvolvimento de aplicaes de terceiros,
que possam usar o armazenamento em nuvem como plataforma, respeitando todos os
requisitos listados anteriormente.
Concluso
A partir de uma anlise do negcio de cloud storage e backup online, foi possvel
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, possvel tomar decises arquiteturais de forma
que os satisfazem, priorizando os principais atributos de qualidade.
Alm disso, deveremos utilizar os atributos de qualidade na avaliao da arquitetura proposta,
validando assim este trabalho
32
4
Definio da Arquitetura
Neste captulo, ser apresentada a arquitetura de software para resolver o problema
proposto. A partir da anlise de negcios, temos os requisitos e atributes de qualidade que
devero ser satisfeitos.
Inicialmente foram documentadas todas as principais decises arquiteturais para o sistema, e,
tomando essas decises como diretrizes, a arquitetura foi projetada.
4.1
Decises arquiteturais
4.1.1
Arquitetura Orientada a Servios (Josuttis, 2007) ou SOA (do ingls Software Oriented
Architecture) um paradigma de pensamento que leva a uma arquitetura concreta. SOA tem
como objetivo aumentar a flexibilidade do negcio.
SOA possui alguns direcionadores, tais como sistemas distribudos, diferentes provedores e
heterogeneidade. Esses so conceitos que combinam com os drivers de negcio de um sistema
33
de cloud storage. Alm disso, os direcionadores do SOA esto de acordo com os atributos de
qualidades indicados no Captulo ch:business.
Em uma arquitetura orientada a servios, o software decomposto em servios, unidades lgicas
que representam um grupo de funcionalidade de negcios. Os servios so projetados de forma
a abstrair todo o seu funcionamento interno, de forma que pessoas no tcnicas possam entender
o papel do servio dentro do ecossistema do negcio. Esses servios podem ser heterogneos,
sendo implementados em diferentes tecnologias, em hardwares diferentes, ou at mesmo em
provedores diferentes.
Dados que estes servios so heterogneos, importante que eles se comuniquem facilmente.
Este conceito chamado de interoperabilidade, e o segundo conceito de SOA, sendo o
primeiro os servios.
O ltimo conceito de SOA o baixo acoplamento, que significa minimizar a dependncia
entre os servios. Assim, modificaes tm efeitos mnimos e o sistema continua parcialmente
funcional ainda que uma parte do sistema esteja quebrada.
A opo da abordagem SOA ocorreu, entre outros motivos, pelas suas vantagens apresentadas
em Oliveira (2014). Dentre elas, as seguintes vantagens podem ser consideradas relevantes para
um sistema cloud storage:
Entretanto, essa opo trar pontos adversos, que devero ser considerados no restante do projeto
do sistema de software. So elas:
Aumento da complexidade, visto que cada servio executado de forma independente, a interoperabilidade ter um custo: o maior nmero de camadas de software
34
Perda de robustez, pelo fato de que transaes podem envolver vrios servios,
nesse caso, no possvel garantir a atomicidade das mesmas. Esse ponto dever ser
observado nas demais decises e design da soluo;
Segurana, pode ser um problema relevante, dado que como os servios executam de
forma distribuda e independente, ento um agente malicioso pode se passar por um
servio e conseguir acesso a informaes no autorizadas.
Outro aspecto entre o casamento entre SOA e Cloud Computing pode ser justificado de acordo
com e HuiMin Zhang (2012) que declara as seguintes afirmaes:
Finalmente, na abordagem SOA para o sistema de Cloud Storage, dever ser implementado utilizando o padro de projeto SOA chamado camada de servios (Erl, 2009), que
consiste em vrias camadas de inventrios de servios, que so servios agrupados por afinidade.
Funciona como o estilo arquitetural em camadas em softwares tradicionais. As camadas sero
apresentadas mais adiante neste mesmo Captulo.
4.1.2
Persistncia
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 no, para armazen-los. Porm, um sistema de cloud storage, por definio, utilizado para
guardar dados de forma segura e escalvel, assim como os sistemas de gerenciamento de banco
de dados.
Logo, optou-se por no 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 prprio ambiente de cloud storage para se guardar tanto os contedos dos arquivos, que sero denominados de
dados, como as metainformaes sobre o sistema de arquivo, que sero chamados de metadados.
comum em sistemas de arquivos distribudos (DFS) (Boch, 2012) subdividir o armazenamento
35
em duas unidades, sendo uma para contedo dos arquivos (dados) e outra para metadados.
Em Subashini (2011) podemos observar um exemplo de utilizao de cloud storage para armazenar metadados de forma eficiente e segura. Nesse trabalho, a segurana obtida atravs da
fragmentao de dados sensveis.
Em Jiang et al. (2012) podemos observar que possvel utilizar um ambiente de cloud para
implementar uma arquitetura de cloud flexvel e escalvel, abrindo mo da consistncia imediata.
Nesses trabalhos, a consistncia atingida atravs da chamada consistncia eventual, em que os
dados salvos no ns distribudos em um certo intervalo de tempo aps sua incluso.
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 distribudo, por isso elimina pontos nicos de falha. Tambm
importante considerar a portabilidade e adaptabilidade, visto que devido no necessidade de
um software externo para armazenar metadados, no h dependncia de sistema operacional,
ambiente ou qualquer situao que restrinja o uso de um software. Ou seja, na fase de implantao do software, ele elimina o pr-requisito de um software de um sistema de gerenciamento
de banco de dados, e no requer a manuteno do mesmo na fase de produo.
Contudo, uma consequncia dessa deciso arquitetural ser o maior esforo de implementao,
visto que utilizar um sistema de gerenciamento de banco de dados seria mais rpido. Um aspecto
importante nesse sentido, seria manter o baixo acoplamento, para flexibilizar a utilizao 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 memria, bancos de dados externos entre outros. Porm, nesse
trabalho, utilizaremos apenas o cloud storage como armazenamento de metadados. Assim como
na implementao, a manutenibilidade outro ponto a se considerar, pois da mesma forma que a
implementao, utilizar um banco de dados externo tornaria mais fcil a manuteno do sistema.
Finalmente, a falta de segurana uma ameaa importante, pois esses metadados no podero
ser acessados por pessoas no autorizadas.
4.1.3
Utilizao de DHT
36
Mapear chaves com ns de forma balanceada: Cada n deve conter aproximadamente a mesma quantidade de dados para evitar problemas de sobrecarga de um dado
n. Geralmente esse problema resolvido utilizando uma funo de hash tanto para
a identificao do ns (ex: o endereo IP do n) quanto para a chave em questo, e
feita uma correlao entre eles;
Redirecionar uma requisio para o n correto: Qualquer n que recebe uma
requisio para um dado n, deve ter a capacidade de redirecionar a requisio para
o n correto. Esse redirecionamento pode conter vrios saltos at se alcanar o n
em questo; e
Construir tabelas de rotas: Para redirecionar as requisies, cada n deve conhecer
os seus ns mais prximos. Um exemplo para esse caso a disposio de ns em
anis, onde cada n conhece o prximo, e pode redirecionar mensagens at que a
mesma alcance seu destinatrio.
Para a arquitetura proposta optou-se por utilizar um esquema similar ao Amazon DynamoDB (DeCandia et al., 2007) que utilizado para um sistema de armazenamento de dados
em cloud. Nesse esquema, os dados e metadados so distribudos em vrios ns, e cada n
responsvel pelo subconjunto de hashes. Suas responsabilidades incluem armazenamento,
replicao e busca. Essa abordagem ser descrita em maiores detalhes na seo 4.3.
As principais vantagens dessa deciso arquitetural so a escalabilidade, j que os dados so
armazenados de forma distribuda e no h um n central para receber as requisies, e a tolerncia a falhas, visto que no h um ponto nico de falha. Alm disso os sistemas de DHT tratam
problema como a entradas e falhas de ns, nos quais as tuplas devem ser realocadas para novos
ns em caso de desconexo de algum n ou a entrada de novos ns na rede; e por fim, tempo de
resposta, considerando que algoritmos de pesquisa de recursos numa DHT otimizam o tempo de
busca de recursos.
Uma preocupao em relao a essa deciso seria em relao segurana, uma vez que um
agente mal intencionado poderia se passar por um n para receber ou obter dados confidenciais.
Alm disso, de acordo com o teorema de Brewer (Gilbert and Lynch, 2002) impossvel manter
a consistncia dos dados e simultaneamente manter a sua distribuio e a disponibilidade.
4.1.4
Controle de Acesso
37
Alm disso, uma funcionalidade importante para esse sistema o compartilhamento de arquivos,
que permite que um usurio conceda ou revogue acesso a outros usurios.
Finalmente, os metadados do sistema tambm precisam ser mantidos em segurana, pois atravs
deles possvel remontar o sistema de arquivo dos usurios do sistema.
Uma possvel soluo para acesso a arquivos e compartilhamento, implementar um sistema
de controle de acesso discricionrio (Sandhu and Samarati, 1994). Em um sistema de acesso
discricionrio, cada usurio tem um conjunto de autorizaes sobre cada objeto, que, no caso do
sistema proposto, seriam os arquivos, e os modos de acesso que aquele usurio tem acesso, tais
como escrita ou leitura. Para cada acesso determinado objeto, verificado se existe alguma
autorizao para aquele tipo de acesso ao objeto pelo usurio. Se existe, o acesso permitido,
caso contrrio, negado.
Alm disso cada proprietrio de um recurso, tem o direito de modificar as autorizaes para cada
usurio, garantindo acesso ou revogando caso necessrio.
Para se implementar esse controle de acesso deve-se utilizar criptografia de dados. Esses dados
devem ser encriptados de forma que apenas o dono ou algum autorizado a esses dados tenham
acesso aos mesmos.
Uma vantagem clara dessa deciso o aumento da segurana do sistema, que no havia sido
priorizada em nenhuma das decises anteriores. Porm, o custo desse controle de acesso, somado
com a encriptao e decriptao de dados, consumir mais recursos do sistema, impactando
negativamente no tempo de resposta, na escalabilidade e na utilizao de recursos.
4.2
Orientao a Servios
4.2.1
Camadas de Servios
A Figura 4.1 mostra a diviso lgica dos servios do sistema. A camada fundamental
do sistema a camada de servios bsicos. Essa camada responsvel pelo armazenamento,
recuperao e resilincia de dados e metadados do sistema. Ela ter a funo de camada de
persistncia para as demais camadas, sendo uma plataforma para as outras camadas armazenarem
dados e metadados. Os dados armazenados na camada de servios bsico so tuplas chave-valor.
Os valores so salvos de forma bruta, como um stream de bytes, sem haver qualquer anlise ou
semntica associada. Acima da camada de servios bsicos, encontra-se a camada de servios
38
4.2.2
39
40
A representao da camada de servios desejveis no est completa, os servios representados so apenas algumas das possibilidades de novos servios que se pode implementar na
plataforma de cloud storage. Cada servio representado pode vir a ser um sistema completo que
pode ser integrado com o ecossistema da nuvem de armazenamento. Eis alguns exemplos de
servios desejveis:
Como especificado anteriormente, essa lista no exaustiva, nem tem esse objetivo. As possibilidades de se implementar novos servios so ilimitadas.
41
4.3
Uma vez que foi exposto como os servios esto organizados e e relacionados entre si,
sero mostradas as vises arquiteturais do sistema, iniciando por uma viso geral da arquitetura,
para posteriormente, se apresentar cada componente da arquitetura com maior riqueza de
detalhes.
A Figura 4.3 mostra o diagrama de estrutura composta da arquitetura. Ela dividida em dois
mdulos. O primeiro o mdulo de armazenamento bsico, que foi apresentado com a primeira
camada de servios do sistema. Ela composta por uma DHT e prov uma interface para o
armazenamento de dados, e outra para o armazenamento de metadados. Na segunda camada,
42
servios que exigirem mais recursos podem ser replicados. Este um benefcio da utilizao
43
do paradigma SOA. Sendo cada servio stateless1 , possvel replic-los para ter uma melhor
escalabilidade.
4.4
stateless so aqueles que no guardam qualquer informao sobre o cliente conectado. Geralmente
seu fluxo composto por uma requisio oriunda do cliente acompanhada de uma resposta do servidor, sem que o
servidor guarde em memria qualquer informao sobre o cliente.
44
45
46
4.5
47
48
Na camada abaixo da fachada, est o controller. O controller responsvel por toda a lgica do
servio, incluindo as regras de negcio. Essa a parte mais complexa da implementao de um
servio.
Mais abaixo, est a camada de acesso a dados, o DAO (Data Access Object). No nosso caso, o
DAO utiliza tanto o servio de armazenamento de dados para incluir, modificar e excluir objetos,
como o servio de controle de acesso para decriptar objetos protegidos pelo sistema atravs da
chave do usurio.
A incluso de um objeto no sistema feito por meio das seguintes etapas: o objeto serializado
e transformado num stream de bytes ou caracteres, caso necessrio, o servio de controle de
acesso encripta esses dados. Finalmente esses dados so associados com um identificador nico
e inserido no armazenamento bsico.
A Figura 4.10 mostra a viso de diagrama de classes da camada de Servios Importantes,
mostrando as principais operaes de cada controller. Tambm possvel observar que todos
os controllers tm acesso ao armazenamento de metadados. Alm disso, o chunk controller o
nico controller que utiliza o servio de armazenamento de dados.
49
4.6
Modelo de Dados
4.7
Segurana
50
4.7. SEGURANA
51
4.8. CONCLUSO
Quando um novo usurio se registra, a partir da senha fornecida pelo usurio, gerada uma
chave para o usurio que s pode ser recuperada a partir dessa senha do usurio.
Opcionalmente, o usurio ou administrador do sistema pode optar, que essa senha seja armazenada para o caso de posterior recuperao de senha. Nesse caso, a senha cifrada com uma
chave baseada na senha do administrador do sistema.
Ao incluir os metadados do usurio no sistema, eles so cifrados utilizando a chave do usurio,
logo, s podero ser reabertos atravs da senha do mesmo.
A partir da, para cada arquivo ou diretrio enviado para o sistema, gerada uma chave para
aquele arquivo. Os metadados desse arquivo ento so cifrados de modo que eles possam ser
abertos a partir de uma dessas trs chaves: a chave do usurio, a chave do prprio arquivo ou
pela chave do diretrio que contm aquele arquivo ou diretrio. Esse recurso ser utilizado mais
frente para o compartilhamento.
Quando o usurio troca de senha, seus arquivos devero ser encriptados novamente com a chave
gerada pela nova senha. Este processo dever ser feito em batch, podendo o usurio ter alguns
arquivos indisponveis nesse intervalo.
No compartilhamento, o usurio utiliza a chave pblica do usurio que receber o compartilhamento, e gera o compartilhamento daquele arquivo. Uma vez que um usurio que recebeu o
compartilhamento de um diretrio, possvel navegar nele, pois a partir da chave de um diretrio,
possvel acessar todos os arquivos ou diretrios nele contidos.
Quando o usurio revoga o acesso ao arquivo ou diretrio, aquele compartilhamento removido,
e o usurio no ter meios mais para desencriptar aquele arquivo.
Somado ao esquema de criptografia que foi descrito acima, tambm importante registrar
todas as aes dos usurios. Ao requisitar um arquivo ou fazer qualquer modificao nos seus
metadados, as aes do usurio so registradas pelo servio de controle de acesso.
4.8
Concluso
Neste captulo, foi mostrada toda a arquitetura para um sistema de backup e sincronizao
de arquivos em nuvem. Daqui em diante, esse trabalho ser validado a partir de uma avaliao
de arquitetura cuja metodologia e resultados sero apresentados no prximo captulo.
52
5
Avaliacao da Arquitetura
No captulo anterior, foi descrita a arquitetura desenvolvida a partir dos direcionadores
de negcios apresentado no captulo 3. Neste captulo, ser feito uma validao dessa arquitetura
utilizando uma metodologia de avaliao que foi desenvolvida para resolver o problema de
avaliao em uma equipe distribuda geograficamente e com horrios diferentes.
5.1
53
5.2
5.3
Ameaas validao
54
5.4
Metodologia de avaliao
A metodologia utilizada foi encontrada em Tomas (2014). Essa metodologia foi baseada
nas metodologias SAAM e ATAM, adaptando-se s necessidades de uma equipe remotamente
distribuda. Nessa metodologia, tambm foram combinadas algumas etapas das metodologias
SAAM e ATAM.
A primeira etapa do mtodo, contextualizar toda equipe de como ser conduzido o processo de
avaliao arquitetural. Toda a metodologia deve ser apresentada, principalmente no que se refere
aos artefatos gerados em cada etapa.
Aps isso, so apresentados os business drivers para nivelar o conhecimento da equipe no tocante
as regras de negcio e atributos de qualidades relevantes para o domnio do mesmo.
A prxima etapa a apresentao da arquitetura propriamente dita. O arquiteto deve apresentar a
arquitetura de forma que todos os participantes a entendam, principalmente as regras de negcio,
como tambm interao entre os mdulos e o ciclo de vida dos componentes.
Uma vez apresentada a arquitetura, deve-se priorizar os atributos de qualidade para o negcio
cujo problema a arquitetura se prope a resolver. Sugere-se que o arquiteto sugira uma lista
pr-selecionada de atributos que possam ser empregados, e da se possa eleger os principais
atributos de qualidade.
Em seguida, deve-se contextualizar a equipe do conceito de cenrios. Um cenrio uma situao
em que a arquitetura deve suportar. Cenrios podem ser de casos de uso, cujo cenrio baseado
em uma situao que pode ocorrer devido interao do usurio com o sistema, ou exploratrio,
quando fatores ou mudanas externas causam algum impacto sobre a arquitetura.
Aps isso, a equipe dever propor os cenrios que podero ser utilizado na arquitetura. Em
uma situao remota, como a dessa avaliao, isso pode ser feito com o compartilhamento de
documentos.
Finalmente, os cenrios mais relevantes so selecionados e analisada a interao dos cenrios
com os atributos de qualidade para que se tenha os resultados da avaliao
5.5
55
No primeiro vdeo foi explicada a metodologia que seria conduzida a partir dali. Tambm
foi apresentada a norma ISO/IEC 25010.2 (ISO/IEC, 2010) que seria utilizada como lista dos
atributos de qualidade que seriam utilizados.
No segundo vdeo, foi feita uma anlise dos drivers de negcio de cloud storage e backup de
arquivos, mostrando as principais vantagens e desvantagens, restries e requisitos.
Foi feita uma anlise dos atributos de qualidades que poderiam contribuir para as vantagens ou
amenizar as desvantagens. Com a ajuda da equipe de avaliao, foram definidos os principais
atributos de qualidade, que foram apresentados no Captulo 3.
Finalmente, foi feito um vdeo apresentando a arquitetura proposta no Captulo 4. Mostrando as
principais vises das duas camadas.
Aps isso, cada participante, em seu tempo disponvel, assistiu a cada um dos vdeos e numa
planilha compartilhada com o arquiteto, colocou cenrios possveis que poderiam ser utilizados
para avaliar a arquitetura proposta. Os participantes foram incentivados a escrever qualquer ideia,
mesmo que o mesmo no a entendesse como relevante.
Finalmente, foi feita uma anlise de como seria a interao entre os cenrios e as arquiteturas, e
suas consequncias com os atributos de qualidade.
5.6
Nesta seo, mostraremos os cenrios que foram priorizados, assim como o resultado
terico para cada interao entre cenrio e a arquitetura proposta. Dos cenrios propostos, alguns
foram removidos por se tratar de cenrios que envolvem servios que no esto no escopo deste
trabalho (por exemplo, busca e deduplicao). Segue a lista de cenrios com sua respectiva
avaliao:
1. Troca de senha
Descrio: Imaginando um usurio X trocando sua senha, todos seus arquivos sero
reencriptados em batch, o que acarretar na reencriptao de todos os chunks e na
re-replicao desses chunks, causando um overhead na rede ou de processador
Atributos de qualidade: Utilizao de recursos, comportamento temporal
Resultado: Nesta situao a arquitetura responde mal. Se o usurio tiver um nmero
muito grande de arquivos ou um nmero grande de usurios trocar de senha, o sistema
ir consumir uma grande quantidade de recursos de cpu e banda.
2. Cache de memria
Descrio: Devido a constante replicao e pedidos de restore, os peer de dados
poderiam manter um cache em memria dos chunks mais acessados, ou at mesmo
fazer um cache de escrita
Atributos de qualidade: Utilizao de recursos, comportamento temporal
Resultado: Como especificado anteriormente, cada n de armazenamento possui
56
57
5.7
7. Falha em discos
Descrio: Mquina que contem a base de metadados tem o contedo do disco
corrompido.
Atributo de qualidade: Tolerncia a falhas
Resultado: Na arquitetura no existe um servidor central de metadados. Todos os
dados so armazenado numa DHT. Se um n da DHT falha, existem rplicas que nos
ajudam a recuperar esses dados. Logo, esse cenrio totalmente atendido.
8. Mudanas na camada de comunicao
Descrio: Existe uma necessidade de se utilizar um novo prococolo ou framework
de comunicao
Atributos de qualidade: Adaptabilidade, modificabilidade
Resultado: O paradigma SOA independente da camada de comunicao. Ser
necessrio implementar um novo barramento de servios utilizando o novo protocolo
e esse cenrio ser atendido.
9. Mudana no servio de autenticao
Descrio: Exigncia de um novo modelo de autenticao (por exemplo: um Active
Directory)
Atributos de qualidade: Adaptabilidade, modificabilidade
Resultado: Ser necessrio modificar o servio de autenticao para se comunicar
com esse servio ao invs de utilizar os metadados do sistema. Uma vez que o usurio
seja autenticado pelo sistema externo, o funcionamento do sistema mantido.
10. Mudana na forma de armazenamento
Descrio: Exigncia de um SGBD especfico para se armazenar os dados e/ou
metadados.
Atributos de qualidade: Adaptabilidade, modificabilidade
Resultado: Uma limitao tcnica desse tipo de exigncia que ao se optar por um
banco relacional no ser possvel manter a disponibilidade e tolerncia a partio
por conta do que foi declarado no teorema de Brewer. Porm, possvel substituir
ou modificar o componente de armazenamento de dados ou metadados para que se
possa utilizar o SGBD fornecido.
58
5.8. CONCLUSO
de forma alguma.
Como pode-se observar na Tabela 5.1, que mostra os resultados consolidados, trs cenrios foram
atendidos totalmente. Enquanto seis desses foram atendidos parcialmente, ou seja, necessitam de
pequenas modificaes na arquitetura, nas quais a maioria delas, pode ser feita, aps a arquitetura
implementada. E finalmente, um cenrio no foi atendido.
Como recomendao da avaliao, necessrio se pensar um esquema criptogrfico mais
eficiente, que mantenha a segurana e no torne arquivos indisponveis.
Finalmente, podemos considerar que a arquitetura respondeu bem avaliao, com uma ressalva,
que foi em relao ao esquema de criptografia. Atributos de qualidade como escalabilidade,
adaptabilidade, utilizao de recursos e segurana responderam bem aos estmulos da avaliao.
5.8
Concluso
59
6
Concluso
Apesar de um item falho, ao longo de todo o trabalho, foi possvel projetar uma arquitetura elstica, escalvel e segura para um sistema de Cloud Storage.
Neste captulo, sero apresentadas as concluses que puderam ser tiradas ao longo de todo o
desenvolvimento desse trabalho.
6.1
Principais Concluses
Ao longo deste trabalho, foi possvel, estudar as tecnologias envolvidas com Cloud
Computing e Cloud Storage, para atravs desse estudo, conseguirmos fazer um levantamento
dos principais direcionadores de requisitos, incluindo vantagens, desvantagens, atributos de
qualidades e requisitos.
A partir dos requisitos e atributos de qualidade, foi projetada uma arquitetura, rica em detalhes,
que se prope a resolver o problema de armazenamento de arquivos em nuvem. Esta arquitetura
foi guiada por decises arquiteturais, que foram justificadas e serviram como base para todo o
projeto arquitetural.
Finalmente, foi executada uma avaliao de arquitetura, que utilizou uma metodologia baseada
em SAAM e ATAM, adaptada para as peculiaridades da equipe de avaliao. Apesar, de ter sido
apontado um problema no projeto, podemos dizer que a arquitetura respondeu bem avaliao.
Aps o trmino deste trabalho, as principais concluses foram observados:
60
6.2. CONTRIBUIES
6.2
Contribuies
As principais contribuies deixadas por esse trabalho foram:
6.3
Uma analise dos direcionadores do negcio 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 avaliao para ser utilizada por equipes geograficamente distribudas e com disponibilidade de tempo incompaties.
Trabalhos Futuros
Algumas possibilidades para novos trabalhos a partir deste:
61
References
Aljabre, A. (2012). Cloud computing for increased business value. International Journal of
Business and Social Science.
Amazon (2014a). Amazon elastic computing cloud - hospedagem escalonvel em nuvem.
http://aws.amazon.com/pt/ec2/. Acesso em: 15 jun. 2014.
Amazon (2014b). Amazon web services (aws) - servios de computao em nuvem.
http://aws.amazon.com/pt/. Acesso em: 15 jun. 2014.
Babar, M. and Gorton, I. (2009). Software architecture review: The state of practice. Computer,
42(7), 2632.
Balakrishnan, H., Kaashoek, M. F., Karger, D., Morris, R., and Stoica, I. (2003). Looking up
data in p2p systems. Commun. ACM, 46(2), 4348.
Bohn, R. B., Messina, J., Liu, F., Tong, J., and Mao, J. (2011). Nist cloud computing reference
architecture. In Proceedings of the 2011 IEEE World Congress on Services, SERVICES 11,
pages 594596, Washington, DC, USA. IEEE Computer Society.
Brownbridge, D. R., Marshall, L. F., and Randell, B. (1982). The newcastle connection or
unixes of the world unite! Softw., Pract. Exper., 12(12), 11471162.
Boch, P. (2012). Distributed file systems: The state of the art and concept of ph.d. thesis.
Technical report, Universisy of West Bohemia.
Calder, B., Wang, J., Ogus, A., Nilakantan, N., Skjolsvold, A., McKelvie, S., Xu, Y., Srivastav,
S., Wu, J., Simitci, H., Haridas, J., Uddaraju, C., Khatri, H., Edwards, A., Bedekar, V., Mainali,
S., Abbasi, R., Agarwal, A., Haq, M. F. u., Haq, M. I. u., Bhardwaj, D., Dayanand, S.,
Adusumilli, A., McNett, M., Sankaran, S., Manivannan, K., and Rigas, L. (2011). Windows
azure storage: A highly available cloud storage service with strong consistency. In Proceedings
of the Twenty-Third ACM Symposium on Operating Systems Principles, SOSP 11, pages
143157, New York, NY, USA. ACM.
Chellappa, R. (1997). Intermediaries in Cloud-Computing: A New Computing Paradigm.
INFORMS.
Cruz, F. d. (2004). Herb grosch.
http://www.columbia.edu/cu/computinghistory/grosch.html. Acesso
em: 14 jun. 2014.
Dalakovi, G. (2014a). Joseph licklider.
http://history-computer.com/Internet/Birth/Licklider.html. Acesso
em: 15 jun. 2014.
Dalakovi, G. (2014b). Lisp of josh mccarthy.
http://history-computer.com/ModernComputer/Software/LISP.html.
Acesso em: 15 jun. 2014.
62
REFERENCES
DeCandia, G., Hastorun, D., Jampani, M., Kakulapati, G., Lakshman, A., Pilchin, A.,
Sivasubramanian, S., Vosshall, P., and Vogels, W. (2007). Dynamo: Amazons highly available
key-value store. In Proceedings of Twenty-first ACM SIGOPS Symposium on Operating Systems
Principles, SOSP 07, pages 205220, New York, NY, USA. ACM.
Dropbox (2014). Dropbox. http://www.dropbox.com. Acesso em: 15 jun. 2014.
Duro, F., Assad, R., Fonseca, A., Fernando, J., Garcia, V., and Trinta, F. (2013). Usto.re: A
private cloud storage software system. In Proceedings of the 13th International Conference on
Web Engineering, ICWE13, pages 452466, Berlin, Heidelberg. Springer-Verlag.
e HuiMin Zhang, X. Y. (2012). Cloud computing and soa convergence research. In
Computational Intelligence and Design (ISCID), 2012 Fifth International Symposium on,
volume 1, pages 330335.
ENISA (2009). Cloud computing: benefits, risks and recommendadtions for information
security. https://www.enisa.europa.eu/activities/risk-management/
files/deliverables/cloud-computing-risk-assessment/at_download/
fullReport. Acesso em: 2 jul. 2014.
Erl, T. (2009). SOA Design Patterns. Prentice Hall PTR, Upper Saddle River, NJ, USA, 1st
edition.
Gantz, J. and Reinsel, D. (2011). Extracting value from chaos state of the universe : An
executive summary. Technical report, EMC.
Garcia-Molina, H. and Salem, K. (1992). Main memory database systems: An overview. IEEE
Trans. on Knowl. and Data Eng., 4(6), 509516.
Ghemawat, S., Gobioff, H., and Leung, S.-T. (2003). The google file system. In Proceedings of
the Nineteenth ACM Symposium on Operating Systems Principles, SOSP 03, pages 2943, New
York, NY, USA. ACM.
Gilbert, S. and Lynch, N. (2002). Brewers conjecture and the feasibility of consistent, available,
partition-tolerant web services. SIGACT News, 33(2), 5159.
Google (2014). Google drive.
http://www.google.com/intl/pt-BR/drive/index.html. Acesso em: 13 jul.
2014.
Grossman, R. (2009). The case for cloud computing. IT Professional, 11(2), 2327.
ISO/IEC (2010). ISO/IEC 25010 - Systems and software engineering - Systems and software
Quality Requirements and Evaluation (SQuaRE) - System and software quality models.
Technical report.
Jansen, A. and Bosch, J. (2005). Software architecture as a set of architectural design decisions.
In Software Architecture, 2005. WICSA 2005. 5th Working IEEE/IFIP Conference on, pages
109120.
Jiang, W., Zhang, L., Qiang, W., Jin, H., and Peng, Y. (2012). Mystore: A high available
distributed storage system for unstructured data. In High Performance Computing and
Communication 2012 IEEE 9th International Conference on Embedded Software and Systems
(HPCC-ICESS), 2012 IEEE 14th International Conference on, pages 233240.
63
REFERENCES
Josuttis, N. (2007). Soa in Practice: The Art of Distributed System Design. OReilly Media, Inc.
JSON (2014). Introducing json. http://json.org. Acesso em: 7 ago. 2014.
Katsov, I. (2012). Nosql data modeling techiniques. http://highlyscalable.
wordpress.com/2012/03/01/nosql-data-modeling-techniques/. Acesso
em: 7 ago. 2014.
Khajeh-Hosseini, A., Greenwood, D., Smith, J. W., and Sommerville, I. (2012). The cloud
adoption toolkit: Supporting cloud adoption decisions in the enterprise. Softw. Pract. Exper.,
42(4), 447465.
Kubiatowicz, J., Bindel, D., Chen, Y., Czerwinski, S., Eaton, P., Geels, D., Gummadi, R., Rhea,
S., Weatherspoon, H., Weimer, W., Wells, C., and Zhao, B. (2000). Oceanstore: An architecture
for global-scale persistent storage. SIGPLAN Not., 35(11), 190201.
Machado, M. A. S. (2013). Uma Abordagem para Indexao e Buscas Full-Text Baseadas em
Contedo em Sistemas de Armazenamento em Nuvem. Masters thesis, Universidade Federal de
Pernambuco.
Maranzano, J., Rozsypal, S., Zimmerman, G., Warnken, G., Wirth, P., and Weiss, D. M. (2005).
Architecture reviews: practice and experience. Software, IEEE, 22(2), 3443.
Marston, S., Li, Z., Bandyopadhyay, S., and Ghalsasi, A. (2011). Cloud computing - the
business perspective. In System Sciences (HICSS), 2011 44th Hawaii International Conference
on, pages 111.
Mell, P. and Grance, T. (2011). The nist definition of cloud computing. Technical Report
800-145, National Institute of Standards and Technology (NIST), Gaithersburg, MD.
Microsoft (2014). Microsoft one drive. http://onedrive.live.com. Acesso em: 13 jul.
2014.
Novell (2014). Netware core protocols.
http://www.novell.com/developer/ndk/netware_core_protocols.html.
Acesso em: 15 jun. 2014.
Oliveira, E. M. (2014). Vantagens e desvantagens de soa. http:
//www.devmedia.com.br/vantagens-e-desvantagens-de-soa/27437#.
Acesso em: 27 jul. 2014.
Parkhill, D. F. (1966). The challenge of the computer utility. Addison-Wesley Professional,
USA.
Patterson, D. A., Gibson, G., and Katz, R. H. (1988). A case for redundant arrays of inexpensive
disks (raid). In Proceedings of the 1988 ACM SIGMOD International Conference on
Management of Data, SIGMOD 88, pages 109116, New York, NY, USA. ACM.
Rodrigues, R. B. (2014). RecCloud: Um Modelo de Recomendao para Sistemas de
Armazenamento em Nuvem. Masters thesis, Universidade Federal de Pernambuco.
Salesforce (2000). Crm e cloud computing para crescer seu negcio - salesforce.com brasil.
http://www.salesforce.com/br. Acesso em: 15 jun. 2014.
64
REFERENCES
Sandberg, R. (1986). The sun network file system: Design, implementation and experience.
Technical report, in Proceedings of the Summer 1986 USENIX Technical Conference and
Exhibition.
Sandhu, R. and Samarati, P. (1994). Access control: principle and practice. Communications
Magazine, IEEE, 32(9), 4048.
Security, H. N. (2013). A closer look at mega cloud storage.
http://www.net-security.org/secworld.php?id=14938. Acesso em: 5 jul.
2014.
Shivakumar, S. (2014). Thought floor: A walk in the clouds (pt 1).
http://www.infosysblogs.com/thought-floor/2012/02/a_walk_in_
the_clouds_part_1.html. Acesso em: 8 ago. 2014.
Silva, F. A. P. (2013). Monext: An Accounting Framework for Federated Clouds. Masters
thesis, Universidade Federal de Pernambuco.
SNIA (2013). Implementing, serving, and using cloud storage.
http://snia.org/sites/default/files/Implementing_Serving_and_
Using_The_Cloud-Nov_2013.pdf. Acesso em: 15 jun. 2014.
SNIA (2014). What is a storage area network. http:
//www.snia.org/education/storage_networking_primer/san/what_san.
Acesso em: 15 jun. 2014.
Soares, P. F. A. S. (2013). Dedupeer: Deduplicao de Arquivos Atravs de um Algoritmo de
Processamento Particionado. Masters thesis, Universidade Federal de Pernambuco.
Sommerville, I. (2007). Software Engineering. Addison Wesley, 8 edition.
Subashini, S. e Kavitha, V. (2011). A metadata based storage model for securing data in cloud
environment. In Cyber-Enabled Distributed Computing and Knowledge Discovery (CyberC),
2011 International Conference on, pages 429434.
Sugarsync (2014). File sharing, online backup and cloud storage from any device - sugar sync.
http://www.sugarsync.com. Acesso em: 13 jul. 2014.
Tomas, G. H. R. P. (2014). Uma arquitetura para Cidades Inteligentes Baseada na Internet das
Coisas. Masters thesis, Universidade Federal de Pernambuco, Recife.
65
Apndice
66
A
Matriz Vantagens e Desvantagens x QAs
67
Acesso
ubquo
Adequao
Preciso
Disponibilidade
1
Tolerncia a falhas
Recuperabilidade
Comportamento
temporal
Utilizao de recursos
Reconhecimento
de adequao
Apreensibilidade
Facilidade de uso
Prestatividade
Atratividade
Acessibilidade
tcnica
Confidencialidade
Integridade
No-repdio
Responsabilidade
Autenticidade
Susbtituidade
Coexistncia
Interoperabilidade 1
Modularidade
Reusabilidade
Analisabilidade
Modificabilidade
Estabilidade de
modifcao
Testabilidade
Portabilidade
Adaptabilidade
Instalabilidade
Reduo
de
custos
Habilidade Efetet.
de
comcresciputamento
cional
sob demanda
Escalab.
Conc. de
recursos
1
1
0
0
2
1
0
1
3
0
0
0
0
0
2
0
0
0
0
0
1
0
1
1
1
1
1
1
1
1
1
1
1
1
1
1
Table A.1: Matriz Vantagens x QAs
1
1
1
1
1
1
1
3
3
2
68
Perda
govern.
Adequao
Preciso
Disponibilidade
Tolerncia a falhas
Recuperabilidade
Comportamento
temporal
Utilizao de recursos
Reconhecimento
de adequao
Apreensibilidade
Facilidade de uso
Prestatividade
Atratividade
Acessibilidade
tcnica
Confidencialidade
Integridade
No-repdio
Responsabilidade
Autenticidade
Susbtituidade
Coexistncia
Interoperabilidade
Modularidade
Reusabilidade
Analisabilidade
Modificabilidade
Estabilidade de
modifcao
Testabilidade
Portabilidade
Adaptabilidade
Instalabilidade
Vinc.
Servio
Segurana Dep.
conect.
Indis.
servios
Comp.
de
recursos
1
1
0
0
1
1
1
1
1
1
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
1
1
1
1
1
1
3
1
3
3
3
1
1
1
0
0
1
0
0
0
0
0
0