Technologiematrix
Eine Eigenschaft pro Zeile, in jeder Spalte mit einer anderen Technologie umgesetzt.
Nicht normativ
- Companion-Version
- 1.0
- Bezug zu COADF Core
- 2.2
- Status
- Aktuell
- Zuletzt geprüft
Jede Zeile ist eine Architektureigenschaft; jede Spalte zeigt, wie ein Stack sie einhalten kann. Die Matrix zeigt, dass die Eigenschaft gleich bleibt, während die Technologie wechselt.
Die Matrix bewertet die Stacks nicht, und keine Spalte wird empfohlen.
Validierung an der Grenze
Prinzipien: P-1
- Java und Spring
- Jakarta Validation auf Request-Typen mit
@Valid, und erneut in der Factory der Domäne - Python und FastAPI
- Pydantic-Modelle mit
extra="forbid"und Strict Mode; FastAPI beantwortet ungültige Eingaben mit 422 - TypeScript und Node
- Ein Zod- oder JSON-Schema auf jeder empfangenden Seite, mit daraus abgeleitetem Typ
- Cloud-native und Kubernetes
- Keine Eigenschaft der Infrastruktur: Admission sieht nie Anwendungsdaten
Schemavalidierung zur Laufzeit
- Java und Spring
- Bean-Constraints und eine explizite Regel für nicht deklarierte Properties bei Typen an der Grenze
- Python und FastAPI
model_validate_jsonauf der unveränderten Antwort; ein explizites Response-Modell- TypeScript und Node
safeParsemit strikten Objekten; Ajv hinter den Routen-Schemata von Fastify- Cloud-native und Kubernetes
- Strikte Schemavalidierung von Manifesten, bevor sie angewendet werden
Weitergabe des Trace-Kontexts
Prinzipien: P-4
- Java und Spring
- Micrometer Tracing mit der OpenTelemetry-Bridge; Task-Decorators, die den Kontext weitergeben
- Python und FastAPI
- OpenTelemetry
injectundextract; der Kontext wird in Threads kopiert - TypeScript und Node
- OpenTelemetry JS mit dem AsyncLocalStorage-Kontextmanager
- Cloud-native und Kubernetes
- OpenTelemetry-SDK-Einstellungen pro Workload; standardmäßig W3C Trace Context
Dauerhafte Prüfspur
Prinzipien: P-4
- Java und Spring
- Einträge, die in der Geschäftstransaktion geschrieben werden; Datenbankberechtigungen und Trigger
- Python und FastAPI
- PostgreSQL mit einer Rolle, die nur einfügen darf, ablehnenden Triggern und idempotenten Schreibvorgängen
- TypeScript und Node
- Dasselbe PostgreSQL-Schema über einen Treiber, in der Geschäftstransaktion
- Cloud-native und Kubernetes
- Der eigene Speicher der Anwendung, niemals die Telemetrie-Pipeline
Auswertung von Regeln
Prinzipien: P-8
- Java und Spring
- Eine Schnittstelle im Besitz der Domäne mit einem OPA-Adapter, oder Regeltabellen
- Python und FastAPI
- OPA über seine REST-API hinter einer Schnittstelle; keine Entscheidung ohne Revision
- TypeScript und Node
- OPA über HTTP, oder Rego, nach WebAssembly kompiliert und im Prozess ausgewertet
- Cloud-native und Kubernetes
- OPA als Dienst oder Sidecar, mit Bundle-Revisionen in den Decision Logs
Architekturtests
- Java und Spring
- ArchUnit-Regeln oder die Verifikation von Spring Modulith
- Python und FastAPI
- Verträge von import-linter
- TypeScript und Node
- dependency-cruiser, ESLint-Regeln für Grenzen oder Project References
- Cloud-native und Kubernetes
- Tests für Manifeste und für die Admission-Regeln selbst
Durchsetzung in der CI
Prinzipien: P-6
- Java und Spring
- Architektur- und Vertragstests als erforderliche Checks
- Python und FastAPI
- Import-Verträge, negative Tests und der Veröffentlichungs-Fence als erforderliche Checks
- TypeScript und Node
- Abhängigkeitsregeln, Schematests und Vertragstests als erforderliche Checks
- Cloud-native und Kubernetes
- Ein zusammenfassender Job, der scheitert, sobald ein Fence gescheitert ist oder übersprungen wurde
Isolierung von Standards
Prinzipien: P-7
- Java und Spring
- Port-Schnittstellen im Domänenmodul; ein Adaptermodul pro Anbieter
- Python und FastAPI
- Ein
typing.Protocol-Port und ein Adapter, der als einziger den Anbieter kennt - TypeScript und Node
- Port-Schnittstellen; ein Adapterpaket pro Anbieter im Workspace
- Cloud-native und Kubernetes
- Egress zu jedem externen Dienst ausdrücklich erlaubt, und sonst nichts
Beobachtbarkeit
Prinzipien: P-4
- Java und Spring
- Micrometer Observation
- Python und FastAPI
- Die OpenTelemetry-API und das SDK
- TypeScript und Node
- Das OpenTelemetry-JS-SDK, vorab geladen, mit dem Loader-Hook für ES-Module
- Cloud-native und Kubernetes
- Eine OpenTelemetry-Collector-Pipeline, die sampeln darf
Durchsetzung beim Deployment
Prinzipien: P-6
- Java und Spring
- An die Plattform delegiert, auf der der Dienst läuft
- Python und FastAPI
- An die Plattform delegiert, auf der der Dienst läuft
- TypeScript und Node
- An die Plattform delegiert, auf der der Dienst läuft
- Cloud-native und Kubernetes
- ValidatingAdmissionPolicy oder Gatekeeper; Images per Digest; Revisionen auf jedem Objekt
