Professional Documents
Culture Documents
por
Jose de Arimatea Rocha Neto
Trabalho de Graduacao
GRADUAC
AO
DA COMPUTAC
AO
www.cin.ufpe.br
GRADUAC
AO
DA COMPUTAC
AO
tro de Informatica
da Universidade Federal
de Pernambuco, como requisito parcial para
do grau de Bacharel em Ciencia
a obtencao
da Computacao.
Orientador: Vincius Cardoso Garcia
Albert Einstein
Agradecimentos
e paciencia.
Agradeco aos meus amigos pelo incentivo e apoio durante toda a graduacao.
Agradeco ao meu orientador Vincius Garcia pela sua disponibilidade e por todo o apoio
fornecido.
fornecidos
Agradeco a todos os professores do CIn por todo o conhecimento e dedicacao
durante o curso.
Resumo
Nos ultimos
anos o modelo de entrega de software como servico, ou Software as a Ser
Palavras-chave: Multi-Tenancy, Multi-Tenant, Software as a Service, open source, Arquitetura de software, Django.
Abstract
In recent years the Software as a Service (SaaS) model came bringing more flexible and
reusable software. This model provides support for multiple users on the same configurable infrastructure by offering features on demand. Multi-Tenancy is an organizational
approach of Software as a Service (SaaS). Some characteristics of a multi-tenant architecture are: the capability to share hardware and database resources and a high degree
of configurability. Additionally, the use of this architecture brings benefits. Some of them
are: better use of hardware resources, simpler and cheaper application maintenance and
reduction of the system global costs. Based on the architectural characteristics, this paper
proposes an open source library that facilitates the development of multi-tenant projects
on Django framework. Thus, the developers can focus on the business rules and less on
the architecture that is already implemented by the library.
iii
Sumario
1 Introducao
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.1 Motivacao
1.2 Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
do Trabalho . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.3 Organizacao
2 Referencial Teorico
em Nuvem . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.1 Computacao
. . . . . . . . . . . . . . . . . . . . . . . . 10
3 Multi-Tenancy
17
3.3.4 Manutencao
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.3.5 Disponibilidade 24/7 . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.4 Vantagens X Desvantagens . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.4.1 Vantagens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.4.2 Desvantagens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.5 Consideracoes
4 Trabalhos Correlatos
29
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
4.2 Customizacao
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
4.3 Autenticacao
4.4 Consideracnoes Finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
vi
5.2 Customizacao
32
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
39
e trabalhos futuros
7 Conclusao
46
vii
Lista de Tabelas
de Cloud Computing. Adaptada de [29] . . . . . . . . . . . . . .
2.1 Definicoes
viii
Lista de Figuras
2.1 Network Cloud [33] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ix
. . . . . . . . . . . . . . . . . . . . . . . . 45
Captulo 1
Introducao
para a realizacao
deste trabalho, os objeNeste captulo sera apresentada a motivacao
tivos esperados e como este trabalho esta estruturado, a fim de facilitar o entendimento
do leitor.
1.1
Motivacao
tipos de negocio
[34]. Por isso, esta tecnologia vem sendo amplamente utilizada por
diversas organizacoes.
em Nuvem, empresas
De acordo com o estudo de Samorani [34], com a Computacao
diminuindo
em diversos setores, tanto de grande porte como de pequeno porte, vem
seus custos, principalmente na infraestrutura, ao investir nos servicos de TI. Esta tecno
logia permite que empresarios
e empreendedores estabelecam a infraestrutura de seus
negocios
com um custo muito reduzido quando comparado aos investimentos feitos an
tes do seculo
XXI.
em
Segundo o National Institute of Standards and Technology (NIST), a Computacao
modelos de servico: Software como Servico (SaaS),
Nuvem pode ser dividida em tres
1. Introducao
vendidos com um
periencia
rica em recursos. Geralmente, os aplicativos SaaS sao
modelo de assinatura onde os clientes pagam uma taxa contnua para uso do aplicativo. O SaaS oferece oportunidades a empresas de todos os portes de diminuir os riscos
de software.
na aquisicao
Aplicacao
de banco de dados compartilhados.
Para Kabbedijk, Jaap, et al. [18], Multi-Tenancy e uma propriedade de um sistema onde
varios
clientes, tambem
bancos de dados, entre outros. Assim, e possvel tanto reduzir custos, como ser capaz de
configurar os sistemas voltados para as necessidades dos inquilinos.
Um ambiente Multi-Tenancy prove benefcios como [2]:
dos recursos de hardware;
Maior utilizacao
da aplicacao
torna-se mais facil
de ser realizada e mais barata;
Manutencao
Custos globais reduzidos, permitindo oferecer um servico com menor custo quando
comparado aos concorrentes.
1. Introducao
exemplificar esse crescimento, vemos que projetos como Google, YouTube, Instagram,
DropBox, Reddit, Pinterest e Spotify vem usando Python e Django na sua stack de desenvolvimento [12] [16].
1.2
Objetivos
1.2.1
Objetivos Gerais
O objetivo desta pesquisa e criar uma biblioteca open source que possa transformar projetos desenvolvidos em Django em um projeto Multi-Tenant. Com isso, desenvolvedores
que utilizem o framework podem adotar a arquitetura Multi-Tenant como recurso para
logica
da arquitetura Multi-Tenant por conta da biblioteca.
1.2.2
Objetivos Especficos
implementacao
Fazer um comparativo das vantagens e das desvantagens de usar essa arquitetura;
Investigar e propor uma biblioteca Multi-Tenant para o framework Django;
1.3
do Trabalho
Organizacao
descritos abaixo:
introducao
seis captulos estao
1. Introducao
No Captulo 7 sao
finais do trabalho assim como as
propostas para trabalhos futuros;
Captulo 2
Referencial Teorico
mesmo.
2.1
em Nuvem
Computacao
referentes a` Computacao
em Nuvem remetem a` origem da Utility
As primeiras citacoes
no Massachusetts InstiComputing, proposta por John McCarthy em sua apresentacao
tute of Technology (MIT) no ano de 1961. Segue uma passagem desta, emitida no jornal
do MIT [11] em 1999:
2. Referencial Teorico
6
If computers of the kind I have advocated become the computers
of the future, then computing may someday be organized as a
public utility just as the telephone system is a public utility. ... The
computer utility could become the basis of a new and important
industry.
da transcomunicacoes.
Network Cloud era o nome dado a uma camada de abstracao
ferencia
de dados entre provedor e cliente [10], como pode ser visto na Figura 2.1.
existe
Por remeter a varias
tecnologias diferentes ao longo da historia,
atualmente nao
oficial de Cloud Computing. Dessa forma, e necessario
uma definicao
fazer um estudo
de diversas definicoes
diferentes para se chegar na mais adequada. Em seu trabalho,
area
[37], como pode ser visto na Tabela 2.1.
2. Referencial Teorico
Autor
Definicao
M. Klems
P. Gaw
Uso da internet para permitir pessoas acessarem servicos tecnologicamente disponveis. Esses servicos precisam ser massivamente es
calaveis.
R. Buyya
uma colecao
dinamicamente
provisionados e apresentados como um ou mais recur
sos computacionais unificados, baseados em SLA estabelecida atraves
entre o provedor de servico e o consumidor.
de negociacao
R. Cohen
ting e descreve-la
como Software centrado na Internet.
J. Kaplan
utilitaria
e a realizacnao de ideias
antigas de computacao
sem a comple
de deployments complicados.
xidade tecnica
ou preocupacao
D. Gourlay
... o proximo
termo para campanhas publicitarias
... criado fora do modelo
habilitou.
de software que a virtualizacao
D. Edwards
B. de Haff
B. Kepes
Simplificando, Cloud Computing e uma mudanca de paradigma de infraes de software como servico ... E uma gama
trutura que habilita a ascencao
2. Referencial Teorico
K. Sheynkman
K. Harting
J. Pritzker
T. Doerkzen
usuario.
T. Von Eicken
M. Sheedan
a piramide
de cloud computing ajuda a diferenciar as varias
ofertas de
cloud... no topo: SaaS, no meio: PaaS, na base: IaaS.
A. Ricadela
I. Wladawsky Berger
B. Martin
R. Bragg
desenvolvida e confiavel.
Muitos acham barato migrar agora para uma
de investir em seus proprios
utilitaria,
na
Cloud e toda sobre: SaaS ... computacao
PaaS ... integracao
internet ... plataformas comerciais.
P. McFedries
2. Referencial Teorico
2.1.1
Caractersticas Essenciais
de Computacao
em
Como ja foi falado anteriormente, de acordo com o NIST, a definicao
elas:
Nuvem e composta por cinco caractersticas essenciais [25]. Sao
Elasticidade rapida:
Recursos podem ser alterados, configurados e liberados rapi
damente, e em alguns casos isso pode ser feito de forma automatica.
Dessa forma
o cliente pode escalar o sistema rapidamente de acordo com sua demanda;
dos recursos e controlada e otimizada auto do servico: A utilizacao
Medicao
maticamente. Dessa forma, tanto o cliente como o provedor podem monitorar e
2. Referencial Teorico
2.1.2
10
Modelos de Servico
do NIST, a Computacao
em Nuvem e composta por tres
a aplicacao
acessveis de varias
estao
maneiras, como por exemplo um navegador ou a interface de um sistema;
ao consumidor a capacidade de
Plataforma como um Servico (PaaS): Provem
na infraestrutura da Nuvem do provedor. O consufazer deploy de suas aplicacoes
controla recursos como rede, servidores, sistema operacionais e armamidor nao
e pode ter controle sobre as
zenamento, mas tem total controle sobre a aplicacao
do sistema;
configuracoes
ao consumidor a capacidade de
Infraestrutura como um Servico (IaaS): Provem
com a rede e outros recurprovisionar processamento, armazenamento, conexoes
sos computacionais fundamentais.
2.1.3
Modelos de Implantacao
modelos de implantacao
do
Por ultimo,
o NIST define Cloud Computing como tendo tres
eles:
servico [25]. Sao
Nuvem privada: A infraestrutura e provisionada para ser usada por uma unica
que contem
varios
organizacao
clientes;
Nuvem comunitaria:
A infraestrutura e provisionada para ser usada por um grupo
que compartilham recursos;
especfico de clientes de organizacoes
Nuvem publica:
2. Referencial Teorico
11
2.2
atual de Computacao
em Nuvem tem tres
modelos de negocio,
A definicao
como citado
eles: SaaS, PaaS e IaaS. Entretanto, em uma definicao
mais simples,
anteriormente, sao
da
Amazon S3 [15], um dos provedores de plataformas de Software as a Service. Alem
plataforma da Amazon, existem outros provedores de SaaS como Google, Salesforce,
Heroku e Digital Ocean.
2. Referencial Teorico
12
propria
instancia
personalizada do aplicativo e cada uma delas e completamente
unica
instancia
do sistema, mas que pode ser configurada por cada cliente, for
disso,
necendo uma experiencia
de usuario
distinta para cada um deles. Alem
e seguranca garantem a separacao
dos dados e nao
ha
polticas de autorizacao
de que os clientes estejam compartilhando a mesma aplicacao.
qualquer indicacao
2. Referencial Teorico
13
de configuracao
do usuario
unica
para
o quarto, ou mais maduro, seja o foco para todos os sistemas. Deve-se analisar varios
como o modelo de negocio,
aspectos da aplicacao,
a arquitetura do sistema e o modelo
operacional, para a partir da definir qual o nvel de maturidade mais adequado para o
software. Como o foco desse trabalho e a arquitetura Multi-Tenant, o modelo abordado
2.3
Django
2. Referencial Teorico
14
tenham conexao
e o princpio de nao
se repetir [14].
o reuso de codigo,
o desenvolvimento agil
Django surgiu no ano de 2003, quando Adrian Holovaty e Simon Willison, ate entao
desenvolvedores do jornal Lawrence Journal-World, comecaram a utilizar Python para
desenvolver aplicacoes
Web. Em 2006, o framework foi nomeado em homenagem ao
da licenca BSD [14].
musico
Django Reinhardt e disponibilizado publicamente atraves
2.3.1
Arquitetura do Framework
Caso a pagina
requisitada esteja na cache dos sistema, o proximos
passos nao
executados [14];
serao
Python que executa a acao
requisitada, que tipicamente en View: E uma funcao
de poder ter outras funcionalidades
volve ler ou escrever no banco de dados, alem
[14];
responsavel
Model: E
por definir os dados em Python e interagir com os mesmos.
Apesar de geralmente trabalhar com bancos de dados relacionais, ha a possibili relacionais [14];
dade de se usar outras abordagens como bancos nao
das paginas
disso, os templates
Template: Responsavel
pela geracao
HTML. Alem
extra a fim de prover toda a logica
necessaria
para o desenvolvimento das telas do sistema [14].
2. Referencial Teorico
15
dial. Como pode ser visto em [35], em 2001 Pyhton era a vigesima
quinta linguagem de
mais utilizada no mundo. Hoje, ela ocupa a quarta posicao.
Para exemplifiprogramacao
car esse crescimento, vemos que projetos como Google, YouTube, Instagram, DropBox,
Reddit, Pinterest e Spotify vem usando Python e Django na sua stack de desenvolvimento [12] [16].
2.4
Consideracoes
Finais
2. Referencial Teorico
16
da
foco maior no conceito de Multi-Tenancy. O proximo
captulo conta com uma definicao
Captulo 3
Multi-Tenancy
da instancia
do software e do banco de dados [18].
Um dos metodos
mais populares de se conseguir esse compartilhamento da aplicacao
Cordeiro e Lucena [7], Multi-Tenancy e uma arquitetura que possui uma unica
instancia
disso,
do aplicativo de software e que e utilizada por varios
consumidores (tenant) . Alem
para atender a necessidade de cada tenant, de modo
e possvel configurar a aplicacao
de estar acessando um ambiente dedicado [2].
que cada um deles tenha a impressao
entidades organizacionais que alugam,
Segundo Bezemer e Zaidman [2], tenants sao
Multi-Tenant. Normalmente, um unico
por um tempo determinado, uma aplicacao
tenant,
os stakeholders da organizacao.
3. Multi-Tenancy
18
A oferta de um alto nvel de configurabilidade, permitindo que cada tenant custo [24];
mize sua interface e o workflow na aplicacao
topicos
As proximas
secoes
apresentarao
bastante importantes para o entendimento
eles: Arquiteturas Correlatas, Caractersticas Chave,
da arquitetura Multi-Tenant. Sao
Vantagens X Desvantagens e Principais Desafios.
3.1
Arquiteturas Correlatas
3.1.1
Multi-Tenancy X Multi-User
suas definicoes
[29]. Entretanto, existe uma diferenca sutil, mas importante, entre as
Multi-User pode-se assumir que todos
duas arquiteturas. Enquanto em uma aplicacao
limitadas,
os usuarios
estao
de configuracao
Multi-Tenant os usuarios
de
numa aplicacao
tem acesso a um vasto numero
de opcoes
[2].
configuracao
Essa diferenca entre as duas arquiteturas gera um resultado que e uma das caractersticas mais importante de Multi-Tenancy. Embora os inquilinos estejam usando a
mento e que o Service Level Agreement (SLA) pode diferir para cada tenant. O que nao
3. Multi-Tenancy
3.1.2
19
Multi-Tenancy X Multi-Instance
e possivelmente
Instance, onde cada tenant tem sua propria
instancia
da aplicacao
aplicacoes
parecidas com Multi-Tenancy. Basta apenas criar uma imagem do sistema
pre-configurada
e crias as instancias
a partir dessa imagem [29].
Bezemer e Zaidman definem a abordagem Multi-Instance como sendo a mais adequada
para sistemas onde o numero
de inquilinos tende a ser baixo [2]. Isso se da pois o custo
do numero
de inquilinos. Esse crescimento pode ser atribudo ao esforco necessario
3.2
Caractersticas Chave
tem como objetivo apresentar essas caractersticas de forma mais aprofundada, para
3.2.1
Compartilhamento de Hardware
3. Multi-Tenancy
20
escolhida para ser utilizada neste trabalho, por se mostrar mais eficiente.
3.2.2
personalizada do sistema. Ja
e Carraro (2006), cada cliente tem sua propria
versao
no modelo Multi-Tenant, quarto nvel de maturidade, todos os clientes usam a mesma
configuracao
do nucleo
da aplicacao
3. Multi-Tenancy
21
possa ser mantido sem depender das necessidades dos utilizadores finais. Adicional dos recurmente, este aspecto da arquitetura auxilia o fornecedor da cloud na alocacao
sos.
tres
areas
em
Como relatado por Rodrigues [29] em sua dissertacao,
de pesquisa estao
aplicacoes
web personalizadas para o usuario,
3.2.3
e do Banco de Dados
Compartilhamento da Aplicacao
Uma aplicacao
instancias
rodando e elas podem ser dife Em Multi-Tenancy, essas diferencas
rentes uma das outras por causa da customizacao.
e modificada em tempo de execucao
de acordo com
deixam de existir, ja que a aplicacao
de cada tenant[2].
as configuracoes
vai ser menor - idealmente uma, que pode ser replicada afim de facilitar a escalabilidade
diminuicao
os deploys ficam bem mais simples e menos
[2].
custosos, principalmente aqueles de atualizacoes
sao
dois conceitos binarios.
3. Multi-Tenancy
22
linos, porem
informacoes
de forma isolada logicamente dos dados de outros inquilinos. A seguranca do banco de dados garante que um
tenha acesso aos dados dos outros.
inquilino nao
Figura 3.2: Abordagem utilizando bancos de dados separados. Adaptado de Chong [5].
de bancos de dados separados facilita a extensao
do modelo de dados de
A utilizacao
dos dados de um
uma aplicacao.
Inclusive, caso ocorra alguma falha, a recuperacao
de ser executada. No entanto, esta abordagem gera
inquilino se torna uma tarefa facil
[32].
custos altos de manutencao
dos bancos de dados dos inquilinos e uma boa alternativa.
Sendo assim, a separacao
Por isso, para clientes
Mas deve-se observar os custos adicionais para a implantacao.
e seguranca maiores, serao
beque estejam dispostos a pagar mais por customizacao
neficiados com a escolha desta abordagem. Um exemplo de cliente que se beneficiaria
de bancos de dados separados seriam aqueles que trabalham
muito com a utilizacao
3. Multi-Tenancy
23
separados, a recuperacao
de dados
instancias
[32]. Quando os bancos de dados estao
devido a um backup recente resolver o problema. Ja com um unico
e mais facil
banco de
3. Multi-Tenancy
24
de servidores, nos quais querem mudar de um modelo de isolamento para um compartilhado e diminuir seus custos.
Escolha da abordagem
De forma semelhante ao trabalho de Bezemer [2], a abordagem escolhida foi a de ban foi eleita a melhor
cos de dados compartilhados e esquema compartilhado. Esta opcao
disso, existe uma biblioteca1
porque as outras abordagens apresentam problemas. Alem
Python que implementa a abordagem de bancos de dados compartilhados e esquemas
se mosseparados (tenant schemas). A abordagem de bancos de dados separados nao
multi-tenant por quebrar seu princpio de aproveitamento
tra interessante em aplicacoes
de recursos.
1
A biblioteca Django Tenant Schemas foi desenvolvida por Bernardo Pires e pode ser acessada atraves
do endereco: https://github.com/bernardopires/django-tenant-schemas .
3. Multi-Tenancy
3.3
25
Principais Desafios
de trazer varios
trazem
Infelizmente, alem
benefcios, arquiteturas Multi-Tenant, tambem
3.3.1
Desempenho
da atribuicao
de
situacoes
virtuais, este problema e desenvolvido atraves
pode levar a` utilizacao
3.3.2
Escalabilidade
nos
servidor de banco de dados. Ja em situacoes
pode nao
nao
existe ao colocar varios
em relacao
como a exigencia
de posicionar todos os dados para um tenant no mesmo servidor para
3. Multi-Tenancy
26
3.3.3
Seguranca
Segundo Rodrigues [29], um dos assuntos mais importantes ligados a` arquitetura multi de aplicacoes
3.3.4
Manutencao
implantacao
de aplicacoes
e instancias
do banco
Bezemer e Zaidman [2] citam em seu estudo que mais pesquisas na area
precisam ser
compenrealizadas para certificar que os benefcios de hardware e de implementacao
3.3.5
Disponibilidade 24/7
3. Multi-Tenancy
27
prestados aos outros tenants existentes. Isso leva a uma forte exigencia
de que softwares
Multi-Tenant estejam disponveis 24 horas, 7 dias por semana, ja que o custo do tempo
3.4
Vantagens X Desvantagens
serao
detalhadas as vantagens e desvantagens de se utilizar a arquitetura
Nesta secao
Multi-Tenancy.
3.4.1
Vantagens
[36];
codigo
base, para dispor servicos para varias
organizacoes
[2];
Possibilita reutilizar as regras de negocio
com pouca necessidade de adaptacao
Usuarios
organizados em varios
nveis de acordo com suas necessidades e melhor
gerenciamento de recursos [17];
dos custos de manutencao
e venda de software por parte do provedor de
Reducao
software [39].
3. Multi-Tenancy
3.4.2
28
Desvantagens
ratura, estao:
Devem ser identificados os fatores limitantes e os gargalos nos recursos compu exigidos pelas varias
3.5
Consideracoes
Finais
ografica
feita em artigos cientficos no topico.
Captulo 4
Trabalhos Correlatos
Este captulo tem por objetivo apresentar trabalhos relacionados ao tema desta pesquisa.
4.1
Bancos de Dados
No trabalho desenvolvido por Bezemer [2], ele cita que utilizou a abordagem de MultiTenancy puro quanto ao aspecto de compartilhamento de hardware. Segundo o estudi
compartilhada com bancos de dados separados
oso, os outros metodos
como aplicacao
compartilhada com bancos de dados compartilhados mas tabelas separadas
e aplicacao
possuem graves problemas de desempenho, principalmente quando o numero
de tenants
4. Trabalhos Correlatos
4.2
30
Customizacao
Bezemer [2] em sua pesquisa cita que a configurabilidade em Multi-tenancy e algo sim
permite o usuario
altera-lo
de forma eficiente. Os trabalhos de Bezemer [2] e Mietzner
et al. [26] se assemelham ao presente trabalho neste aspecto, ja que possuem o meca
nismo de customizar alguma caracterstica da aplicacao.
4.3
Autenticacao
4. Trabalhos Correlatos
31
multi-tenant.
aplicacoes
4.4
Consideracnoes Finais
Apos
relacionados a` biblioteca desenvolvida, foi visto que existem muitos projetos desenvolvidos
e autenticacao
Captulo 5
A Biblioteca: Django Multi-Tenant
A biblioteca1 proposta neste trabalho tem como objetivo principal auxiliar desenvolvedores do framework Django a desenvolver sistemas multi-tenant. Para isso, foram im
plementadas diversas funcionalidades que atacam varias
caractersticas da arquitetura.
Nos topicos
seguintes cada funcionalidade sera detalhada.
da arquitetura multi-tenant por
Por esta ser uma biblioteca que facilita a utilizacao
Django, os nveis de maturidades III e IV sugeridos por Chong e Carraro [4]
aplicacoes
podem ser utilizados, como detalhados no Captulo 2. Fica a cargo do desenvolvedor da
que venha a utilizar a biblioteca Django Multi-Tenant definir os nveis de matuaplicacao
ridade que podem ser implementados. No exemplo da biblioteca, mostrado no Captulo
6, foi utilizado o nvel III de maturidade.
1
5.1
33
Arquitetura de Dados
Foram criados dois modelos do Django com o intuito de facilitar esta abordagem. Sao
eles: tenant e tenant model, como ilustrado nas Figuras 5.1 e 5.2.
O modelo Tenant descrito na Figura 5.1 representa os tenants do sistema. Este modelo
e composto pelo nome do tenant, um slug, que identifica unicamente o tenant, a data
maxima
de atividade do tenant no sistema, uma chave estrangeira para o tema utilizado
com os usuarios
34
disso, tambem
sao
adicionadas funcoes
de managers que facilitam a filtragem de
Alem
dados por tenant, como ilustrado na Figura 5.3.
5.2
Customizacao
5.2, a customizacao
e um aspecto chave na arquitetura multiComo discutido na secao
tenant. A biblioteca proposta neste trabalho possibilita ao tenant customizar o tema da
da escolha de um dos temas disponibilizados pelo software.
interface do sistema atraves
disso,
A biblioteca fornece um modelo de tema, como pode ser visto na Figura 5.4. Alem
o modelo do tenant tem uma chave estrangeira para os temas, como visto na Figura 5.1,
da escolha
possibilitando uma experiencia
de usuario
diferente para cada tenant atraves
do tema.
isso, e necessario
escolher um nome unico
para o tema e anexar um arquivo .css que
necessarias.
realiza as alteracoes
5.3
35
Controle de Acesso
de autenticacao:
uma funcao
tem acesso ao tenant
verificacoes:
de um tenant;
Se uma pagina
esta sendo acessada atraves
Se o usuario
esta autenticado;
Se o usuario
autenticado tem acesso ao tenant.
36
5.4
Funcionalidades Auxiliares
Tambem
na
e na geracao
do contexto. Sao
elas:
requisicao
5.4.1 Middlewares
classes que tem como funcao
adicionar parametros
e adiciona-lo
ao request. Ja o segundo, TenantMiddleware, adiciona o tenant, que e
do subdomnio, ao request.
reconhecido atraves
37
38
5.5
Consideracoes
Finais
A implementacao
multi disso, a biblioteca devera ser disponibilizada de forma open
tenant em Django. Alem
Captulo 6
Um exemplo de uso da biblioteca
Neste captulo sera demonstrado um exemplo de uso da biblioteca1 proposta neste trabalho. Este exemplo abrange o funcionamento de cada uma das funcionalidade imple elas:
mentadas. Sao
6.1
40
do subdomnio e adiciona-lo
ponsaveis
por capturar o tenant atraves
ao contexto. Como
pode ser visto na Figura 6.1, ao acessar o sistema sem o subdomnio, nenhuma
de tenant e adicionada ao contexto. Entretanto, ao acessar com o subinformacao
domnio, como pode ser visto na Figura 6.2, o subdomnio e capturado e as informacoes
disponibilizadas automaticamente.
do tenant sao
6.2
41
de acesso
Itens filtrados por Tenant sem restricao
42
6.3
de acesso
Itens filtrados por Tenant com restricao
Usuario
Tenant
user1
Tenant 1
user2
Tenant 1 e Tenant 2
user3
Tenant 2
43
o usuario
correto, o acesso nao
sera redirecionado para uma
pagina
de erro, como pode ser visto na Figura 6.7. Entretanto, ao acessar a mesma
6.4
autenticacao
Dessa forma, os usuarios
so conseguem acessar tenants nos
44
No exemplo, podemos ver que ao autenticar o user3 para o Tenant 1 o acesso foi negado,
como ilustrado na Figura 6.9. Ja ao tentar autenticar o user1 para Tenant 1 o acesso foi
permitido, como apresentado na Figura 6.10.
esta de acordo com a Tabela 6.1 mosO controle de acesso mencionado nesta secao
trada anteriormente.
6.5
45
Captulo 7
e trabalhos futuros
Conclusao
em Nuvem, o acesso a recursos computacionais
Devido o surgimento da Computacao
tem se tornado cada vez mais facilitado. Multi-tenancy, por ser uma abordagem organiza
cional do modelo SaaS, possui diversas caractersticas beneficas
para projetos no geral,
de uma
quando utilizada. Este trabalho mostrou os benefcios provindos da utilizacao
de recursos, facilidade
biblioteca multi-tenant, como por exemplo uma maior utilizacao
da aplicacao
e custos reduzidos.
na manutencao
O objetivo principal desta pesquisa foi propor uma biblioteca open source para transformar projetos Django em projetos multi-tenant, com o intuito de facilitar seu desenvolvi
e trabalhos futuros
7. Conclusao
47
Django;
na bilbioteca, como por exemplo
Adicionar mais ferramentas de customizacao
de fluxo, relatorio
customizacao
e formularios;
Referencias
Bibliograficas
[1] Find your new favorite web framework. http://hotframeworks.com/. Accessed:
2016-04-19.
[2] Cor-Paul Bezemer and Andy Zaidman. Multi-tenant saas applications: maintenance
dream or nightmare? In Proceedings of the Joint ERCIM Workshop on Software
Evolution (EVOL) and International Workshop on Principles of Software Evolution
(IWPSE), pages 8892. ACM, 2010.
[3] Fred Chong and Gianpaolo Carraro. Architecture strategies for catching the long tail.
MSDN Library, Microsoft Corporation, pages 910, 2006.
[4] Frederick Chong and Gianpaolo Carraro. Software como servico (saas): uma perspectiva corporativa. Microsoft MSDN, 2007.
[5] Frederick Chong, Gianpaolo Carraro, and Roger Wolter. Multi-tenant data architecture. MSDN Library, Microsoft Corporation, pages 1430, 2006.
[6] Louis Columbus. Cloud computing and enterprise software forecast update, 2012.
Forbes. com LLC, 2012.
para implementacao
multi-tenant em java. Simposio
Brasileiro de
pages 436437, 2014.
Sistemas de Informacao,
[8] Edite Correia. Cloud computing: o modelo saasproblemas e desafios de seguranca
e privacidade. Universidade do Porto, pages 413, 2015.
Referencias
Bibliograficas
49
[10] Thomas Erl, Ricardo Puttini, and Zaigham Mahmood. Cloud computing: concepts,
technology, & architecture. Pearson Education, 2013.
[11] John Feather. Architects of the information society. thirty-five years of the laboratory
for computer science at mit. Publishing Research Quarterly, 16(2):9595, 2000.
[12] Mikko Flagan. 25 of the most popular python and django websites. https://www.
shoop.io/en/blog/25-of-the-most-popular-python-and-django-websites/. Accessed: 2016-04-19.
[13] Chang Jie Guo, Wei Sun, Ying Huang, Zhi Hu Wang, and Bo Gao. A framework
for native multi-tenancy application development and management. In The 9th IEEE
International Conference on E-Commerce Technology and The 4th IEEE International Conference on Enterprise Computing, E-Commerce and E-Services (CEC-EEE
2007), pages 551558. IEEE, 2007.
[14] A HOLOVATY and J KAPLAN-MOSS. The django book: Version 2.0. The Django
Book, 16, 2009.
[15] J Huang. Amazon s3s amazing growth. Cloud Computing Journal, 2011.
[16] Alex Ivanovs.
http://
Referencias
Bibliograficas
50
[21] Thomas Kwok, Thao Nguyen, and Linh Lam. A software as a service with multitenancy support for an electronic contract management application. In Services
Computing, 2008. SCC08. IEEE International Conference on, volume 2, pages 179
186. IEEE, 2008.
[22] Xin Hui Li, Tian Cheng Liu, Ying Li, and Ying Chen. Spin: Service performance isolation infrastructure in multi-tenancy environment. In Service-Oriented Computing
ICSOC 2008, pages 649663. Springer, 2008.
[23] Hailue Lin, Kai Sun, Shuan Zhao, and Yanbo Han. Feedback-control-based performance regulation for multi-tenant applications. In Parallel and Distributed Systems
(ICPADS), 2009 15th International Conference on, pages 134141. IEEE, 2009.
[24] MIETE Mcsi. Configurability in saas (software as a service) applications. In Proc.
2nd Annual Conference on India Software Engineering Conference, pages 1926,
2009.
[25] Peter Mell and Tim Grance. The nist definition of cloud computing. Computer Security Division; Information Technology Laboratory; National Institute of Standards and
Technology Gaithersburg, 2011.
[26] Ralph Mietzner, Frank Leymann, and Mike P Papazoglou. Defining composite configurable saas application packages using sca, variability descriptors and multitenancy patterns. In Internet and Web Applications and Services, 2008. ICIW08.
Third International Conference on, pages 156161. IEEE, 2008.
[27] Ralph Mietzner, Andreas Metzger, Frank Leymann, and Klaus Pohl. Variability modeling to support customization and deployment of multi-tenant-aware software as
a service applications. In Proceedings of the 2009 ICSE Workshop on Principles
of Engineering Service Oriented Systems, pages 1825. IEEE Computer Society,
2009.
[28] Ralph Mietzner, Tobias Unger, Robert Titze, and Frank Leymann. Combining different multi-tenancy patterns in service-oriented applications. In Enterprise Distributed
Object Computing Conference, 2009. EDOC09. IEEE International, pages 131140.
IEEE, 2009.
Referencias
Bibliograficas
51
[32] Flavio
RC Sousa, Leonardo O Moreira, JAF Macedo,
and Javam C Machado. Gerenciamento de dados em nuvem: Conceitos, sistemas e desafios. Topicos em
sistemas colaborativos, interativos, multimidia, web e bancos de dados, Sociedade
Brasileira de Computacao, pages 101130, 2010.
[33] T Sridhar. Cloud computinga primer part 1: Models and technologies. The Internet
Protocol Journal, 12(3):219, 2009.
[34] S Srinivasan. Cloud Computing Basics. Springer, 2014.
[35] The Quality Software Company TIOBE. Tiobe index for april 2016. http://www.
tiobe.com/tiobe_index, 2016. Accessed: 2016-04-19.
[36] Wei-Tek Tsai, Qihong Shao, and Jay Elston. Prioritizing service requests on cloud
with multi-tenancy. In e-Business Engineering (ICEBE), 2010 IEEE 7th International
Conference on, pages 117124. IEEE, 2010.
[37] Luis M Vaquero, Luis Rodero-Merino, Juan Caceres, and Maik Lindner. A break in
the clouds: towards a cloud definition. ACM SIGCOMM Computer Communication
Review, 39(1):5055, 2008.
[38] Zhi Hu Wang, Chang Jie Guo, Bo Gao, Wei Sun, Zhen Zhang, and Wen Hao An.
A study and performance evaluation of the multi-tenant data tier design patterns
for service oriented computing. In e-Business Engineering, 2008. ICEBE08. IEEE
International Conference on, pages 94101. IEEE, 2008.
Referencias
Bibliograficas
52
[39] Jiecai Zheng, Xueqing Li, Xinxiao Zhao, Xiaomin Zhang, and Sheng Hu. The research and application of a saas-based teaching resources management platform. In
Computer Science and Education (ICCSE), 2010 5th International Conference on,
pages 765770. IEEE, 2010.