Você está na página 1de 126
“Desenvolvimento de aplicações multi-tenancy: um estudo de mapeamento sistemático” Por Josino Rodrigues Neto Dissertação de Mestradow w w . c i n . u f p e . b r / ~ p o s g r a d u a c a o RECIFE, Junho/2012 " id="pdf-obj-0-2" src="pdf-obj-0-2.jpg">

“Desenvolvimento de aplicações multi-tenancy: um estudo de mapeamento sistemático”

Por

Josino Rodrigues Neto

Dissertação de Mestrado

“Desenvolvimento de aplicações multi-tenancy: um estudo de mapeamento sistemático” Por Josino Rodrigues Neto Dissertação de Mestradow w w . c i n . u f p e . b r / ~ p o s g r a d u a c a o RECIFE, Junho/2012 " id="pdf-obj-0-12" src="pdf-obj-0-12.jpg">

RECIFE, Junho/2012

Universidade Federal de Pernambuco Centro de Informática Pós-graduação em Ciência da Computação Josino Rodrigues Neto “Desenvolvimento

Universidade Federal de Pernambuco

Centro de Informática Pós-graduação em Ciência da Computação

Josino Rodrigues Neto

“Desenvolvimento de aplicações multi-tenancy: um estudo de mapeamento sistemático”

Trabalho apresentado ao Programa de Pós-graduação em Ciência da Computação do Centro de Informática da Univer- sidade Federal de Pernambuco como requisito parcial para obtenção do grau de Mestre em Ciência da Computação.

Orientador: Silvio Romero de Lemos Meira Co-Orientador: Vinicius Cardoso Garcia

RECIFE, Junho/2012

Eu dedico essa dissertação primeiramente à minha família, aos meus amigos e aos meus professores que me deram todo o suporte necessário para chegar até aqui. Em especial agradeço a Deus por ter colocado todas essas pessoas no meu caminho.

Agradecimentos

Agradeço a Deus, por ter me dado uma família linda. À minha esposa , Késia(in memorian) por ter me incentivado a continuar mesmo quando eu pensava que nada iria dar certo. À minha filha Sara, que aprendeu a usar o skype sozinha pra conseguir conversar comigo enquanto trabalhava na minha dissertação. À minha mãe, Dona Susana que me apoiou no momento mais difícil da minha vida e que sempre esteve ao meu lado. Aos meus amigos Carlos Portela, Brunno Wagner e Andreza Leite pela madrugadas em claro estudando e fazendo trabalhos das disciplinas(as SCRUMadrugadas). Isso deu resultado, tivemos conceito A em todas as disciplinas amigos. Minha amiga Andreza Leite também foi muito útil nas revisões da minha dissertação, deu contribuições de precisão cirúrgia ao meu trabalho. Ao meu amigo Wilton, que embora tenha pago algumas cadeiras comigo eu só conheci de verdade quando descobri que ele dividia apartamento com meu melhor amigo piauiense residente em Recife, Julio Damasceno. Julio Damasceno diga-se de passagem, um nerd++ com o qual eu tive a oportunidade de trabalhar por muitos anos e aprender tudo que sei sobre Linux. A todos os outros amigos que conheci no mestrado e com os quais eu aprendi diversas coisas diferentes: Kadna, Thalita, Danielle, Fish, Elaine, Emanuel e Viviane(Vivi). Agradeço também por todos os meus amigos da Rise: Marinho, Rafael, Leonardo, Alexandro, Luiz e em especial Eduardo Cruz por terem me proporcionado bons momentos de aprendizado na incubadora do Porto Digital, ajudando na implementação prática da minha dissertação. Gostaria de agradecer aos meus amigos da FJB(Força Jovem Brasil), aos que são piauienses(Jezlia Resende, Ângela Núbia, Eulálio Pereira e Amanda Patricia) e aos que são pernambucanos(aqui não vou citar nomes porque são muitos). Todo essas pessoas foram um suporte pra mim nas horas vagas. Era com eles que eu realizava as atividades filantrópicas que me fizeram crescer como ser humano. Dentre esses gostaria de agradecer especialmente à Dra Jezlia Resende por ter revisado alguns trechos da minha dissertação e ajudado corrigir alguns detalhes do português. Por fim, mas não mais importante queria agradecer aos meus mestres e orientadores Silvio Meira, Vinícius Garcia e Paulo Anselmo por terem me ajudado a organizar minhas idéias em uma dissertação e transforma-las em ciência de verdade.

Muito Obrigado a todos.

Eu vou marcar a minha geração Vou conquistar a minha posição Se eu acreditar no sonho Vou realizar

Chegou a minha vez Não vou ter medo de tentar Eu sei, quem sabe faz a hora

É hora de lutar.

—SONOROS (Força Jovem Brasil)

Resumo

De forma crescente, Software como serviço (SaaS) está se tornando uma forma domi- nante de entrega de software aos usuários. Da perspectiva dos provedores de serviço, os benefícios de SaaS mostram-se através da economia de escala, pela oferta de software a um grande número de consumidores através de uma instância compartilhada de software. Uma forma de implementar SaaS é através da adoção de multi-tenancy, uma abordagem para a implementação de SaaS que divide a instância de uma aplicação em várias apli- cações virtuais chamadas tenants. Para prover software desse tipo é necessário levar em consideração vários aspectos como segurança, alocação de recursos, customização, escalabilidade, armazenamento de dados, reuso, etc. Esse trabalho visa, apartir de um mapeamento sistemático, identificar o estado da arte de multi-tenancy, propostas de implementação e principais lacunas existentes nessa área através da análise dos principais trabalhos publicados sobre o assunto. Ao final desse trabalho é apresentado aplicação desses conceitos na indústria.

Abstract

Increasingly, Software as a Service (SaaS) is becoming a dominant form of software delivery to users. From perspective of service providers, the benefits of SaaS are shown through economies of scale, by offering software to a large number of consumers through a shared instance of software. One way to implement SaaS is through multi-tenancy, an approach to the implementation of SaaS that divides the instance of an application in various virtual applications called tenants. To offer this type of software is necessary to take into account various aspects such as security, resource allocation, customization, scalability, data storage, reuse, etc. This paper aims to start a systematic mapping to identify the state of the art of multi-tenancy, implementation proposals and major gaps in this area through the analysis of the main papers on the subject. At the end of this study is presented applying these concepts in the industry.

Sumário

Lista de Figuras

xi

Lista de Tabelas

xii

Lista de Siglas

xiii

  • 1 Introdução

1

  • 1.1 Motivação .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

2

Objetivos

  • 1.2 .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

6

1.2.1

Objetivos Gerais

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

6

1.2.2

Objetivos Específicos .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

6

  • 1.3 Metodologia .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

6

  • 1.4 Contribuições científicas

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

8

  • 1.5 Estrutura da dissertação .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

8

  • 2 Fundamentação Teórica

 

9

  • 2.1 Cloud Computing

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

10

  • 2.2 SaaS - Software como Serviço

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

15

  • 2.3 Multi-tenancy

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

18

  • 2.4 Considerações Finais

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

19

  • 3 Mapeamento Sistemático

 

21

  • 3.1 Diretivas de pesquisa

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

23

3.1.1

Pesquisa exploratória .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

23

3.1.2

Definição de Questões de Pesquisa .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

25

  • 3.2 Seleção dos dados .

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

26

3.2.1

Condução da pesquisa

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

26

3.2.2

Triagem dos Trabalhos

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

29

  • 3.3 Classificação

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

30

3.3.1

Esquema de Classificação

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

30

3.3.2

Classificação dos trabalhos relevantes

.

.

.

.

.

.

.

.

.

.

.

.

.

.

31

  • 3.4 Principais Descobertas

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

38

3.4.1

Alocação de Recursos

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

38

3.4.2

Banco de Dados

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

39

3.4.3

Customização .

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

41

 

3.4.4

Escalabilidade

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

43

3.4.5

Migração

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

43

3.4.6

Monitoramento

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

44

3.4.7

Performance

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

45

3.4.8

Segurança .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

46

3.4.9

SOA .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

48

  • 3.5 Mapeamento das evidências

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

48

 

3.5.1

Q1 - Quais as vantagens e desvantagens de se adotar arquitetura

 
 

multi-tenancy?

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

49

 

3.5.2

Q2 - Quais as propostas existentes para implementação da arqui-

 
 

tetura multi-tenancy?

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

50

Frameworks . . . . .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

51

Ferramentas .

Métodos ou Técnicas .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

53

53

Modelos Propostas de Arquitetura

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

55

56

 

3.5.3

Q3 - Existe alguma forma de gerenciar a variabilidade entre os

 
 

tenants de uma aplicação multi-tenancy

.

.

.

.

.

.

.

.

.

.

.

.

.

57

 

3.5.4

Q4 - Quando a adoção da arquitetura multi-tenancy é viável?

.

60

  • 3.6 Discussão

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

61

  • 3.7 Ameaças a validade .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

64

  • 3.8 Considerações Finais

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

65

4

Aplicação na Indústria

 

66

  • 4.1 Problema

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

66

  • 4.2 Metodologia .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

68

  • 4.3 Definição de Arquitetura

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

70

 

4.3.1

Identificação dos objetivos da Arquitetura

.

.

.

.

.

.

.

.

.

.

.

.

72

4.3.2

Visão geral da aplicação

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

73

4.3.3

Pontos Críticos e Soluções

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

77

4.3.4

Proposta de solução de arquitetura . Autenticação

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

78

78

 

Configuração

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

80

Banco de dados (Database) .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

81

 

4.3.5

Tecnologias .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

81

4.3.6

Prototipagem

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

83

 
  • 4.4 Migração do Sistema

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

85

  • 4.5 Considerações Finais

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

89

5

Conclusão e Trabalhos Futuros

 

90

  • 5.1 Contribuições

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

91

  • 5.2 Trabalhos Futuros

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

91

Referências Bibliográficas

 

92

Appendices

107

A

Estudos Primários

108

Lista de Figuras

  • 1.1 Cauda Longa(Adaptada de: (Chong and Carraro, 2006))

 

.

.

.

.

.

.

.

.

2

  • 1.2 Empresas de software globais vêem seu pecentual de venda de produtos diminuirem de 70 por cento em 1990 para menos de 50 por cento em 2003(Adaptada de: (Cusumano, 2008))

3

  • 1.3 Empresas de software corporativo baseado em web tem adotado uma varidade de modelos de negócio. Pagamento de assinatura mensal é o modelo de pagamento mais popular (Adaptada de: (Cusumano, 2008)) .

4

  • 1.4 Hype Cycle para Cloud Computing((Smith, 2011))

 

.

5

  • 1.5 Resumo da Metodologia(Elaboração própria)

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

7

  • 2.1 Modelos de serviço de Cloud Computing .

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

14

  • 2.2 Amazon S3’s Growth(Huang, 2011a) .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

16

  • 2.3 Níveis de Maturidade SaaS(Chong and Carraro, 2006)

.

.

.

.

.

.

.

.

.

17

  • 3.1 Processo de Mapeamento Sistemático - Adaptado de (Petersen et al., 2008) 23

  • 3.2 Percentual de estudos retornados de acordo com a estratégia de busca

 

.

29

  • 3.3 Percentual de estudos retornados pelas buscas automáticas .

.

.

.

.

.

.

29

  • 3.4 Quantidade de artigos agrupados por Contexto e Ano

 

.

36

  • 3.5 Quantidade de artigos agrupados por Contexto e Contribuição .

.

.

.

.

36

  • 3.6 Quantidade de artigos agrupados por Contexto e Tipo de Pesquisa .

.

.

37

  • 3.7 Quantidade de artigos agrupados por Questão e Tipo de Pesquisa

 

.

.

.

37

  • 3.8 Técnicas de mapeamento de esquema(Fonte: (Aulbach et al., 2008))

 

.

42

  • 4.1 Metamodelo para SPL(Fonte: (Cavalcanti et al., 2011))

 

.

.

.

.

.

.

.

.

.

69

  • 4.2 Metodologia utilizada para desenvolvimento de aplicação na indústria(Fonte:

Elaboração própria) .

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

70

  • 4.3 Diagrama de Caso de Uso da Aplicação Alexandria(Fonte: Elaboração

 

própria)

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

74

  • 4.4 Arquitetura de Referência adotada(Fonte: (Bezemer et al., 2010))

.

.

.

80

  • 4.5 Arquitetura do Grails Framework(Fonte: (Judd et al., 2008))

.

.

.

.

.

.

83

  • 4.6 Arquitetura da Aplicação(Fonte: Elaboração própria)

 

.

.

.

.

.

.

.

.

.

.

84

Lista de Tabelas

  • 2.1 Definições de Cloud Computing(Vaquero et al., 2008) .

 

.

.

.

.

.

.

.

.

.

12

  • 3.1 Questionamentos e termos

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

26

  • 3.2 Strings Search .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

28

  • 3.3 Resultado da aplicação dos critérios de exclusão .

.

.

.

.

.

.

.

.

.

.

.

.

30

  • 3.4 Faceta Contexto .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

32

  • 3.5 Faceta Tipos de pesquisa (Fonte: (Wieringa et al., 2005)) .

.

.

.

.

.

.

.

33

  • 3.6 Faceta Contribuição (Fonte: (Wieringa et al., 2005)) .

 

.

.

.

.

.

.

.

.

.

.

34

  • 3.7 Artigos associados por Questão de pesquisa

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

34

  • 3.8 Artigos agrupados por contexto .

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

35

  • 3.9 Artigos agrupados por contribuição .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

35

  • 3.10 Artigos agrupados por Tipo de Pesquisa

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

38

  • 3.11 Métodos e técnicas para implementar multi-tenancy

.

.

.

.

.

.

.

.

.

.

.

54

  • 4.1 Estilos arquiteturais escolhidos e suas influências em nossa arquitetura .

76

  • 4.2 Atributos de qualidade desejáveis na arquitetura

 

.

79

  • 4.3 Resultado da aplicação dos critérios de exclusão(Fonte: Elaboração própria) 86

A.1

A.2

Estudos Primários . Estudos Primários(Continuação)

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

108

109

A.3

Estudos Primários(Continuação)

.

.