Aplicações MultitenantEstratégias arquiteturais para execução de aplicações na
nuvem
Aplicações multi o quê?
Aplicações Multitenant
Uma única aplicação serve múltiplos clientes/organizações (tenants)
Sua aplicação nas nuvens
Estratégias de Migração p/ Cloud
Aplicação e Banco de dados para todos os tenantsAplicação e Banco de dados por clienteAplicação e esquema separado por clienteAplicação e Banco de dados para todos com migração de clientes com maior demanda
Questionamentos
Qual o custo de adição de um novo cliente?Qual o custo de manter a aplicação atualizada?Qual a estratégia de alocação de máquinas?
Questionamentos
Qual o custo de licenças?Qual o custo de gerenciamento do software?
Premissas
Todas as estratégias requerem automatização
Tendo isso em mente...
Aplicação e Banco de dados compartilhados
Aplicação DB
Aplicação e Banco de dados compartilhados
Aplicação
Cliente 1
DB
Aplicação e Banco de dados compartilhados
Aplicação
Cliente 1
Cliente 2
DB
Aplicação e Banco de dados compartilhados
Aplicação
Cliente 1
Cliente 2
Cliente 3
DB
Aplicação e Banco de dados compartilhados
Aplicação
Cliente 1
Cliente 2
Cliente 3
Cliente 4 DB
Aplicação e Banco de dados compartilhados
Aplicação
Cliente 1
Cliente 2
Cliente 3
Cliente 4...
Cliente N
DB
Aplicação e Banco de dados para todos
Aplicação e Banco de dados para todos
Atualização dos clientes
Aplicação e Banco de dados para todos
Atualização dos clientes
Aproveitamento de recursos por máquina
Aplicação e Banco de dados para todos
Atualização dos clientes
Aproveitamento de recursos por máquina
Escalabilidade através de replicação e balanceamento de carga
Aplicação e Banco de dados para todos
Aplicação e Banco de dados para todos
Relação clientes por servidor
Aplicação e Banco de dados para todos
Relação clientes por servidor
Menor custo de licenciamento
Aplicação e Banco de dados para todos
Relação clientes por servidor
Menor custo de licenciamento
Adição de novos clientes
Aplicação e Banco de dados para todos
Aplicação e Banco de dados para todos
Separação de dados feito pela aplicação
Aplicação e Banco de dados para todos
Separação de dados feito pela aplicação
Maior custo de desenvolvimento
Aplicação e Banco de dados para todos
Separação de dados feito pela aplicação
Maior custo de desenvolvimento
Desempenho de um cliente impacta os outros
Aplicação e Banco de dados para todos
Separação de dados feito pela aplicação
Maior custo de desenvolvimento
Desempenho de um cliente impacta os outrosDifícil medir quem está consumindo mais recursos
Aplicação e Banco de dados por cliente
Cliente Aplicação DBServidor
Aplicação e Banco de dados por cliente
Cliente Aplicação DBServidor
Cliente AplicaçãoDBServidor
Aplicação e Banco de dados por cliente
Cliente Aplicação DBServidor
Cliente Aplicação DBServidor
Cliente AplicaçãoDBServidor
Aplicação e Banco de dados por cliente
Cliente Aplicação DBServidor
Cliente Aplicação DBServidor
Cliente AplicaçãoDBServidor
Cliente AplicaçãoDBServidor
Aplicação e Banco de dados por cliente
Cliente Aplicação DBServidor
Cliente Aplicação DBServidor
Cliente Aplicação DBServidor
Cliente AplicaçãoDBServidor
Cliente AplicaçãoDBServidor
Aplicação e Banco de dados por cliente
Cliente Aplicação DBServidor
Cliente Aplicação DBServidor
Cliente Aplicação DBServidor
Cliente AplicaçãoDBServidor
Cliente AplicaçãoDBServidor
Cliente AplicaçãoDBServidor
Aplicação e Banco de dados por cliente
Aplicação e Banco de dados por cliente
Separação dos dados by design
Aplicação e Banco de dados por cliente
Separação dos dados by design
Medição do consumo de recursos
Aplicação e Banco de dados por cliente
Separação dos dados by design
Medição do consumo de recursos
Desempenho independente de cliente
Aplicação e Banco de dados por cliente
Separação dos dados by design
Medição do consumo de recursos
Desempenho independente de cliente
Poder usar separação física como argumento de venda
Aplicação e Banco de dados por cliente
Aplicação e Banco de dados por cliente
Gerenciamento dos clientes
Aplicação e Banco de dados por cliente
Gerenciamento dos clientes
Adição de novos clientes
Aplicação e Banco de dados por cliente
Gerenciamento dos clientes
Adição de novos clientesRequer mais automatização da infraestrutura
Aplicação e Banco de dados por cliente
Gerenciamento dos clientes
Adição de novos clientesRequer mais automatização da infraestruturaOciosidade
Aplicação e Esquema de Banco de dados por cliente
DB
Servidor BD
Aplicação e Esquema de Banco de dados por cliente
DB
Servidor BD
Aplicação e Esquema de Banco de dados por cliente
Servidor de Aplicação
DB
Servidor BD
Aplicação e Esquema de Banco de dados por cliente
Servidor de Aplicação
Cliente Aplicação E
DB
Servidor BD
Aplicação e Esquema de Banco de dados por cliente
Servidor de Aplicação
Cliente Aplicação E
Cliente Aplicação E
DB
Servidor BD
Aplicação e Esquema de Banco de dados por cliente
Servidor de Aplicação
Cliente Aplicação E
Cliente Aplicação E
Cliente Aplicação E
DB
Servidor BD
Aplicação e Esquema de Banco de dados por cliente
Servidor de Aplicação
Cliente AplicaçãoE
Cliente Aplicação E
Cliente Aplicação E
Cliente Aplicação E
DB
Servidor BD
Aplicação e Esquema de Banco de dados por cliente
Servidor de Aplicação
Cliente AplicaçãoE
Cliente AplicaçãoE
Cliente Aplicação E
Cliente Aplicação E
Cliente Aplicação E
DB
Servidor BD
Aplicação e Esquema de Banco de dados por cliente
Servidor de Aplicação
Cliente AplicaçãoE
Cliente AplicaçãoE
Cliente AplicaçãoECliente Aplicação E
Cliente Aplicação E
Cliente Aplicação E
Aplicação e Esquema de Banco de dados por cliente
Separação dos dados via esquema de banco
Aplicação e Esquema de Banco de dados por cliente
Separação dos dados via esquema de banco
Aplicação e Esquema de Banco de dados por cliente
Melhor aproveitamento de recursos
Separação dos dados via esquema de banco
Aplicação e Esquema de Banco de dados por cliente
Melhor aproveitamento de recursos
Pouca alteração de código
Separação dos dados via esquema de banco
Aplicação e Esquema de Banco de dados por cliente
Melhor aproveitamento de recursos
Pouca alteração de código
Custo de licenças
Aplicação e Esquema de Banco de dados por cliente
Aplicação e Esquema de Banco de dados por cliente
Facilidade de migração entre instâncias
Aplicação e Esquema de Banco de dados por cliente
Facilidade de migração entre instâncias
Fácil escalabilidade
Aplicação e Esquema de Banco de dados por cliente
Facilidade de migração entre instâncias
Fácil escalabilidade
Separação por contexto
Aplicação e Esquema de Banco de dados por cliente
Aplicação e Esquema de Banco de dados por cliente
Desempenho compartilhado
Aplicação e Esquema de Banco de dados por cliente
Desempenho compartilhado
Gerenciamento dos clientes
Aplicação e Esquema de Banco de dados por cliente
Desempenho compartilhado
Gerenciamento dos clientes
Falhas no banco afeta todos os clientes alocados naquela instância
Aplicação e Esquema de Banco de dados por cliente
Desempenho compartilhado
Gerenciamento dos clientes
Falhas no banco afeta todos os clientes alocados naquela instânciaRequer maior automatização da infraestrutura
Aplicação e Banco de dados compartilhados
C3
CN
...
App
C1
C2
C4 DB
Aplicação e Banco de dados compartilhados
C3
CN
...
App
C1
C2
C4 DB
Aplicação e Banco de dados compartilhados
C3
CN
...
App
C1
C2
C4 DB
Aplicação e Banco de dados compartilhados
C3
CN
...
App
C1
C2
C4 DB
Aplicação e Banco de dados compartilhados
C3
CN
...
App
C1
C2
C4 DB
Aplicação e Banco de dados compartilhados
C3
CN
...
App
C1
C2
C4 DBApp
DB
Aplicação e Banco de dados compartilhados
C3
CN
...
App
C1
C2
C4 DBApp
DB
Aplicação e Banco de dados compartilhados
C3
CN
...
App
C1
C2
C4 DBApp
DB
Aplicação e Banco de dados compartilhados
C3
CN
...
App
C1
C2
C4 DBApp
DB
Aplicação e Banco de dados compartilhados
C3
CN
...
App
C1
C2
C4DB
AppDB
Aplicação e Banco de dados compartilhados
C3
CN
...
App
C1
C2
C4DB
AppDB
Aplicação e Banco de dados compartilhados
C3
CN
...
App
C1
C2C4
DBApp
DB
Aplicação e Banco de dados compartilhados
C3
CN
...
App
C1
C2C4
DBApp
DB
Aplicação e Banco de dados compartilhados
C3
CN
...
App
C1
C2C4
DBApp
DB
Aplicação e Banco de dados compartilhados
C3
CN
...
App
C1
C2C4
DBApp
DB
Aplicação e Banco de dados para todos
Aplicação e Banco de dados para todos
Atualização dos clientes
Aplicação e Banco de dados para todos
Atualização dos clientes
Aproveitamento de recursos por máquina
Aplicação e Banco de dados para todos
Atualização dos clientes
Aproveitamento de recursos por máquina
Escalabilidade através de replicação e balanceamento de carga
Aplicação e Banco de dados para todos
Aplicação e Banco de dados para todos
Relação clientes por servidor
Aplicação e Banco de dados para todos
Relação clientes por servidor
Menor custo de licenciamento
Aplicação e Banco de dados para todos
Relação clientes por servidor
Menor custo de licenciamento
Adição de novos clientes
Aplicação e Banco de dados para todos
Relação clientes por servidor
Menor custo de licenciamento
Adição de novos clientes
Clientes “comportados” permanecem juntos
Aplicação e Banco de dados para todos
Aplicação e Banco de dados para todos
Separação de dados feito pela aplicação
Aplicação e Banco de dados para todos
Separação de dados feito pela aplicação
Maior custo de desenvolvimento
Aplicação e Banco de dados para todos
Separação de dados feito pela aplicação
Maior custo de desenvolvimento
Desempenho de um cliente impacta os outros
Aplicação e Banco de dados para todos
Separação de dados feito pela aplicação
Maior custo de desenvolvimento
Desempenho de um cliente impacta os outrosDifícil medir quem está consumindo mais recursos
Dúvidas?
Referências
http://blog.caelum.com.br/um-produto-para-muitos-clientes-implementando-multitenancy/http://www.tectura.com.br/topics/abordagens_de_multitenant?page=1http://en.wikipedia.org/wiki/Multitenancy
Top Related