Você está na página 1de 75

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

Mestrando: Josino Rodrigues Orientador: Silvio Meira Co-orientador: Vinícius Garcia

Se a engenharia civil criou prédios, a computação criou multi-tenancy.

2

Agenda
Contexto Problema Objetivos Metodologia Fase 1 – Entendimento do Cenário Fase 2 – Mapeamento Sistemático Fase 3 – Aplicação na Indústria Conclusão
3

Como esse trabalho se originou???

4

5

6

Como? Que tecnologias? Será se isso é viável pra nossa realidade?
7

Aumentar a quantidade de clientes possível ...

8

... através da otimização na utilização de recursos.

9

10

Problema
Desenvolver software para atender a um grande número de usuários a baixo custo, no modelo de software como serviço Ausência de trabalhos que apresentem diretrizes para desenvolver SaaS Multitenancy
11

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

12

Objetivo Específicos
• Apresentar uma visão geral de multitenancy; • Definir o status de maturidade atual de multi-tenancy;
• Identificar vantagens e desvantagens na adoção de multitenancy • Identificar as principais propostas de implementação para multi-tenancy • Identificar formas de gerenciar a variabilidade entre os tenants • Aplicar os conceitos na indústria de software

13

14

Metodologia

15

Fase 1 – Entendimento do cenário

16

17

Fase 1
Leitura ad-hoc de artigos e sites sobre:
– Cloud Computing – SaaS – Multi-tenancy

Entendimento dos principais conceitos relacionados a multi-tenancy

18

Fase 1 – Levantamento de questionamentos na área

1. Quais as vantagens e desvantagens da adoção? 2. Quando é viável? 3. Existe alguma forma de extender as funcionalidades de um tenant? 4. Como gerenciar a variabilidade entre os tenants? 5. Como verificar se um tenant está consumindo mais recursos do que o esperado?
19

Fase 1 – Levantamento de questionamentos na área

6. Como tratar solicitações de forma assíncrona? 7. Como evitar que um tenant tenha acesso a dados de outro ? 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?
20

21

Sistematic

22

Fase 2 – Estudo de mapeamento

23

Processo de Mapeamento Sistemático

Fonte: Adaptado de [6]

24

Questões de pesquisa
1. Quais as vantagens e desvantagens de multitenancy?

2. Quais as propostas de implementação existentes?
3. Existe alguma forma de gerenciar a variabilidade em aplicação multi-tenancy? 4. Quando é viável adotar multi-tenancy?

25

Estratégias de pesquisa
Automática

Trabalhos Encontrados
Manual

26

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)

27

Estratégias de pesquisa
• Termos para pesquisa automática

28

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)

29

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

30

Resultado das buscas
93 152
IEEE

88

ACM Scopus ScienceDirect EI Compendex

144 148

31

Triagem de Papers
• Critérios de exclusão
1. Papers duplicados 2. Trabalhos não relacionados à arquitetura multitanancy 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.

32

Triagem de Papers
• Resultados das exclusões

• Restaram 71 trabalhos

33

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

34

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
35

Classificação
• Faceta Contribuição:
– Framework – Método/técnica – Modelo – Ferramenta – Proposta de arquitetura

36

Classificação
• Faceta Tipo de Pesquisa:
– Validation Research – Evaluation Research – Solution Proposal – Philosophical Paper – Opinion Paper – Experience Paper

37

Classificação
Trabalhos/ Ano de Publicação

38

Classificação

39

Classificação
Trabalhos/Contexto
Virtualização SOA Segurança Performance Monitoramento Migração Escalabilidade Customização Banco de dados Alocação de Recursos 0 2 4 5 6 8 10 12 14 11 2 12 2 3 3 6 7 10

40

Classificação

Trabalhos/Contribuição
Modelo
Método/tecnica Framework Ferramenta Proposta de Arquitetura 0 5 10 10 6 28

4
14 15 20 25 30

41

Classificação
Trabalhos/Tipo de Pesquisa
Validation Research 10

Solution Proposal

45

Philosophical Paper

2

Opinion Paper

2

Evaluation Research

3

Experience Paper

9

0

5

10

15

20

25

30

35

40

45

50

42

Resultados
Trabalhos/Ano/Contexto
12 10 alocacao de recursos banco de dados 8 Publicações customizacao escalabilidade 6 migracao monitoramento performance 4 segurança SOA 2 virtualizacao

0 2007 2008 2009 2010 2011

43

Resultados

44

Resultados

45

Resultados

46

Resposta – Q1(Vantagens e desvantagens)
• Vantagens
– Único código fonte para várias versões da aplicação – Atualização do software de uma só vez para todos os clientes – Facilidade de colaboração e integração entre tenants – Economia nos custos com infra-estrutura de hardware – Aumento da margem de lucro – Reuso de 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
47

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 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

48

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

49

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)

50

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
51

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

52

Resposta – Q2
• Propostas de arquitetura
– Force.com – SPOSAD(Shared, Polymorphic, Scalable Application and Data) – L4 Cache – Arquitetura de Sistemas de Autenticação Multitenancy – Ao todo foram encontrados 13 propostas de arquitetura

53

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
54

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.
55

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.

56

Discussão
• Nenhum mapeamento sobre multi-tenancy encontrado • Poucas propostas de implementação validadas na indústria • Ausência de sumarização dos conhecimentos existentes • Bancos de dados convencionais não foram desenvolvidos para aplicações desse tipo.

57

Discussão
• Baseado nas evidências encontradas, a utilização linguagens dinâmicas e metaprogramação podem ser úteis na implementação da aplicativos multitenancy • 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.
58

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

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 multitenancy
60

Grails

61

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

62

Arquitetura Escolhida

Fonte:[4]
63

Implementação
• 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
64

Acesso a Dados
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
}

65

Customização

66

Autenticação

67

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.

68

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

69

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
70

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 multitenancy • Propor multi-tenancy a nível de plataforma • Propor uma implementação de referência que utilize as melhores práticas de implementação
71

Trabalhos Publicados
• Minicurso: Desenvolvendo aplicações multitenancy para computação em nuvem. ERCEMAPI 2011 • Minicurso: Software as a Service: Desenvolvendo Aplicações Multi-tenancy com Alto Grau de Reuso. WebMedia 2012(no prelo) • Artigo: Uma Abordagem para Desenvolvimento de SaaS Multi-Tenancy Utilizando Metaprogramação. WebMedia 2012(submetido)

72

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-percentof-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.

73

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.

74

Muito Obrigado!!!

“Perguntar vocês vão????”
75