Ir para o conteúdo

Projeto independente de P&D · Colônia

Matriz tecnológica

Uma propriedade por linha, mantida por uma tecnologia diferente em cada coluna.

Não normativo

Versão do Companion
1.0
Corresponde ao COADF Core
2.2
Status
Atual
Última revisão

Cada linha é uma propriedade de arquitetura; cada coluna mostra como uma stack pode mantê-la. A matriz mostra que a propriedade continua a mesma enquanto a tecnologia muda.

A matriz não classifica as stacks e não recomenda nenhuma coluna.

  1. Validação na fronteira

    Princípios: P-1

    Java e Spring
    Jakarta Validation nos tipos de requisição com @Valid, e de novo na fábrica do domínio
    Python e FastAPI
    Modelos Pydantic com extra="forbid" e modo estrito; o FastAPI responde a entradas inválidas com 422
    TypeScript e Node
    Um esquema Zod ou JSON Schema em cada lado que recebe, com o tipo inferido a partir dele
    Cloud-native e Kubernetes
    Não é uma propriedade da infraestrutura: a admissão nunca vê dados da aplicação
  2. Validação de esquema em tempo de execução

    Princípios: P-1, P-5

    Java e Spring
    Restrições de Bean, e uma política explícita sobre propriedades não declaradas nos tipos de fronteira
    Python e FastAPI
    model_validate_json sobre a resposta bruta; um modelo de resposta explícito
    TypeScript e Node
    safeParse com objetos estritos; Ajv por trás dos esquemas de rota do Fastify
    Cloud-native e Kubernetes
    Validação estrita de esquema dos manifestos antes de serem aplicados
  3. Propagação do rastro

    Princípios: P-4

    Java e Spring
    Micrometer Tracing com a ponte para OpenTelemetry; decoradores de tarefa que propagam o contexto
    Python e FastAPI
    inject e extract do OpenTelemetry; o contexto copiado para as threads
    TypeScript e Node
    OpenTelemetry JS com o gerenciador de contexto AsyncLocalStorage
    Cloud-native e Kubernetes
    Configurações do SDK do OpenTelemetry por carga de trabalho; W3C Trace Context por padrão
  4. Trilha de auditoria persistente

    Princípios: P-4

    Java e Spring
    Entradas gravadas na transação de negócio; permissões e triggers do banco de dados
    Python e FastAPI
    PostgreSQL com um papel que só pode inserir, triggers de recusa e escritas idempotentes
    TypeScript e Node
    O mesmo esquema PostgreSQL por meio de um driver, na transação de negócio
    Cloud-native e Kubernetes
    O armazenamento da própria aplicação, nunca a pipeline de telemetria
  5. Avaliação de regras

    Princípios: P-8

    Java e Spring
    Uma interface que pertence ao domínio, com um adaptador para OPA, ou tabelas de regras
    Python e FastAPI
    OPA pela sua API REST, atrás de uma interface; nenhuma decisão sem versão
    TypeScript e Node
    OPA por HTTP, ou Rego compilado para WebAssembly e avaliado no próprio processo
    Cloud-native e Kubernetes
    OPA como serviço ou sidecar, com as versões do bundle nos logs de decisão
  6. Testes de arquitetura

    Princípios: P-1, P-6, P-7

    Java e Spring
    Regras do ArchUnit, ou a verificação do Spring Modulith
    Python e FastAPI
    Contratos do import-linter
    TypeScript e Node
    dependency-cruiser, regras de fronteira do ESLint, ou project references
    Cloud-native e Kubernetes
    Testes para os manifestos e para as próprias regras de admissão
  7. Aplicação na CI

    Princípios: P-6

    Java e Spring
    Testes de arquitetura e de contrato como verificações obrigatórias
    Python e FastAPI
    Contratos de importação, testes negativos e o fence de publicação como verificações obrigatórias
    TypeScript e Node
    Regras de dependência, testes de esquema e testes de contrato como verificações obrigatórias
    Cloud-native e Kubernetes
    Um job de resumo que falha quando algum fence falhou ou foi pulado
  8. Isolamento de normas

    Princípios: P-7

    Java e Spring
    Interfaces de porta no módulo de domínio; um módulo adaptador por fornecedor
    Python e FastAPI
    Uma porta typing.Protocol e um adaptador que é o único a conhecer o fornecedor
    TypeScript e Node
    Interfaces de porta; um pacote adaptador por fornecedor no workspace
    Cloud-native e Kubernetes
    Egress liberado explicitamente para cada serviço externo, e para nada mais
  9. Observabilidade

    Princípios: P-4

    Java e Spring
    Micrometer Observation
    Python e FastAPI
    A API e o SDK do OpenTelemetry
    TypeScript e Node
    O SDK JS do OpenTelemetry, pré-carregado, com o hook de loader para módulos ES
    Cloud-native e Kubernetes
    Uma pipeline do OpenTelemetry Collector, que pode fazer amostragem
  10. Aplicação no deploy

    Princípios: P-6

    Java e Spring
    Delegada à plataforma em que o serviço roda
    Python e FastAPI
    Delegada à plataforma em que o serviço roda
    TypeScript e Node
    Delegada à plataforma em que o serviço roda
    Cloud-native e Kubernetes
    ValidatingAdmissionPolicy ou Gatekeeper; imagens por digest; versões em todo objeto

COADF Engineering Companion 1.0 · não normativo · corresponde ao COADF Core 2.2

Direitos de publicação reservados. Nenhuma licença pública é concedida, no momento, para o COADF Engineering Companion 1.0 nem para seus exemplos de referência.

Status de propriedade intelectual e de publicação