Ir al contenido

Proyecto independiente de I+D · Colonia

Matriz tecnológica

Una propiedad por fila, mantenida con una tecnología distinta en cada columna.

No normativo

Versión del Companion
1.0
Corresponde a COADF Core
2.2
Estado
Vigente
Última revisión

Cada fila es una propiedad de arquitectura; cada columna muestra cómo puede mantenerla un stack. La matriz muestra que la propiedad sigue siendo la misma mientras cambia la tecnología.

La matriz no clasifica los stacks y no recomienda ninguna columna.

  1. Validación en la frontera

    Principios: P-1

    Java y Spring
    Jakarta Validation en los tipos de petición con @Valid, y de nuevo en la factoría del dominio
    Python y FastAPI
    Modelos de Pydantic con extra="forbid" y modo estricto; FastAPI responde a la entrada no válida con 422
    TypeScript y Node
    Un esquema de Zod o JSON Schema en cada lado receptor, con el tipo inferido a partir de él
    Cloud-native y Kubernetes
    No es una propiedad de la infraestructura: la admisión nunca ve los datos de la aplicación
  2. Validación de esquemas en tiempo de ejecución

    Principios: P-1, P-5

    Java y Spring
    Restricciones de Bean Validation, y una política explícita sobre propiedades no declaradas para los tipos de frontera
    Python y FastAPI
    model_validate_json sobre la respuesta en bruto; un modelo de respuesta explícito
    TypeScript y Node
    safeParse con objetos estrictos; Ajv detrás de los esquemas de ruta de Fastify
    Cloud-native y Kubernetes
    Validación estricta de esquema de los manifiestos antes de aplicarlos
  3. Propagación de la traza

    Principios: P-4

    Java y Spring
    Micrometer Tracing con el puente de OpenTelemetry; decoradores de tareas que propagan el contexto
    Python y FastAPI
    inject y extract de OpenTelemetry; el contexto copiado a los hilos
    TypeScript y Node
    OpenTelemetry JS con el gestor de contexto AsyncLocalStorage
    Cloud-native y Kubernetes
    Ajustes del SDK de OpenTelemetry por carga de trabajo; W3C Trace Context por defecto
  4. Traza de auditoría persistente

    Principios: P-4

    Java y Spring
    Entradas escritas en la transacción de negocio; permisos y triggers de la base de datos
    Python y FastAPI
    PostgreSQL con un rol que solo puede insertar, triggers de rechazo y escrituras idempotentes
    TypeScript y Node
    El mismo esquema de PostgreSQL a través de un driver, en la transacción de negocio
    Cloud-native y Kubernetes
    El almacén propio de la aplicación, nunca la pipeline de telemetría
  5. Evaluación de reglas

    Principios: P-8

    Java y Spring
    Una interfaz que pertenece al dominio con un adaptador para OPA, o tablas de reglas
    Python y FastAPI
    OPA mediante su API REST detrás de una interfaz; ninguna decisión sin versión
    TypeScript y Node
    OPA por HTTP, o Rego compilado a WebAssembly y evaluado dentro del proceso
    Cloud-native y Kubernetes
    OPA como servicio o sidecar, con las versiones de los bundles en los logs de decisión
  6. Pruebas de arquitectura

    Principios: P-1, P-6, P-7

    Java y Spring
    Reglas de ArchUnit, o la verificación de Spring Modulith
    Python y FastAPI
    Contratos de import-linter
    TypeScript y Node
    dependency-cruiser, reglas de fronteras de ESLint o project references
    Cloud-native y Kubernetes
    Pruebas para los manifiestos y para las propias reglas de admisión
  7. Aplicación en la CI

    Principios: P-6

    Java y Spring
    Pruebas de arquitectura y de contrato como comprobaciones obligatorias
    Python y FastAPI
    Contratos de importación, pruebas negativas y el fence de publicación como comprobaciones obligatorias
    TypeScript y Node
    Reglas de dependencias, pruebas de esquemas y pruebas de contrato como comprobaciones obligatorias
    Cloud-native y Kubernetes
    Un job de resumen que falla cuando algún fence falló o se omitió
  8. Aislamiento de normas

    Principios: P-7

    Java y Spring
    Interfaces de puerto en el módulo de dominio; un módulo adaptador por proveedor
    Python y FastAPI
    Un puerto typing.Protocol y un adaptador que es el único que conoce al proveedor
    TypeScript y Node
    Interfaces de puerto; un paquete adaptador por proveedor en el workspace
    Cloud-native y Kubernetes
    Salida (egress) hacia cada servicio externo permitida de forma explícita, y nada más
  9. Observabilidad

    Principios: P-4

    Java y Spring
    Micrometer Observation
    Python y FastAPI
    La API y el SDK de OpenTelemetry
    TypeScript y Node
    El SDK de OpenTelemetry JS, precargado, con el hook del cargador para módulos ES
    Cloud-native y Kubernetes
    Una pipeline del OpenTelemetry Collector, que puede muestrear
  10. Aplicación en el despliegue

    Principios: P-6

    Java y Spring
    Delegada en la plataforma en la que se ejecuta el servicio
    Python y FastAPI
    Delegada en la plataforma en la que se ejecuta el servicio
    TypeScript y Node
    Delegada en la plataforma en la que se ejecuta el servicio
    Cloud-native y Kubernetes
    ValidatingAdmissionPolicy o Gatekeeper; imágenes por digest; versiones en cada objeto

COADF Engineering Companion 1.0 · no normativo · corresponde a COADF Core 2.2

Derechos de publicación reservados. Por ahora no se concede ninguna licencia pública para el COADF Engineering Companion 1.0 ni para sus ejemplos de referencia.

Estado de propiedad intelectual y de publicación