1. Einleitung
Dieses Dokument beschreibt die Architektur des Projekts XYZ, inklusive Systemkontext, Komponenten, Technologien und operativer Aspekte.
Zielgruppe: Entwickler, Architekten, DevOps, Stakeholder Ziel: Verständliche Dokumentation für Design- und Betriebsentscheidungen.
2. Systemübersicht
2.1 Systemkontext (ArchiMate: Business Layer)
| |
In ArchiMate:
Business Actor= EndkundeApplication Service= Webportal/APIBusiness Role= Admin
3. Technologiestack
| Komponente | Technologie |
|---|---|
| Frontend | Vue.js, Bootstrap |
| Backend | FastAPI (Python) |
| Authentifizierung | Keycloak, OIDC |
| Persistenz | PostgreSQL, Redis |
| Infrastruktur | Kubernetes (kind/dev), Helm |
| CI/CD | GitLab CI, Skaffold |
4. Komponentenarchitektur (ArchiMate: Application Layer)
| |
ArchiMate-Elemente:
Application Component= Auth Service, Daten ServiceApplication Interface= REST APIApplication Collaboration= API LayerArtifact= Helm Chart
5. Datenarchitektur
- PostgreSQL: relationale Datenbank
- Redis: Cache für Sessions
- S3 (Minio): Dateiuploads
- Datenmodell: siehe Anhang A (ER-Diagramm)
6. Sicherheitsarchitektur
- Auth: OIDC mit Keycloak
- Autorisierung: Rollenbasiert + Attribute
- TLS: via Caddy mit Auto-HTTPS (Let’s Encrypt)
- Secrets: Vault mit Kubernetes Auth
7. Nicht-funktionale Anforderungen
| Anforderung | Zielwert |
|---|---|
| Verfügbarkeit | ≥ 99.9% (prod) |
| Latenz API | ≤ 200 ms p95 |
| Skalierbarkeit | horizontal, stateless |
| Monitoring | Prometheus, Loki, Grafana |
| Backup | Täglich (DB, S3) |
8. Betrieb und Deployment
- Environments: dev, staging, prod
- Helm-Charts mit Values pro Umgebung
- Deployment via Skaffold → Kubernetes
- Monitoring & Logging integriert
- Deployment-Strategie: Rolling
8. Build & Deployment Pipeline
8.1 Übersicht
Der Build- und Deploymentprozess ist vollständig automatisiert und folgt dem GitOps-Prinzip. Jeder Commit auf den Hauptzweig triggert einen Build, Test und – nach Freigabe – ein Deployment in die Zielumgebung.
Werkzeuge:
- Build: Docker, Buildah oder Kaniko
- CI/CD: GitLab CI, Skaffold
- Deployment: Helm, Kubernetes (Rolling Upgrades)
8.2 Build-Stufen und Quality Gates
| Stufe | Inhalte |
|---|---|
| Linting | Formatierung, statische Analyse (z. B. ruff, eslint, golangci-lint) |
| Tests | Unit-Tests, Integrationstests, ggf. Snapshot-Tests |
| Coverage | Mindestabdeckung (z. B. ≥ 80 %), automatischer Report |
| Security | Dependency-Scan (z. B. trivy, syft), CVE-Check, Secrets-Scan |
| Policy | Regeln für Branches, Reviewer, Merge Requests (GitLab Protect Rules) |
| Image Scan | Signaturprüfung, SBOM, CVE-Scan (cosign, grype) |
Bei Fehler in einem Gate wird der Pipeline-Job abgebrochen. Thresholds sind konfigurierbar.
8.3 Image Inspection & Signierung
Jedes Container-Image wird nach dem Build:
- auf Schwachstellen (CVE) überprüft (
trivy) - mit einer SBOM versehen (
syft) - signiert (
cosign) - optional mit
notaryoder Rekor/OCI attestiert
Images werden nur aus dem internen Container-Registry bereitgestellt und mit Policy Enforcement (z. B. Kyverno/Gatekeeper) auf Cluster-Ebene geprüft.
8.4 Deployment-Strategie
- Strategie: Rolling Upgrade via
kubectl rolloutoderhelm upgrade - Readiness-Probes: nötig für zero-downtime Deployments
- Rollback:
helm rollback/ automatischer Fallback bei Deployment-Fehlern - Blue/Green oder Canary: optional über
FlaggeroderArgo Rollouts
8.5 Lifecycle Management
| Phase | Maßnahmen |
|---|---|
| Pre-Deployment | Migrationen, Secrets, Config, Feature Flags, Pre-Hooks |
| Deployment | Rolling Upgrade mit Health-Check |
| Post-Deployment | Smoke-Tests, Canary Check, Metricsprüfung (z. B. Error-Rate) |
| Decommission | Logs sichern, Metrics archivieren, Stateful Resources entfernen |
Optional automatisiert mit Helm hooks oder Skaffold-Lifecycle-Hooks.
8.6 Beispiel: GitLab CI .gitlab-ci.yml
| |
Offene Punkte und Risiken
- Noch unklar: Service-Mesh notwendig?
- Risiko: Redis Single Point of Failure
- Auditlog-Konzept in Arbeit
Anhang
A. ArchiMate Beispiel mit PlantUML (Application View)
| |

Stand: 2025-06-30 Autor: Karsten Krösch Lizenz: CC-BY 4.0

Kommentare