Design Pattern: Como arquitetar uma aplicação multi-tenant

preview_player
Показать описание
Nesse vídeo você entenderá o que são aplicações multi-tenant e quais são as principais formas de se trabalhar usando essa abordagem.

E não esquece de deixar seu 👍 nos vídeos. Isso nos ajuda a saber se você tá curtindo, beleza?

→ Siga-nos no Instagram: @devfullcycle
Рекомендации по теме
Комментарии
Автор

Muito bom o vídeo, mas será que não rola um outro vídeo com foco no código de como ficaria uma aplicação nessa arquitetura? Algo mais básico mas que fosse um ponto de partida...

douglasoliveira
Автор

Na empresa onde trabalho, independente do cliente, grande/medio/pequeno, separamos por ID, usamos um master e 2 slaves, as operações de escrita são no master e as de leitura o balancer direciona para os slaves. Isso ajuda bastante a aliviar o master

Ravekx
Автор

Eu tenho um SaaS para clinicas médicas e recentemente migrei pra multitenant. Antes, precisava criar uma aplicação diferente pra cada nova clínica. A maneira que faço é dentro de uma mesma instância do banco, crio 1 schema pra cada clinica nova. E, nas requisições, mando o tenant id sempre pra diferenciar.

joaoluismoraes
Автор

Passei a adotar o modelo de um banco para cada cliente. Tenho um banco onde salvo as informações de autenticação de cada cliente (meu) e identifico quem tá usando o sistema pelo subdomínio. Quando o cliente acessa o sistema eu verifico de quem se trata, carrego as informações dele para um redis (para evitar essa consulta o tempo todo) e a partir daí a conexão com o banco de dados é feito de forma dinâmica. Consigo assim permitir até que o cliente hospede o banco de dados em um servidor próprio se achar necessário.

wgwalisongomes
Автор

Já trabalhei em vários produtos Saas, e sem dúvida a melhor opção foi usando microservicos. Tínhamos um serviço exclusivo para administrar os tenants e gerênciar a autentiação e autorização deles. Cada microservicos tinha seu próprio database e separavamos os tenants por schema (Postgres)

jucelinofilho
Автор

Otimo conteudo, hoje temos os 2 cenarios multiplos databases e o tenant_id nas tabelas então temos opção de ter um banco para clientes de pequeno porte onde segregamos um numero x de clientes por banco de dados e também bancos totalmente separados para clientes de medio e grande porte

williamsantos
Автор

Neste exato momento estou atuando em um SaaS pessoal onde implementei a metodologia Multi-Tenant.

walissonwaal
Автор

Show demais mestre. Aqui na empresa usamos o Dynamo e separamos logicamente apenas utilizando a estratégia da PK.

brunoandrade
Автор

que legal, eu ja trabalhei com uma aplicacao multi-tenant e nem sabia!
construimos um SaaS na empresa, o produto era comercializado para os clientes, pay-per-use

era um gerador de assinaturas de email, o cliente criava uma assinatura, e aplicava no email corporativo para todos os usuarios

o sistema nao era de grande porte, era uma API rest monolita em java/spring, o front era em vue.js, e ambos rodavam no PaaS do GCP (em maquinas diferentes) e o banco de dados era apenas 1, era cloud firestore, banco NoSQL do GCP,

ate hoje me pergunto se escolhemos o banco certo... Sempre achei que tivesse sido um erro essa escolha, e que deveria ser SQL padrao, mas agora assistindo o video, talvez essa escolha de usar NoSQL faça sentido, se tratando de uma app multi-tenant

artu_almeida
Автор

Na empresa implementamos com o multi database porque existem customizações inerentes ao negócio de cada cliente, uma base central que serve de template e filhos que herdam suas características, o que é inerente de cada negócio modificamos somente na base e implementamos na aplicação através de interfaces.

cadu
Автор

Não trabalhei com tabelas, penso que pra ter o trabalho de balanceamento e rastreio do tenant teria que marcar em muitos lugares, novos schemas ou data base acho mais apropriado pra esse tipo de arquitetura. Mas aquela velha nenhuma empresa nasce grande senão todos teriam microservice, docker, ambientes (dev/hom/prod), redundância e com monitoramento pesado pra tudo isso SLA 99, 99%, mas quem iria pagar tudo isso se pode fazer um monolito que atende dentro de VPS e que custa 1/50 disso 🤷‍♂️ antes de pensar em todo essa arquiterura digna do coliseu, se o seu cliente só tá pedindo uma casa de 100m2

andrebonatti
Автор

Muito bom. Não sabia de muitos pontos que apresentou.

marcosoliveira
Автор

Uso um banco de dados para cada cliente, e separo o acesso por subdomínio

avinicius.adorno
Автор

Top demais!!
Achei essa abordagem de 1 db para pequenas e médias e outro para cada grande empresa muito top. Tenho uma duvida: no caso desse 1 db para pequenas e médias, pensando no isolamento dos dados, poderíamos usar schemas para cada empresa?
Sei que pode parecer troca 6 por meia dúzia visto que terão que ser criadas as tabelas de novo, mas não há nenhum ganho ao utilizar esse recurso?

jvidalnunes
Автор

Atualmente eu trabalho no modelo de primary key, mas temos um problema muito grande pois as aplicacoes backend sao java 8 e muitos clientes juntos. Temos problemas constantes de vazamento de memoria mesmo sendo microservices. O backend consome quase 80gb de ram diariamente na AWS. Estamos buscando formas de conseguir desacoplar mais a aplicacao e buscando alternativas mais leves como nodejs, onde conseguimos consumor menor de ate 90% de memoria usando 20 replicas para aguentar a quantidade de requests feitas. Sao quase 100k US$ por mes so de infra

rntbczk
Автор

Pelo que eu entendi, no modelo de PK, o tenant_id sempre vai na PK de outras tabelas. Desta forma, Quando eu criar uma tabela que se relaciona com outra tabela (por exemplo itens do produto), eu referencio o tentant_id como chave estrangeira da tabela de tenant, ou da tabela de produto, já que eu também vou ter que referenciar ela?

leonardoperes-sonc
Автор

quero entender mais, pois estou montando uma api que vai ser pra multi-tenant então, quero saber se é melhor separar por banco

devborges
Автор

Na empresa que trabalho, separamos por esquemas do banco de dados

wandedevs
Автор

Olá obrigado pela aula e conhecimento, uma duvida, alguns bancos permite o uso de schemas, sei que a finalidade não é essa, mais o uso é muita gambiarra ? abs ...

cristianomachado
Автор

Qual a diferença para uma aplicação white label?

Oculterous