multitenancy em aplicações na nuvem

24
APLICAÇÕES NA NUVEM E SAAS O QUE É MULTITENANCY E COMO SEPARAR OS DADOS DE SEUS USUÁRIOS Mário Amaral @mario_fts

Upload: mario-amaral

Post on 14-Feb-2017

225 views

Category:

Software


1 download

TRANSCRIPT

Page 1: Multitenancy em aplicações na nuvem

APLICAÇÕES NA NUVEM E SAASO QUE É MULTITENANCY E COMO SEPARAR OS

DADOS DE SEUS USUÁRIOS

Mário Amaral@mario_fts

Page 2: Multitenancy em aplicações na nuvem

QUE MÁRIO?

• Desenvolvedor Java desde 2004

• Instrutor e desenvolvedor na Caelum

• Open Source

• Stella

• Vraptor

Page 3: Multitenancy em aplicações na nuvem

O QUE É SAAS?

Page 4: Multitenancy em aplicações na nuvem
Page 5: Multitenancy em aplicações na nuvem

MULTITENANT

• Todos os usuários compartilham a mesma infraestrutura e base de código.

• Um usuário não enxerga os dados do outro.

• É como se cada usuário tivesse sua própria “instalação” do software.

Page 6: Multitenancy em aplicações na nuvem

COMO ISOLAR OS DADOS DOS USUÁRIOS ?

Page 7: Multitenancy em aplicações na nuvem

+ Isolado

+ Compartilhado

Page 8: Multitenancy em aplicações na nuvem

+ Compartilhado

+ Isolado

Banco Schema Coluna

Page 9: Multitenancy em aplicações na nuvem

SEPARANDO OS CLIENTES POR BANCO

Page 10: Multitenancy em aplicações na nuvem

SEPARAÇÃO POR BANCO DE DADOS

Page 11: Multitenancy em aplicações na nuvem

SEPARAÇÃO POR BANCO DE DADOS

• Fácil restaurar backup

• Isolamento total

• Fácil de implementar

• Custo maior de hardware (infraestrutura)

• Backup mais complexo

• Duplicação de dados comuns

Vantagens Desvantagens

Page 12: Multitenancy em aplicações na nuvem

SEPARANDO OS CLIENTES POR SCHEMA

Page 13: Multitenancy em aplicações na nuvem

SEPARAÇÃO POR SCHEMATenant 1

Tenant 2

Tenant 3

Page 14: Multitenancy em aplicações na nuvem

SEPARAÇÃO POR SCHEMA

• Fácil fazer backup

• Isolamento quase total

• Relativamente fácil de implementar

• Custo menor de hardware (infraestrutura)

• Restore mais complexo

• Duplicação de dados comuns

Vantagens Desvantagens

Page 15: Multitenancy em aplicações na nuvem

SEPARAÇÃO POR COLUNA

TenantID ProductID Name

1271134212346578

TenantID CustomerID FullName

1271 2234 John Doe131734568790

TenantID Shipment Date

1271 112627 2014-01-031317 224454 2015-03-013456 837647 2014-12-251271 243454 2015-03-15

Page 16: Multitenancy em aplicações na nuvem

SEPARAÇÃO POR COLUNAS

• Custo baixo de hardware (infraestrutura)

• Fácil extrair relatórios envolvendo dados de múltiplos clientes

• Backup é fácil

• Implementação mais complexa

• Isolamento fraco

• Restore é muito complexo

Vantagens Desvantagens

Page 17: Multitenancy em aplicações na nuvem

COMO ESCOLHER QUAL USAR?

Page 18: Multitenancy em aplicações na nuvem

Comparação entre dados isolados x dados compartilhados

https://msdn.microsoft.com/en-us/library/aa479086.aspx

Page 19: Multitenancy em aplicações na nuvem

ISOLADO X COMPARTILHADO

Isolado Compartilhado

Quantidade de tenants

Baixa Alta

Volume de dados por tenant

Alto Baixo

Necessidade de customização

Alta Baixa

Page 20: Multitenancy em aplicações na nuvem

MAS E A PARTE TÉCNICA?

Page 21: Multitenancy em aplicações na nuvem

FALANDO EM JAVA…

• JPA - Sem suporte ainda.

• Hibernate - Suporte parcial (Banco e Schema)

• EclipseLink - Suporte total (Banco, Schema e Coluna)

Page 22: Multitenancy em aplicações na nuvem

HIBERNATE• Implementar 2 interfaces

• MultiTenantConnectionProvider

• Cria as conexões para cada tentant (banco ou schema)

• CurrentTenantIdentifierResolver

• Descobre qual o tenant atual

Page 23: Multitenancy em aplicações na nuvem

ECLIPSE LINK• Anotar as classes com @Multitenant e escolher o formato

• @Multitenant(SINGLE_TABLE)

• Separação por coluna

• @Multitenant(TABLE_PER_TENANT)

• Separação por Schema

• @Multitenant(VPD)

• Delega para o banco de dados o filtro dos dados do tenant

Page 24: Multitenancy em aplicações na nuvem

OBRIGADO!

github.com/mariofts @mario_fts [email protected]