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.
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
Validación de esquemas en tiempo de ejecución
- 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_jsonsobre la respuesta en bruto; un modelo de respuesta explícito- TypeScript y Node
safeParsecon 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
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
injectyextractde 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
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
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
Pruebas de arquitectura
- 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
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ó
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.Protocoly 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
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
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
