Pular para o conteúdo

apps/architecture/cell-based

047 · Arquiteturas de Alto Nível (Macro-Architecture) · ≈ 6 min de estudo

Cell-Based Architecture

Particiona a infraestrutura inteira em células — cada uma com aplicação e banco próprios, nada compartilhado — e distribui clientes entre elas por uma chave de roteamento. Um bug, uma sobrecarga ou a queda de um banco atinge só os clientes daquela célula. É o Deployment Stamps: a célula é a unidade de falha, de escala e de deploy.

passos
6
arquivos
7
teste
1
tecnologias
5
Infraestrutura realTypeScriptBunElysiaPostgreSQLDocker
Baixar cartão

Cenário

Banco digital operando no Brasil e no México, com dados que não podem se misturar por regulação. Cada país é uma célula completa. Quando a célula Brasil cai, os clientes brasileiros recebem 503; os mexicanos seguem operando normalmente, porque nada da célula México depende da brasileira.

Planta

Fluxo
6/6
ClienteRoteador: país no id da contaAPI da célula BrasilAPI da célula MéxicoBanco da célula BrasilBanco da célula MéxicoBR-...MX-...nunca redirecionapara outra célula
6

6 passos — reproduza para seguir o fluxo

Como funciona

6 passos

Células independentes limitam o raio de falha.

Esconde cada passo: lembre antes de tocar para revelar.

  1. 01

    O roteador deriva a célula da conta (BR- → Brasil, MX- → México); o cliente nunca escolhe a célula

  2. 02

    Cada célula tem sua API e seu banco; o débito faz a checagem de saldo no próprio UPDATE

  3. 03

    O roteador encaminha com timeout e repassa a resposta da célula como está — inclusive a recusa de saldo

  4. 04

    Célula fora do ar vira 503 com o nome da célula; o roteador não tenta outra célula

  5. 05

    Banco da célula fora do ar vira 503 na própria célula, sem vazar erro interno

  6. 06

    Relatório consolidado entre países sai de um pipeline à parte, nunca de JOIN entre bancos de células

Trade-offs

O que se ganha, o que se paga

3 vantagenscada ganho tem um preço3 custos

Vantagens

  • Falha limitada à célula

  • Deploy e escala por célula

  • Dados segregados por país ou cliente

Custos

  • N vezes mais infraestrutura

  • Relatório entre células exige pipeline próprio

  • Roteador vira o componente mais crítico

apps/architecture/cell-based

7 arquivos

./

  • docker-compose.ymlinfraBanco de cada célula, Brasil em 5432 e México em 5433

sql/

  • 01_schema.sqlschemaTabela de contas, igual em todas as células

src/

  • api_cell.tsAPI de uma célula sobre o próprio banco
  • router_cell.tsChave de roteamento e encaminhamento sem failover
  • config_cell.tsVariáveis de ambiente validadas no boot
  • demo.tsdemoDuas células, roteamento e queda da célula Brasil
  • router_cell.test.tstesteRoteamento, conta sem célula, recusa repassada e falha contida contra dois bancos reais

Executar · com Docker

  1. docker compose up -d --wait# sobe PostgreSQL
  2. bun install# dependências
  3. bun run demo# roda o cenário
  4. bun run test# integração contra o serviço real
Requisitos
BunDocker
Sobe junto
PostgreSQL

Por que se relacionam

Teste rápido

Qual padrão vem antes de Cell-based Architecture?

Próximo projeto · Arquiteturas de Alto Nível (Macro-Architecture)Pipes and Filters
Esc

↑ ↓ navegarEnter abrir191 resultados