Backend26 de outubro de 2024

Top One

Backend comercial com modelagem de domínio & autorização contextual

Visão geral de engenharia & posicionamento

Um backend comercial em que modelagem de domínio, casos de uso da aplicação, fronteiras de persistência, autorização contextual e proteção automatizada contra regressões tornam a responsabilidade de negócio visível no código.

Arquitetura do fluxo de dados & estados

  1. Controller HTTP

    Autenticação & repasse de contexto

  2. Casos de uso da aplicação

    Resultados Either & autorização CASL

  3. Entidades de domínio

    Value Objects & invariantes

  4. Repositório Prisma

    Query de banco escopada por vendedor

Sequência de execução:Requisição HTTP ➔ Autenticação JWT global ➔ Autorização no caso de uso ➔ Query Prisma escopada por vendedor

Foco de engenharia & temas centrais

  • O impacto dos dados aumenta à medida que eles se tornam um compromisso comercial
  • A autenticação identifica o ator; o contexto do recurso determina as capacidades permitidas
  • Condições de autorização construídas estritamente a partir de valores autoritativos armazenados no banco de dados
  • Privacidade das coleções aplicada nas queries do repositório, não por filtros após o fetch
  • Suíte adversarial de testes de regressão protegendo as regras de isolamento entre vendedores

Principais trade-offs & decisões de engenharia

  • Estruturação da aplicação em torno de entidades de domínio, Value Objects, casos de uso da aplicação, repositórios e mappers
  • Resultados tipados da aplicação no padrão Either (Right para sucesso, Left para falhas de domínio)
  • Escopo das queries de pedidos na camada de repositório Prisma com base no ownership armazenado do vendedor
  • Proteção das fronteiras multi-tenant de pedidos com testes automatizados de regressão contra acesso entre vendedores

Evidências de implementação verificadas

  • Operações sobre um único pedido verificam o ownership armazenado do vendedor em registros autoritativos do banco
  • Coleções de pedidos do vendedor escopadas no nível da query do repositório, preservando a privacidade
  • Suíte automatizada de testes na fronteira HTTP verificando a negação de acesso entre tenants

Stack tecnológica verificada

  • NestJS
  • Prisma ORM
  • PostgreSQL
  • Autorização CASL
  • Tipos de resultado no padrão Either
  • Eventos de Domínio
  • Testes HTTP & de Integração

Escopo do projeto

  • Foco em arquitetura backend em camadas, modelagem de domínio comercial, autorização contextual, ownership autoritativo do vendedor, queries escopadas por vendedor, resultados tipados da aplicação e proteção automatizada contra regressões.
  • Utiliza configurações de origem específicas por ambiente.