menu_book Arquitetura complementar — do livro

Cassino como Serviço

Transforme um cassino numa frota de operadores

Um sistema que cria um cassino novo, completamente separado, para cada parceiro de negócio — sob demanda. Cada parceiro recebe seu próprio banco de dados, endereço web, certificado de segurança e regras do país — rodando numa infraestrutura compartilhada (Kubernetes e Cloudflare), mas totalmente isolado dos demais. Um único comando faz tudo isso em minutos, não em meses.

lightbulb Cresça de forma simples. Multiplique de forma rápida.

Você não reconstrói o cassino para cada novo cliente — você o multiplica. Pegamos a plataforma de cassino existente e já testada e fazemos uma cópia separada e privada para cada cliente. Cada cópia roda no seu próprio espaço isolado, com banco de dados, senhas de acesso, certificado de segurança, endereço web e regras do país próprios. Os clientes gerenciam tudo por um único sistema de administração compartilhado; os jogadores só enxergam o cassino do próprio cliente, nunca o de outro.

Termos-chave
Tenant
— o cassino privado de um cliente.
White-label
— o cliente opera esse cassino com a própria marca.
Control-plane
— o sistema que cria e gerencia cada tenant.
Provisioning
— a configuração automatizada de um novo tenant.

tune Decisões-chave

Estratégia

Control-plane por cima do runtime existente — reuso máximo, risco mínimo.

Isolamento

Silo: cada cliente recebe uma cópia completamente separada com banco de dados próprio — sem precisar reescrever nenhum código existente.

Onde roda

Clusters Kubernetes existentes; Cloudflare na borda para roteamento, WAF e TLS.

Modelo de negócio

White-label B2B — operadores externos como tenants, cada um com sua marca e cobrança.

Fonte da verdade

Cada cliente é definido como código no Git; uma ferramenta de automação (ArgoCD) mantém o sistema em produção sempre alinhado com essa definição.

MVP

O cassino de um segundo cliente, funcionando de ponta a ponta: criado por um único comando e completamente separado do primeiro.

account_tree Contexto do sistema

Existem duas camadas. O control-plane é onde você cria e gerencia clientes. O data-plane é o conjunto de cassinos em execução — uma cópia separada por cliente. Os clientes usam o control-plane; os jogadores acessam apenas o próprio cassino.

Contexto do sistema
OperadorCliente white-label usa o console
JogadorAcessa apenas o cassino do tenant
Control-plane CaaS
API + console de operadorCria e gerencia tenants
Registro de tenantsCRD como fonte da verdade
Orquestrador de provisioningTransforma definição em runtime
Metering e billingLe uso da observabilidade
Serviços compartilhados
ArgoCDSincronia GitOps
OpenBaoSegredos por tenant
cert-managerCertificados TLS
Prometheus / GrafanaMétricas e status
Data-plane
Tenant ARuntime isolado
Tenant BRuntime isolado
Operador → control-plane → GitOps/serviços compartilhados → um runtime isolado por tenant.

apartment Por que isolamento "silo"

Em um negócio regulado, manter os dados de cada cliente fisicamente separados é mais seguro do que misturar tudo nas mesmas tabelas. O banco de dados de cada cliente fica no próprio espaço, pode residir no país exigido pela licença, e um problema com um cliente nunca afeta os outros. Também reaproveitamos o código existente do cassino sem precisar reescrevê-lo. A contrapartida: o esforço real se concentra em automatizar a criação de cada cópia separada.

CritérioSilo (escolhido)Pooled + RLS
Isolamento de dadosFísico (mais forte)Lógico (RLS)
Blast radius1 tenantTodos
Reuso do código atualTotalRefactor invasivo
Custo por tenantMaiorMenor

rocket_launch Fluxo de provisioning

A configuração é idempotente — ou seja, você pode rodá-la quantas vezes quiser e sempre chega no mesmo estado correto, sem duplicatas. Se um passo já foi concluído, ele é simplesmente confirmado e pulado.

Fluxo de provisioning
Operador
Cria tenant com marca, domínio e jurisdição.
Control-plane
Faz commit do Tenant CR no repositório GitOps.
ArgoCD
Detecta novo CR e aplica o ApplicationSet.
Orquestrador
Cria namespace, NetworkPolicy, Postgres, segredos e certificado.
Cluster
Implanta Helm release, roda migrations e smoke test.
Control-plane
Status vira active; operador recebe a URL do tenant.

cloud A borda Cloudflare

O mesmo processo de configuração também prepara o ponto de entrada público no Cloudflare. Cada cliente recebe seu próprio endereço web e certificado HTTPS, mais um pequeno programa rodando na borda do Cloudflare que reconhece o endereço, encaminha o visitante para o cassino certo e aplica a marca daquele cliente. O sistema também adiciona filtros de segurança e limites de tráfego por cliente. Tudo isso é escrito como código com Terraform, então é repetível.

Setup da borda Cloudflare
Control-plane
Aplica módulo do tenant via Terraform.
DNS
Cria registro do domínio apontando para o ingress.
Worker
Publica route do domínio do tenant para o Worker de borda.
Workers KV
Mapeia domínio para tenant e tema para resolução na borda.
WAF
Aplica rate-limit, bot e geo rules por tenant.
Estado Terraform
Registra outputs de volta no control-plane.

No conjunto, o visitante chega ao Cloudflare, que verifica e filtra a requisição e a encaminha para o cassino do cliente certo rodando dentro do cluster:

Caminho da requisição
JogadorDomínio do operador
WAF / rate-limitFiltro na borda Cloudflare
Worker + KVDomínio para tenant e tema
Ingress do tenantRoteamento no cluster
App + DB isoladosRuntime do tenant

dns Onde rodar: on-premise, AWS ou Cloudflare

O cassino em si roda em Kubernetes — no seu próprio hardware (on-premise) ou em uma nuvem gerenciada como a AWS. A Cloudflare fica sempre na frente, como a porta de entrada pública. A mesma ferramenta de configuração e o mesmo pacote funcionam nas três; só muda o lugar, então você pode começar on-premise e migrar para a nuvem depois sem reescrever nada.

Local de runtime
JogadorRequisição pública
Borda CloudflareRoteamento, segurança, HTTPS
Escolha onde o cassino roda
Kubernetes on-premiseHardware próprio, controle máximo
AWSKubernetes gerenciado e banco gerenciado
lan K8s on-premise

Seus próprios servidores. Controle máximo e os dados ficam no seu prédio.

  1. A ferramenta cria o namespace, o banco, os segredos e o certificado.
  2. O GitOps implanta o pacote do tenant.
  3. O gate de segurança e compliance roda; o cassino entra no ar.
cloud_queue AWS

Nuvem gerenciada. Escala para cima e para baixo sob demanda, menos hardware para cuidar.

  1. O Terraform monta a rede, o Kubernetes gerenciado e o banco gerenciado.
  2. O mesmo pacote implanta cada tenant.
  3. O mesmo gate roda; o cassino entra no ar.
public Cloudflare

A porta de entrada global — não é onde o cassino roda, mas o que todo jogador acessa primeiro.

  1. O Terraform configura o endereço web, o certificado e as regras de segurança.
  2. Um programa na borda encaminha cada jogador ao tenant certo e aplica a marca.
  3. O tráfego é filtrado e encaminhado ao runtime escolhido.
 K8s on-premAWSCloudflare
PapelRoda o cassinoRoda o cassinoPorta de entrada
ControleTotalCompartilhado (gerenciado)Só config da borda
EscalaComprar hardwareElástica, sob demandaGlobal, automática
CustoFixo (hardware próprio)Paga conforme usaBaixo / por requisição
Local dos dadosNo seu prédioEscolhe a regiãoBorda (só cache)
Esforço de operaçãoVocê operaMenor (gerenciado)Mínimo
Latência ao jogadorRegionalRegionalBorda global

timeline Ciclo de vida do tenant

Ciclo de vida do tenant
RequestedOperador cria
ProvisioningControl-plane aplica CR
ActiveSmoke test OK
SuspendedBilling / compliance
ArchivedBackup + retenção
Erros de provisioning voltam para provisioning por retry idempotente; tenants suspensos voltam para active após regularização.

shield Isolamento por tenant

Isolamento por tenant
Namespace tenant-a
App AAcessa apenas DB A
DB ABanco dedicado
OpenBao
secret/tenants/a/*Injetado no App A
secret/tenants/b/*Injetado no App B
NetworkPolicyAcesso entre bancos negado
Namespace tenant-b
App BAcessa apenas DB B
DB BBanco dedicado

verified_user Regulação, segurança e compliance

Um cassino novo não entra no ar antes de passar por um gate automático. Primeiro vêm as verificações de segurança: vulnerabilidades conhecidas no software, senhas vazadas, configuração insegura e a confirmação de que o cassino está travado no nível dos pods e da rede. Depois vêm as verificações de compliance, ligadas ao país do cliente: regras de identidade e antilavagem de dinheiro, limites de jogo responsável, uma trilha de auditoria completa e os relatórios que o regulador exige. Se algo falha, o cassino continua desligado e o time é avisado.

Gate de segurança e compliance
Cassino novo implantadoAinda não público
Verificações de segurançaVulnerabilidades, segredos vazados, config insegura, pods/rede travados
Verificações de complianceIdentidade, AML, jogo responsável, auditoria, relatórios
Tudo aprovadoCassino entra no ar
Alguma falhaBloqueado e time avisado

As regras exatas vêm da configuração de país de cada cliente. O Brasil, por exemplo, exige checagem de identidade por CPF, pagamentos via PIX e relatório SIGAP em tempo real; Malta (MGA) e o Reino Unido (UKGC) têm suas próprias exigências de identidade, pagamento e relatórios. Um cassino demo roda sem dinheiro real e com verificações mínimas.

map Roadmap até o MVP

Roadmap do MVP
16 jun · fundações
Semana 3 · automação
Semana 5 · gate MVP
Depois · camada produto
Fase 0
Tornar tenants declarativos
Tenant CR + repo GitOps, depois parâmetros Helm do runtime
  • Uma definição de tenant no Git
  • Valores de chart reutilizáveis por marca
  • Modelo base de segredos e certificado
Fase 1
Automatizar provisioning
caasctl provision, idempotente por desenho
  • Namespace, NetworkPolicy e banco
  • OpenBao, cert-manager e Helm release
  • Migrations e smoke test conectados
Fase 2 · crítico
Segundo tenant live ponta a ponta
Prova do MVP: uma cópia real e isolada do cassino
  • Cadastro, depósito e aposta funcionam no tenant B
  • Saldos e dados de jogador ficam separados
  • Teste automático de isolamento bloqueia acesso cruzado
Fase 3+
Operar como produto
API control-plane + console do operador
  • Status, billing e uso por tenant
  • Ações de ciclo de vida
  • Evidência de compliance por jurisdição
Sinal de saída do MVPUm comando cria o tenant B do zero e uma nova execução não altera nada.
Redução de riscoIsolamento, repetibilidade e gate de compliance são provados antes do polimento do console.

O primeiro marco é atingido quando: um único comando cria um segundo cassino completamente separado do zero; rodar esse comando de novo não muda nada; um jogador consegue se cadastrar, depositar e apostar nele; o saldo desse jogador fica completamente separado do primeiro cassino; e um teste automatizado prova que os dois cassinos não conseguem acessar a rede, os dados nem os segredos um do outro.