Desenvolvimento de aplicações multi-tenant: Um estudo de mapeamento sistemático

68
Desenvolvimento de aplicações multi-tenant: um estudo de mapeamento sistemático Mestrando: Josino Rodrigues Orientador: Silvio Meira Co-orientador: Vinícius Garcia

description

Apresentação de pré-defesa de mestrado, 11-Feb-2012, Desenvolvimento de aplicações multi-tenant: Um estudo de mapeamento sistemático

Transcript of Desenvolvimento de aplicações multi-tenant: Um estudo de mapeamento sistemático

Page 1: Desenvolvimento de aplicações multi-tenant: Um estudo de mapeamento sistemático

Desenvolvimento de aplicações multi-tenant: um estudo de

mapeamento sistemático

Mestrando: Josino Rodrigues

Orientador: Silvio Meira

Co-orientador: Vinícius Garcia

Page 2: Desenvolvimento de aplicações multi-tenant: Um estudo de mapeamento sistemático

Agenda

• Contexto

• Problema

• Objetivos

• Fundamentação teórica

• Metodologia

Social Machines Research Group The Emerging Web of Social Machines - A brainstorm © 2011 – Vinicius Cardoso Garcia

2

Page 3: Desenvolvimento de aplicações multi-tenant: Um estudo de mapeamento sistemático

Contexto

• Crescimento dos usuários de internet • Facebook possui 10% da população mundial [1] • Cauda Longa[2] • Surgimento de Cloud Computing • SaaS • Multi-tenancy

• Temos que repensar a nossa forma de desenvolver software?

Page 4: Desenvolvimento de aplicações multi-tenant: Um estudo de mapeamento sistemático

Contexto – Cauda Longa

Social Machines Research Group The Emerging Web of Social Machines - A brainstorm © 2011 – Vinicius Cardoso Garcia

4

Page 5: Desenvolvimento de aplicações multi-tenant: Um estudo de mapeamento sistemático

Problema

• Desenvolver software para atender a um grande número de usuários a baixo custo, no modelo de software como serviço

• Equipe pequena

• Ausência de trabalhos que apresentem diretrizes para desenvolver SaaS

Page 6: Desenvolvimento de aplicações multi-tenant: Um estudo de mapeamento sistemático

Objetivo Geral

• Contribuir com a evolução do estado da arte do desenvolvimento de aplicações SaaS que implementam a arquitetura multi-tenancy.

Page 7: Desenvolvimento de aplicações multi-tenant: Um estudo de mapeamento sistemático

Objetivo Específicos

• Apresentar uma visão geral de multi-tenancy, explicando os principais conceitos para entendimento deste trabalho;

• Realizar um estudo de mapeamento para definir o status atual de maturidade deste princípio de arquitetura

• Identificar vantagens e desvantagens na adoção de multi-tenancy

• Identificar as principais proposta de implementação para multi-tenancy

• Identificar formas de gerenciar a variabilidade entre os tenants de uma aplicação multi-tenancy

• Aplicar os conceitos na indústria de software

Social Machines Research Group The Emerging Web of Social Machines - A brainstorm © 2011 – Vinicius Cardoso Garcia

7

Page 8: Desenvolvimento de aplicações multi-tenant: Um estudo de mapeamento sistemático

Social Machines Research Group The Emerging Web of Social Machines - A brainstorm © 2011 – Vinicius Cardoso Garcia

8

Fundamentação teórica

Page 9: Desenvolvimento de aplicações multi-tenant: Um estudo de mapeamento sistemático

Cloud Computing

• Definição:

Cloud computing é um modelo que permite o acesso, através de rede de computadores, a um conjunto de recursos computacionais configuráveis (Ex: rede, servidores, armazenamento, aplicações e serviços) de forma ubíqua, conveniente e sob-demanda. Esses recursos podem ser rapidamente provisionados e liberados com um mínimo esforço de gerenciamento ou interação com o provedor de serviço.

National Institute of Standards – NIST [3]

Page 10: Desenvolvimento de aplicações multi-tenant: Um estudo de mapeamento sistemático

Cloud Computing

Social Machines Research Group The Emerging Web of Social Machines - A brainstorm © 2011 – Vinicius Cardoso Garcia

10

Page 11: Desenvolvimento de aplicações multi-tenant: Um estudo de mapeamento sistemático

SaaS

• Definição:

Capacidade provida ao consumidor de usar aplicações do provedor executando-a na infraestrutura de cloud. As aplicações são acessíveis de vários dispositivos através de thin clients como browsers web. O Consumidor não gerencia ou controla a infraestrutura de cloud incluindo rede, servidores, sistemas operacionais, armazenamento ou ainda capacidades individuais da aplicação, com possiveis exceções de configurações da aplicação específicas do usuário.

National Institute of Standards – NIST [3]

Page 12: Desenvolvimento de aplicações multi-tenant: Um estudo de mapeamento sistemático

Multi-tenancy

Definição: Multi-tenancy é uma abordagem organizacional para aplicações SaaS. Bezemer[4] define multi-tenancy como aplicações que permitem o compartilhamento dos mesmos recursos de hardware, através do compartilhamento da aplicação e da instância do banco de dados, enquanto permite configurar a aplicação para atender às necessidades do cliente como se estivesse executando em um ambiente dedicado.

Tenant é uma entidade organizacional que aluga uma aplicação multi-tenancy. Normalmente, um tenant agrupa um número de usuários que são os stakeholders da organização.

Page 13: Desenvolvimento de aplicações multi-tenant: Um estudo de mapeamento sistemático

Multi-tenancy

Social Machines Research Group The Emerging Web of Social Machines - A brainstorm © 2011 – Vinicius Cardoso Garcia

13

Níveis de maturidade de SaaS – Multi-Tenancy[7]

Page 14: Desenvolvimento de aplicações multi-tenant: Um estudo de mapeamento sistemático

Engenharia de Software baseada em evidências

Objetivo:

Fornecer os meios pelos quais as melhores vidências de pesquisas atuais podem ser integradas à experiência prática e valores humanos no processo decisório relativo ao desenvolvimento e manutenção de software. [5]

Page 15: Desenvolvimento de aplicações multi-tenant: Um estudo de mapeamento sistemático

Metodologia

Page 16: Desenvolvimento de aplicações multi-tenant: Um estudo de mapeamento sistemático

Social Machines Research Group The Emerging Web of Social Machines - A brainstorm © 2011 – Vinicius Cardoso Garcia

16

Fase 1 – Entendimento do cenário

Page 17: Desenvolvimento de aplicações multi-tenant: Um estudo de mapeamento sistemático

Fase 1

• Leitura ad-hoc de artigos e sites sobre:

– Cloud Computing

– SaaS

– Multi-tenancy

• Entendimento dos principais conceitos relacionados a multi-tenancy

Page 18: Desenvolvimento de aplicações multi-tenant: Um estudo de mapeamento sistemático

Fase 1 – Levantamento de questionamentos na área

1. Quais as vantagens e desvantagens da adoção da arquitetura multi-tenancy?

2. Quando a adoção de multi-tenancy é viável?

3. Existe alguma forma de extender as funcionalidades de um tenant específico?

4. Como gerenciar a variabilidade entre os tenants?

5. Como verificar se um tenant está consumindo mais recursos do que o esperado?

Social Machines Research Group The Emerging Web of Social Machines - A brainstorm © 2011 – Vinicius Cardoso Garcia

18

Page 19: Desenvolvimento de aplicações multi-tenant: Um estudo de mapeamento sistemático

Fase 1 – Levantamento de questionamentos na área

6. Como tratar solicitações de forma assíncrona?

7. Como isolar os tenants, de forma que um tenant não tenha acesso a dados de outro indevidamente?

8. Caso um tenant esteja consumindo muitos recursos, como migrar esse tenant para outra máquina ou VM(Virtual Machine)?

9. Quais as propostas existentes para se implementar a arquitetura multi-tenancy?

Social Machines Research Group The Emerging Web of Social Machines - A brainstorm © 2011 – Vinicius Cardoso Garcia

19

Page 20: Desenvolvimento de aplicações multi-tenant: Um estudo de mapeamento sistemático

Social Machines Research Group The Emerging Web of Social Machines - A brainstorm © 2011 – Vinicius Cardoso Garcia

20

Fase 2 – Estudo de mapeamento

Page 21: Desenvolvimento de aplicações multi-tenant: Um estudo de mapeamento sistemático

Processo de Mapeamento Sistemático

Fonte: Adaptado de [6]

Page 22: Desenvolvimento de aplicações multi-tenant: Um estudo de mapeamento sistemático

Questões de pesquisa

• Apartir dos questionamentos levantados na Fase 1 foram selecionados 4 perguntas mais relevantes para serem respondidas:

1. Quais as vantagens e desvantagens de se adotar arquitetura multi-tenancy?

2. Quais as propostas existentes para implementação da arquitetura multi-tenancy?

3. Existe alguma forma de gerenciar a variabilidade entre os tenants de uma aplicação multi-tenancy?

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

Social Machines Research Group The Emerging Web of Social Machines - A brainstorm © 2011 – Vinicius Cardoso Garcia

22

Page 23: Desenvolvimento de aplicações multi-tenant: Um estudo de mapeamento sistemático

Estratégias de pesquisa

Social Machines Research Group The Emerging Web of Social Machines - A brainstorm © 2011 – Vinicius Cardoso Garcia

23

Automática

Manual

Trabalhos Encontrados

Page 24: Desenvolvimento de aplicações multi-tenant: Um estudo de mapeamento sistemático

Estratégias de pesquisa

• Fontes para pesquisa automática:

– IEEEXplore Digital Library (httt://ieeexplore.ieee.org/)

– ACM Digital Library (http://portal.acm.org)

– Elsevier ScienceDirect (http:// www.sciencedirect.com)

– EI Compendex (http://www.engineeringvillage2.org)

– Elsevier Scopus (http://www.scopus.com)

Social Machines Research Group The Emerging Web of Social Machines - A brainstorm © 2011 – Vinicius Cardoso Garcia

24

Page 25: Desenvolvimento de aplicações multi-tenant: Um estudo de mapeamento sistemático

Estratégias de pesquisa

• Termos para pesquisa automática

Social Machines Research Group The Emerging Web of Social Machines - A brainstorm © 2011 – Vinicius Cardoso Garcia

25

Page 26: Desenvolvimento de aplicações multi-tenant: Um estudo de mapeamento sistemático

Estratégias de pesquisa

• Query

(multi-tenancy OR multi-tenant) AND ("Cloud computing"OR iaas OR paas OR saas OR advantages OR disadvantages OR approach OR barrier OR adoption OR viability OR approach OR methods OR techniques OR proposal OR framework OR tenant OR "product lines"OR variability OR variation OR adoption OR viability OR challenges OR problems OR benefits OR loss)

Social Machines Research Group The Emerging Web of Social Machines - A brainstorm © 2011 – Vinicius Cardoso Garcia

26

Page 27: Desenvolvimento de aplicações multi-tenant: Um estudo de mapeamento sistemático

Estratégias de pesquisa

• Pesquisa Manual

– Search Engines(Google, Bing, Yahoo)

– Pesquisa em principais conferências

• IEEE International Conference on e-Business Engineering (ICEBE)

• International Conference on Cloud Computing

• ACM SIGMOD/PODS Conference

• International Conference on Advanced Communication Technology

• IEEE International Conference on Data Engineering

Social Machines Research Group The Emerging Web of Social Machines - A brainstorm © 2011 – Vinicius Cardoso Garcia

27

Page 28: Desenvolvimento de aplicações multi-tenant: Um estudo de mapeamento sistemático

Resultado das buscas

• 98% (625/637) dos estudos foram retornados

– 23% (144/625) no ScienceDirect

– 15% (93/625) no IEEE Computer Digital Library

– 24% (152/625) no El compendex

– 24% (148/625) no Scopus

– 14% (88/625) na ACM

• 2% (12/637) por meio de busca manual

Social Machines Research Group The Emerging Web of Social Machines - A brainstorm © 2011 – Vinicius Cardoso Garcia

28

Page 29: Desenvolvimento de aplicações multi-tenant: Um estudo de mapeamento sistemático

Triagem de Papers

• Critérios de exclusão

1. Papers duplicados

2. Trabalhos não relacionados à arquitetura multi-tanancy

3. Poster, Panel e Workshop paper

4. Papers que não estejam escritos em inglês

5. Papers que não acessíveis na web.

Social Machines Research Group The Emerging Web of Social Machines - A brainstorm © 2011 – Vinicius Cardoso Garcia

29

Page 30: Desenvolvimento de aplicações multi-tenant: Um estudo de mapeamento sistemático

Triagem de Papers

• Resultados das exclusões

• Restaram 71 trabalhos

Social Machines Research Group The Emerging Web of Social Machines - A brainstorm © 2011 – Vinicius Cardoso Garcia

30

Page 31: Desenvolvimento de aplicações multi-tenant: Um estudo de mapeamento sistemático

Classificação

• O resumo, título e palavras-chave de cada estudo são revisados em busca de termos e conceitos que reflitam a contribuição do trabalho

• Foram definidas 3 facetas

Social Machines Research Group The Emerging Web of Social Machines - A brainstorm © 2011 – Vinicius Cardoso Garcia

31

Page 32: Desenvolvimento de aplicações multi-tenant: Um estudo de mapeamento sistemático

Classificação

• Contexto de multi-tenancy – Banco de dados

– Alocação de recursos

– Customização

– Performance

– Segurança

– Escalabilidade

– Migração de sistemas

– SOA

– Monitoramento

Social Machines Research Group The Emerging Web of Social Machines - A brainstorm © 2011 – Vinicius Cardoso Garcia

32

Page 33: Desenvolvimento de aplicações multi-tenant: Um estudo de mapeamento sistemático

Classificação

• Faceta Contribuição:

– Framework

– Método/técnica

– Modelo

– Ferramenta

– Proposta de arquitetura

Social Machines Research Group The Emerging Web of Social Machines - A brainstorm © 2011 – Vinicius Cardoso Garcia

33

Page 34: Desenvolvimento de aplicações multi-tenant: Um estudo de mapeamento sistemático

Classificação

• Faceta Tipo de Pesquisa:

– Validation Research

– Evaluation Research

– Solution Proposal

– Philosophical Paper

– Opinion Paper

– Experience Paper

Social Machines Research Group The Emerging Web of Social Machines - A brainstorm © 2011 – Vinicius Cardoso Garcia

34

Page 35: Desenvolvimento de aplicações multi-tenant: Um estudo de mapeamento sistemático

Classificação

Social Machines Research Group The Emerging Web of Social Machines - A brainstorm © 2011 – Vinicius Cardoso Garcia

35

Trabalhos/ Ano de Publicação

Page 36: Desenvolvimento de aplicações multi-tenant: Um estudo de mapeamento sistemático

Classificação

Social Machines Research Group The Emerging Web of Social Machines - A brainstorm © 2011 – Vinicius Cardoso Garcia

36

Page 37: Desenvolvimento de aplicações multi-tenant: Um estudo de mapeamento sistemático

Classificação

Social Machines Research Group The Emerging Web of Social Machines - A brainstorm © 2011 – Vinicius Cardoso Garcia

37

5

11

12

2

3

2

10

7

6

3

0 2 4 6 8 10 12 14

Alocação de Recursos

Banco de dados

Customização

Escalabilidade

Migração

Monitoramento

Performance

Segurança

SOA

Virtualização

Trabalhos/Contexto

Page 38: Desenvolvimento de aplicações multi-tenant: Um estudo de mapeamento sistemático

Classificação

Social Machines Research Group The Emerging Web of Social Machines - A brainstorm © 2011 – Vinicius Cardoso Garcia

38

14

4

10

28

6

0 5 10 15 20 25 30

Proposta de Arquitetura

Ferramenta

Framework

Método/tecnica

Modelo

Trabalhos/Contribuição

Page 39: Desenvolvimento de aplicações multi-tenant: Um estudo de mapeamento sistemático

Classificação

Social Machines Research Group The Emerging Web of Social Machines - A brainstorm © 2011 – Vinicius Cardoso Garcia

39

9

3

2

2

45

10

0 5 10 15 20 25 30 35 40 45 50

Experience Paper

Evaluation Research

Opinion Paper

Philosophical Paper

Solution Proposal

Validation Research

Trabalhos/Tipo de Pesquisa

Page 40: Desenvolvimento de aplicações multi-tenant: Um estudo de mapeamento sistemático

Resultados

Social Machines Research Group The Emerging Web of Social Machines - A brainstorm © 2011 – Vinicius Cardoso Garcia

40

0

2

4

6

8

10

12

2007 2008 2009 2010 2011

Pu

blic

açõ

es

Trabalhos/Ano/Contexto

alocacao de recursos

banco de dados

customizacao

escalabilidade

migracao

monitoramento

performance

segurança

SOA

virtualizacao

Page 41: Desenvolvimento de aplicações multi-tenant: Um estudo de mapeamento sistemático

Resultados

Social Machines Research Group The Emerging Web of Social Machines - A brainstorm © 2011 – Vinicius Cardoso Garcia

41

Page 42: Desenvolvimento de aplicações multi-tenant: Um estudo de mapeamento sistemático

Resultados

Social Machines Research Group The Emerging Web of Social Machines - A brainstorm © 2011 – Vinicius Cardoso Garcia

42

Page 43: Desenvolvimento de aplicações multi-tenant: Um estudo de mapeamento sistemático

Resultados

Social Machines Research Group The Emerging Web of Social Machines - A brainstorm © 2011 – Vinicius Cardoso Garcia

43

Page 44: Desenvolvimento de aplicações multi-tenant: Um estudo de mapeamento sistemático

Resposta – Q1(Vantagens e desvantagens)

• Vantagens – O provedor de serviço pode usar a mesma versão da

aplicação(com o único código base) para prover serviços para várias organizações

– Atualização do software de uma só vez para todos os tenants

– Facilidade de colaboração e integração entre tenants – Economia nos custos com infra-estrutura de hardware – Aumento da margem de lucro – Possibilidade de reusar regras de negócio com o mínimo

de adaptação – Redução dos custos de venda e manutenção do software – Agrupamento de tenants de acordo com a SLA exigida pelo

cliente

Social Machines Research Group The Emerging Web of Social Machines - A brainstorm © 2011 – Vinicius Cardoso Garcia

44

Page 45: Desenvolvimento de aplicações multi-tenant: Um estudo de mapeamento sistemático

Resposta – Q1

• Desvantagens – É difícil calcular os recursos requeridos para cada novo

tenant e ao mesmo tempo garantir que as restrições de todos os outros tenants da mesma instância sejam atendidas

– Dificuldade de comparar e otimizar a redução de custos das diferentes formas de distribuição dos tenants entre os servidores, pelo fato de existirem várias variáveis envolvidas

– Preocupação das empresas com o custo inicial de reestruturas suas aplicações legadas para multi-tenancy

– Preocupação dos mantenedores de software com a possibilidade de multi-tenancy introduzir problemas adicionais de manutenção decorrentes do fato desses novos sistemas serem altamente customizáveis

Social Machines Research Group The Emerging Web of Social Machines - A brainstorm © 2011 – Vinicius Cardoso Garcia

45

Page 46: Desenvolvimento de aplicações multi-tenant: Um estudo de mapeamento sistemático

Resposta – Q2(Propostas para implementação)

• Foram encontratos frameworks que tratam de:

• Isolamento de segurança

• Isolamento de performance

• Isolamento de disponibilidade

• Isolamento de administração

• Customização

• Alocação de recursos

• Garantia de SLA

Social Machines Research Group The Emerging Web of Social Machines - A brainstorm © 2011 – Vinicius Cardoso Garcia

46

Page 47: Desenvolvimento de aplicações multi-tenant: Um estudo de mapeamento sistemático

Resposta – Q2

• Foram encontratos ferramentas que tratam de:

– Auxílio a compartilhamento de recursos

– Identificação de tenants maliciosos

– Proposta de SGBD multi-tenancy(M-Store)

– Garantia de SLA(SmartSLA)

Social Machines Research Group The Emerging Web of Social Machines - A brainstorm © 2011 – Vinicius Cardoso Garcia

47

Page 48: Desenvolvimento de aplicações multi-tenant: Um estudo de mapeamento sistemático

Resposta – Q2

• Foram encontrados 27 métodos ou técnicas que abordam os mais variados contextos relacionados a aplicações multi-tenancy – Alocação de Recursos

– Bancos de dados

– Customização

– Monitoramento

– Melhoria de Performance

– Segurança

– SOA

– Virtualização

Social Machines Research Group The Emerging Web of Social Machines - A brainstorm © 2011 – Vinicius Cardoso Garcia

48

Page 49: Desenvolvimento de aplicações multi-tenant: Um estudo de mapeamento sistemático

Resposta – Q2

• Modelos

– Customização entre tenants

– Predição de violações nos tempos de resposta esperados

– Modelo para predição de consumo de recursos

– Modelo de indexação de dados

– Modelo de controle de acesso baseado em ontologias

Social Machines Research Group The Emerging Web of Social Machines - A brainstorm © 2011 – Vinicius Cardoso Garcia

49

Page 50: Desenvolvimento de aplicações multi-tenant: Um estudo de mapeamento sistemático

Resposta – Q2

• Propostas de arquitetura

– Force.com

– SPOSAD(Shared, Polymorphic, Scalable Application and Data)

– L4 Cache

– Arquitetura de Sistemas de Autenticação Multi-tenancy

– Ao todo foram encontrados 13 propostas de arquitetura

Social Machines Research Group The Emerging Web of Social Machines - A brainstorm © 2011 – Vinicius Cardoso Garcia

50

Page 51: Desenvolvimento de aplicações multi-tenant: Um estudo de mapeamento sistemático

Resposta – Q3(Variabilidade)

• Customização baseada em metadados

• Padrões de customização a nivel de banco de dados

• Técnicas de mapeamento de esquemas para o banco de dados

• Utilização de SCA (Service component architecture)

• Utilização de POA(Programação Orientada a Aspectos)

• Customização baseada em ontologias

• Utilização de técnicas de SPL para gerenciamento de variabilidade

Social Machines Research Group The Emerging Web of Social Machines - A brainstorm © 2011 – Vinicius Cardoso Garcia

51

Page 52: Desenvolvimento de aplicações multi-tenant: Um estudo de mapeamento sistemático

Resposta – Q4(Quando é viável)

• Quando é possível cumprir os requisitos de SLA exigidos pelos tenants

• É necessário comparar o custo de gerenciamento da infraestrutura e a redução do custo com infraestrutura

• Variabilidades muito complexas entre os tenants podem exigir um investimento muito alto, o que pode inviabilizar a adoção de multi-tenancy.

Social Machines Research Group The Emerging Web of Social Machines - A brainstorm © 2011 – Vinicius Cardoso Garcia

52

Page 53: Desenvolvimento de aplicações multi-tenant: Um estudo de mapeamento sistemático

Ameaças a Validade

• Questões de pesquisa

– A ausência de algum sinônimo não previsto nas strings de busca

• Não é possível garantir que todos os estudos relevantes foram encontrados

• Estudos foram classificados baseado no jungamento do autor. Algum estudo pode ter sido classificado incorretamente.

Social Machines Research Group The Emerging Web of Social Machines - A brainstorm © 2011 – Vinicius Cardoso Garcia

53

Page 54: Desenvolvimento de aplicações multi-tenant: Um estudo de mapeamento sistemático

Discussão

• Não foi encontrado nenhum outro estudo de mapeamento sobre multi-tenancy

• Existem muitas propostas de implementação, mas poucas delas foram validadas na indústria

• A entrada de novos desenvolvedores nessa área é dificultada por não haver uma sumarização dos conhecimentos existentes

• O armazenamento de dados multi-tenancy é um ponto crítico. Bancos de dados convencionais não foram desenvolvidos para aplicações desse tipo.

Social Machines Research Group The Emerging Web of Social Machines - A brainstorm © 2011 – Vinicius Cardoso Garcia

54

Page 55: Desenvolvimento de aplicações multi-tenant: Um estudo de mapeamento sistemático

Discussão

• Baseado nas evidências encontradas, a utilização linguagens dinâmicas e metaprogramação podem ser úteis na implementação da aplicativos multi-tenancy

• Poucos trabalhos exploram a implementação de aplicações multi-tenancy em ambientes como Amazon AWS, Azure e Google App Engine.

• Foi encontrado apenas 1 trabalho que trata da implicações de requisitos multi-tenancy no processo de desenvolvimento.

Social Machines Research Group The Emerging Web of Social Machines - A brainstorm © 2011 – Vinicius Cardoso Garcia

55

Page 56: Desenvolvimento de aplicações multi-tenant: Um estudo de mapeamento sistemático

Social Machines Research Group The Emerging Web of Social Machines - A brainstorm © 2011 – Vinicius Cardoso Garcia

56

Fase 3 – Aplicação dos conceitos Na Indústria

Page 57: Desenvolvimento de aplicações multi-tenant: Um estudo de mapeamento sistemático

Fase 3

• Problema:

– Desenvolver um aplicativo web no modelo de SaaS

– Não era necessário implementar requisitos de variabilidade complexos

– O sistema deveria ser desenvolvido em Grails

– Equipe pequena(2 desenvolvedores)

• Foi decidido adotar o estilo arquitetural multi-tenancy

Page 58: Desenvolvimento de aplicações multi-tenant: Um estudo de mapeamento sistemático

Grails

Social Machines Research Group The Emerging Web of Social Machines - A brainstorm © 2011 – Vinicius Cardoso Garcia

58

Page 59: Desenvolvimento de aplicações multi-tenant: Um estudo de mapeamento sistemático

Requisitos

• Implementar CRUDs e Relatórios

• Cada usuário de uma empresa deve ver apenas dados relacionados à sua empresa

• Implementar mecanismo de gerenciamento de configurações

• Implementar ajustes no modelo de dados

Social Machines Research Group The Emerging Web of Social Machines - A brainstorm © 2011 – Vinicius Cardoso Garcia

59

Page 60: Desenvolvimento de aplicações multi-tenant: Um estudo de mapeamento sistemático

Arquitetura Escolhida

Social Machines Research Group The Emerging Web of Social Machines - A brainstorm © 2011 – Vinicius Cardoso Garcia

60

Fonte:[4]

Page 61: Desenvolvimento de aplicações multi-tenant: Um estudo de mapeamento sistemático

Implementação

• Foi encontrado um plugin grails que atendia parcialmente à arquitetura apresentada anteriormente

• A parte não atendida pelo plugin teve que ser desenvolvida

• Implementação usando anotações e metaprogramação

• Separação entre requisitos multi-tenancy e requisitos da aplicação

• Implementação de multi-tenancy como interesse transversal

Social Machines Research Group The Emerging Web of Social Machines - A brainstorm © 2011 – Vinicius Cardoso Garcia

61

Page 62: Desenvolvimento de aplicações multi-tenant: Um estudo de mapeamento sistemático

Implementação package br.com.rise.alexandria import grails.plugin.multitenant.core.groovy.compiler.MultiTenant @MultiTenant class Product { String name String description static hasMany = [ features : Feature ] Product(){ features = new HashSet() } //métodos }

Social Machines Research Group The Emerging Web of Social Machines - A brainstorm © 2011 – Vinicius Cardoso Garcia

62

Page 63: Desenvolvimento de aplicações multi-tenant: Um estudo de mapeamento sistemático

Resultado da implementação

• As funcionalidades básicas de multi-tenancy (autenticação, customização e armazenamento)foram implementadas com sucesso

• Uso metaprogramação para implementar multi-tenancy como interesse transversal

• Abordagem de plugins do grails permite um alto grau de reuso entre aplicações.

Social Machines Research Group The Emerging Web of Social Machines - A brainstorm © 2011 – Vinicius Cardoso Garcia

63

Page 64: Desenvolvimento de aplicações multi-tenant: Um estudo de mapeamento sistemático

Contribuições

• Sumarização de conceitos sobre multi-tenancy

• Criação de um catálogo de artefatos que podem auxiliar na implementação de uma aplicação multi-tenancy

• Validação dos conceitos encontrados através de experiência prática na indústria

Social Machines Research Group The Emerging Web of Social Machines - A brainstorm © 2011 – Vinicius Cardoso Garcia

64

Page 65: Desenvolvimento de aplicações multi-tenant: Um estudo de mapeamento sistemático

Conclusão

• Multi-tenancy é uma abordagem nova e ainda possui muitas lacunas abertas para pesquisa

• Empresas como IBM, Microsoft e Google tem investido nesse tópico, o que reforça a relevância do tema

• Em geral, a adoção de multi-tenancy traz mais benefícios que perdas

• Embora esse trabalho tenha realizado uma sumarização de conhecimentos sobre o tema, ainda não é o suficiente

Social Machines Research Group The Emerging Web of Social Machines - A brainstorm © 2011 – Vinicius Cardoso Garcia

65

Page 66: Desenvolvimento de aplicações multi-tenant: Um estudo de mapeamento sistemático

Trabalhos futuros

• Executar experimentos com o objetivo de comparar as propostas de implementação encontradas

• Definir um processos com diretivas para implementação de uma aplicação multi-tenancy

• Propor multi-tenancy a nível de plataforma

• Propor uma implementação de referência que utilize as melhores práticas de implementação

Social Machines Research Group The Emerging Web of Social Machines - A brainstorm © 2011 – Vinicius Cardoso Garcia

66

Page 67: Desenvolvimento de aplicações multi-tenant: Um estudo de mapeamento sistemático

Referências [1] A. Rosenberg, “Facebook socially networks roughly 10 percent of Earth's population,” Digital Trends, 26 06 2011. [Online]. Available: http://www.digitaltrends.com/computing/facebook-socially-networks-roughly-10-percent- of-earths-population/. [Acesso em 11 02 2011].

[2] ANDERSON, C. A Cauda Longa: do mercado de massa para o mercado de nicho. Tradução Afonso Celso da Cunha Serra. Rio de Janeiro, Elsevier, 2006. 2ª reimpressão.

[3] NIST Definition of Cloud Computing v15 – Acessado em 26/02/2010. h ttp://csrc.nist.gov/groups/SNS/cloud-computing/

[4] Bezemer, C.-P. and Zaidman, A. (2010). 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), IWPSE-EVOL ’10, pages 88–92, New York, NY, USA. ACM.

[5] Barbara A. Kitchenham, Tore Dyba, and Magne Jorgensen. 2004. Evidence-Based Software Engineering. In Proceedings of the 26th International Conference on Software Engineering (ICSE '04). IEEE Computer Society, Washington, DC, USA, 273-281.

[6] Petersen, K., Feldt, R., Mujtaba, S., & Mattsson, M. (2007). Systematic Mapping Studies in Software Engineering. 12th International Conference on Evaluation and Assessment in Software Engineering, 17(1), 1-10.

Page 68: Desenvolvimento de aplicações multi-tenant: Um estudo de mapeamento sistemático

Referências [7] Chong, F. and Carraro, G. (2006). Architecture strategies for catching the long tail.

[8] Petersen, K., Feldt, R., Mujtaba, S., and Mattsson, M. (2008). Systematic Mapping Studies in Software engineering. In EASE ’08: Proceedings of the 12th International Conference on Evaluation and Assessment in Software Engineering.

[9] Wieringa, R., Maiden, N., Mead, N., and Rolland, C. (2005). Requirements engineering paper classification and evaluation criteria: a proposal and a discussion. Requir. Eng., 11, 102–107.