multitenancy em aplicações na nuvem

Post on 14-Feb-2017

225 Views

Category:

Software

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

DADOS DE SEUS USUÁRIOS

Mário Amaral@mario_fts

QUE MÁRIO?

• Desenvolvedor Java desde 2004

• Instrutor e desenvolvedor na Caelum

• Open Source

• Stella

• Vraptor

O QUE É SAAS?

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.

COMO ISOLAR OS DADOS DOS USUÁRIOS ?

+ Isolado

+ Compartilhado

+ Compartilhado

+ Isolado

Banco Schema Coluna

SEPARANDO OS CLIENTES POR BANCO

SEPARAÇÃO POR BANCO DE DADOS

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

SEPARANDO OS CLIENTES POR SCHEMA

SEPARAÇÃO POR SCHEMATenant 1

Tenant 2

Tenant 3

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

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

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

COMO ESCOLHER QUAL USAR?

Comparação entre dados isolados x dados compartilhados

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

ISOLADO X COMPARTILHADO

Isolado Compartilhado

Quantidade de tenants

Baixa Alta

Volume de dados por tenant

Alto Baixo

Necessidade de customização

Alta Baixa

MAS E A PARTE TÉCNICA?

FALANDO EM JAVA…

• JPA - Sem suporte ainda.

• Hibernate - Suporte parcial (Banco e Schema)

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

HIBERNATE• Implementar 2 interfaces

• MultiTenantConnectionProvider

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

• CurrentTenantIdentifierResolver

• Descobre qual o tenant atual

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

OBRIGADO!

github.com/mariofts @mario_fts mario.amaral@caelum.com.br

top related