Núcleo Multi-Tenente
O núcleo multi-tenente é uma camada básica de plataforma/produto que atende muitos clientes independentes (tenentes) em recursos compartilhados, com segurança de isolamento, limites controlados e customização segura. O núcleo bem projetado reduz o TCO, acelera o suprimento, simplifica os lançamentos e oferece qualidade previsível para cada locador.
1) Modelo de locação e limites de isolamento
Definições
Tenant (Tenant/Org/Account): Organização lógica com usuários, dados, políticas e limites próprios.
Isolamento: capacidade de prevenir que um locatário afete os dados, a produtividade e a segurança do outro.
Níveis de isolamento
1. Dados: BB/esquemas/tabelas individuais, criptografia «chave de locação», filtros «tenant _ id».
2. Cálculos: quotas de CPU/RAM/IO, pool de workers por tenente ou filas «ponderadas».
3. Rede: segmentação, endpoits privados/VPN, listas de permissões por locatário.
4. Operações: migrações, bacapes, DR. e incidentes de exposição «por locatário».
Pattern de Multiplicidade
Silo (isolamento severo): clusters individuais/BD por tenante. Segurança máxima, preço alto.
Pool (recursos compartilhados): infraestrutura compartilhada com isolamento lógico; melhor eficiência, maior risco de «noisy neighbor».
Bridge/Hybrid: Híbrido - plano de controle geral + seletivamente «silo» para clientes VIP/regulados.
2) Identificação e instrução de solicitações de locação
Resolução do locador
O domínio é: 'https ://a.tenant a.exampl. com`
No caminho: '/t/.
Em «X-Tenant-Id», «X-Org» (verificação de assinatura)
Marca 'tenant _ id', 'org _ id', 'place', 'scopes'
Rotação
A porta de entrada L7 (API/Ingress) retira 'tenant _ id', enriquece o contexto ('plan', limites, região) e grava em trailers/logs.
Os serviços funcionais aceitam o contexto «só leitura»; as decisões de rota e de limite são tomadas por gateway/polishi-motion.
3) Dados e esquemas: estratégias
Opções de armazenamento
Shared-schema, row-level: um conjunto de tabelas, campo 'tenant _ id', RLS rigoroso (Row-Level Security).
Shared-DB, per-schema: uma base de dados, um padrão separado por tenante; equilíbrio entre governabilidade e isolamento.
Per-DB/cluster: BD/cluster por tenante separado; mais caro, mais fácil para as exigências soberanas.
Práticas-chave
Está claro em todo o lado para transmitir 'tenant _ id' e incluí-lo nas chaves/índices compostos.
RLS/políticas de acesso ao nível de SUBD + validação de serviço «duplo cadeado».
Criptografia: hierarquia de chaves (root KMS → key-envelope por tenante → DEK por objeto).
Arquivo/retenha e «direito ao esquecimento» são administrados por políticos ao nível do locador.
4) Configurações, fichas e versões
Configurações por tenante
Tabela/armazenamento de 'tenant _ config' (plano, quotas, bandeiras de fich, localização, SLA).
As prioridades dos configs são: default plano, tenante ambiente usuário.
Configura configs com TTL curto e deficiência por evento.
Bandeiras fichas e compatibilidade
A inclusão de funcionalidades por pontos (per-tenant/per-cohort), discagem de canários.
Versioning API: contrato estável + adaptadores de borda (formatos back/forward-compatível).
5) Limites, quotas e billing
Políticas de consumo
Rate limiting: 'requests/sec' per tenant/road, 'token-baquet' com prioridades de planos.
Cotas: volume de armazenamento, número de objetos, mensagens/min, jobs/hora.
Fairness: «agendamento ponderado» das filas, além de isolar os workers para VIP.
Billing
Contadores por 'tenant _ id' (usage-métricas) → agregadores → faturas.
Snapshots usage na fronteira (idempotidade e proteção contra a perda de eventos).
Modelos: plano fixo + suprimento de consumpção, pós-pee/pró-bebe, descontos «tiered».
6) Segurança e acesso
Autenticação/Autorização
OIDC/SAML com as marcas 'tenant _ id', 'roles', 'scopes'.
RBAC/ABAC: papéis ao nível do locador (Owner/Admin/Reader), atributos do projeto/departamento.
Acesso delegado (service-to-service) com mTLS e tokens limitados.
Limites de confiança
Políticas de solicitação: verificação da assinatura de cabeçalhos, nonce/timestamp, vinculação à origem.
Segredos e chaves: rotação por-tenant, contextos KMS individuais, auditoria de operações essenciais.
Multi-region & data residency: cinning tenante para a região, fluxos cruzados-regionais controlados.
7) Observabilidade «por locatário»
Traçado e métricas
As marcas obrigatórias são «tenant _ id», «place», «region», «endpoint», «status».
SLI/SLO per tenant: `availability`, `p95 latency`, `error budget`.
Dashboards e alertas por segmentos (VIP/regulados/novos).
Logs e auditorias
Registros de ação (quem/que/quando/onde) com armazenamento imutável e retino de política de locação.
Pré-agregação de eventos para armazenamento barato, restauração de detalhes por clique.
8) Desempenho e «noisy neighbor»
Medidas anti-ruído
Limites para o nível de filas/worker, CPU-shares e IO-proporção per tenant.
Separação de cabelo: prefixos de chaves 'tenant: Se você não quiser.
Índices e planos de consulta com seletividade por 'tenant _ id'.
Lançamentos frios e pulas «quentes»
Pré-aquecimento para janelas VIP/pico.
Balas de workers elásticos por métricas (backpressure/skailing automático).
9) Atualizações e migrações sem interrupção
Estratégia
Migrações compatíveis Backward (expand → migrate → contract).
Migração «por locatários»: batch com controle de progresso, «pausa/reversão» para «tenant _ id» específico.
Migração de sementes e canários no subconjunto de locatários.
DR. e incidentes
Plano DR. com RTO/RPO per tenant; modo «read-only» parcial sem downthame global.
Isolamento do incidente: Fiusing por 'tenant _ id', apagar locatário 'quente' não afeta os outros.
10) API e protocolos
REST/gRPC com contexto de locação obrigatório (marcações/cabeçalhos).
Eventos (event-driven): topics com neiming 'tenant.
Pontos de entrada globais: A passarela L7 valida o contexto, aplica limites, criptografa o PII de política do tenente.
11) Ciclo de vida do locador
1. Mantiming: criação de registro de locação, geração de chaves/configs, ancoragem de região.
2. Ativação: lançamento do cliente OIDC/SAML, criação de papéis/políticas, quotas primárias.
3. Operação: monitoramento, billing, atualizações de bandeiras/planos.
4. Suspend/trottling: congelamento com armazenamento de dados/exportação.
5. Remoção/exportação: Retensas, bacapes personalizados, cripto-apagar chaves (crypto-shredding).
12) Mini-referência arquitetura (padrão verbal)
Edge (API): TLS/mTLS, extração 'tenant _ id', limites, auditoria.
Controle Plane: catálogo de locatários, configs, bandeiras de fich, billing, políticas.
Data Plane (Serviços): Serviços stateless, filas, corretores de cotas; Redis/kv com prefixos por tenante.
Armazenamento: RLS-BD/circuitos individuais/BD; KMS com chaves por locador; armazenamento de objeto com criptografia envelope.
Observabilidade: Trailing/métricas/logs com a tag 'tenant _ id', alertas per place.
Admin: operações isoladas (migrações/bacapes) no subconjunto de locatários.
13) Lista de controle antes da venda
- Modo único de definir 'tenant _ id' na fronteira e nos serviços.
- As políticas RLS/LCA foram testadas com testes e «cenários negativos».
- As quotas/limites/billing são validadas em cargas reais; Há uma protecção contra «brop-drop».
- Observabilidade e SLO per tenant; alertas para VIP/regulados.
- As migrações são compatíveis, há um retrocesso parcial e batches de parador.
- Os cenários DR. com RTO/RPO per tenant e exercícios regulares.
- Criptografia com chave de locação, rotação e auditoria de chaves.
- Documentação de contratos API/eventos e política de versionização.
14) Erros típicos
As migrações globais não podem ser interrompidas num locador problemático.
A dependência oculta de 'tenant _ id' na caixa/fila → a fuga de dados/cruzamento de filas.
Mistura de contextos (ação admin sem 'tenant _ id' por acaso).
Nenhuma fechadura dupla, apenas verificação de serviço sem RLS no banco de dados.
Um único limite para todo o cluster → «noisy neighbor» e uma violação SLO.
Um billing opaco sem idempotidade e uma auditoria de trailer.
15) Escolha rápida de estratégia
Isolamento/regulação rigorosa: Silo (BB/cluster), região-lock.
Eficiência balanceada: Shared-DB para schema + RLS, chaves per tenant.
Tráfego real-time alto: filas gerais com quotas «ponderadas» e workers dedicados para VIP.
Muitas customizações: bandeiras de fich + adaptadores de API, armazenamento de configurs de prioridade.
Conclusão
O núcleo multi-tenente é a disciplina dos limites da engenharia: definição explícita de 'tenant _ id', isolamento rigoroso em todas as camadas, quotas controladas e billing transparente, além de observabilidade e compatibilidade de lançamentos. Seguir os patterns descritos permite que o produto seja escalado sem sacrificar a segurança, a qualidade e a velocidade das alterações para cada locador.