Download - Multitenancy em aplicações na nuvem
![Page 1: Multitenancy em aplicações na nuvem](https://reader034.vdocuments.net/reader034/viewer/2022052705/58a23e961a28ab7b3c8b56c9/html5/thumbnails/1.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022052705/58a23e961a28ab7b3c8b56c9/html5/thumbnails/2.jpg)
QUE MÁRIO?
• Desenvolvedor Java desde 2004
• Instrutor e desenvolvedor na Caelum
• Open Source
• Stella
• Vraptor
![Page 3: Multitenancy em aplicações na nuvem](https://reader034.vdocuments.net/reader034/viewer/2022052705/58a23e961a28ab7b3c8b56c9/html5/thumbnails/3.jpg)
O QUE É SAAS?
![Page 4: Multitenancy em aplicações na nuvem](https://reader034.vdocuments.net/reader034/viewer/2022052705/58a23e961a28ab7b3c8b56c9/html5/thumbnails/4.jpg)
![Page 5: Multitenancy em aplicações na nuvem](https://reader034.vdocuments.net/reader034/viewer/2022052705/58a23e961a28ab7b3c8b56c9/html5/thumbnails/5.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022052705/58a23e961a28ab7b3c8b56c9/html5/thumbnails/6.jpg)
COMO ISOLAR OS DADOS DOS USUÁRIOS ?
![Page 7: Multitenancy em aplicações na nuvem](https://reader034.vdocuments.net/reader034/viewer/2022052705/58a23e961a28ab7b3c8b56c9/html5/thumbnails/7.jpg)
+ Isolado
+ Compartilhado
![Page 8: Multitenancy em aplicações na nuvem](https://reader034.vdocuments.net/reader034/viewer/2022052705/58a23e961a28ab7b3c8b56c9/html5/thumbnails/8.jpg)
+ Compartilhado
+ Isolado
Banco Schema Coluna
![Page 9: Multitenancy em aplicações na nuvem](https://reader034.vdocuments.net/reader034/viewer/2022052705/58a23e961a28ab7b3c8b56c9/html5/thumbnails/9.jpg)
SEPARANDO OS CLIENTES POR BANCO
![Page 10: Multitenancy em aplicações na nuvem](https://reader034.vdocuments.net/reader034/viewer/2022052705/58a23e961a28ab7b3c8b56c9/html5/thumbnails/10.jpg)
SEPARAÇÃO POR BANCO DE DADOS
![Page 11: Multitenancy em aplicações na nuvem](https://reader034.vdocuments.net/reader034/viewer/2022052705/58a23e961a28ab7b3c8b56c9/html5/thumbnails/11.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022052705/58a23e961a28ab7b3c8b56c9/html5/thumbnails/12.jpg)
SEPARANDO OS CLIENTES POR SCHEMA
![Page 13: Multitenancy em aplicações na nuvem](https://reader034.vdocuments.net/reader034/viewer/2022052705/58a23e961a28ab7b3c8b56c9/html5/thumbnails/13.jpg)
SEPARAÇÃO POR SCHEMATenant 1
Tenant 2
Tenant 3
![Page 14: Multitenancy em aplicações na nuvem](https://reader034.vdocuments.net/reader034/viewer/2022052705/58a23e961a28ab7b3c8b56c9/html5/thumbnails/14.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022052705/58a23e961a28ab7b3c8b56c9/html5/thumbnails/15.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022052705/58a23e961a28ab7b3c8b56c9/html5/thumbnails/16.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022052705/58a23e961a28ab7b3c8b56c9/html5/thumbnails/17.jpg)
COMO ESCOLHER QUAL USAR?
![Page 18: Multitenancy em aplicações na nuvem](https://reader034.vdocuments.net/reader034/viewer/2022052705/58a23e961a28ab7b3c8b56c9/html5/thumbnails/18.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022052705/58a23e961a28ab7b3c8b56c9/html5/thumbnails/19.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022052705/58a23e961a28ab7b3c8b56c9/html5/thumbnails/20.jpg)
MAS E A PARTE TÉCNICA?
![Page 21: Multitenancy em aplicações na nuvem](https://reader034.vdocuments.net/reader034/viewer/2022052705/58a23e961a28ab7b3c8b56c9/html5/thumbnails/21.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022052705/58a23e961a28ab7b3c8b56c9/html5/thumbnails/22.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022052705/58a23e961a28ab7b3c8b56c9/html5/thumbnails/23.jpg)
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