Non-Functional Requirements
Performance
Abschnitt betitelt „Performance“NFR-001: Ladezeit Kundenwebseiten
Abschnitt betitelt „NFR-001: Ladezeit Kundenwebseiten“Anforderung: Statisch generierte Seiten muessen extrem schnell laden. Metrik: Lighthouse Performance Score Zielwert: > 95 Testmethode: Lighthouse Audit im Chrome DevTools Prioritaet: Must Umsetzung: Astro SSG + Cloudflare Pages CDN + Bildoptimierung zur Buildzeit
NFR-002: CMS-Reaktionszeit
Abschnitt betitelt „NFR-002: CMS-Reaktionszeit“Anforderung: CMS muss responsiv sein, auch auf dem Handy. Metrik: Time to Interactive Zielwert: < 3 Sekunden Testmethode: Lighthouse Audit auf CMS-Seiten Prioritaet: Should
NFR-003: Build-Zeit
Abschnitt betitelt „NFR-003: Build-Zeit“Anforderung: Ein Astro-Build pro Kundenwebseite darf nicht zu lange dauern. Metrik: Build-Dauer auf Cloudflare Pages Zielwert: < 2 Minuten fuer eine typische 5-10 Seiten Website Testmethode: Cloudflare Pages Build-Logs Prioritaet: Should
Sicherheit
Abschnitt betitelt „Sicherheit“NFR-004: DSGVO-Konformitaet
Abschnitt betitelt „NFR-004: DSGVO-Konformitaet“Anforderung: Alle Kundenwebseiten muessen DSGVO-konform sein, ohne Cookie-Consent-Banner. Metrik: Keine personenbezogenen Daten ohne Einwilligung Zielwert: 0 Verstoesse Testmethode: Datenschutz-Audit — keine Third-Party-Requests ohne Opt-in, nur technische Cookies, Self-hosted Fonts, Embeds mit Opt-in-Wall Prioritaet: Must
NFR-005: CMS-Zugang
Abschnitt betitelt „NFR-005: CMS-Zugang“Anforderung: CMS-Zugang muss sicher authentifiziert sein. Metrik: Authentifizierungsmethode Zielwert: Session-Cookie Auth mit Brute-Force-Schutz (Rate-Limiting), Passwort-Reset via SES Testmethode: Security Review, Penetrationstest Prioritaet: Must
NFR-006: Angriffsflaeche Kundenwebseiten
Abschnitt betitelt „NFR-006: Angriffsflaeche Kundenwebseiten“Anforderung: Kundenwebseiten duerfen keine Angriffsflaeche bieten. Metrik: Angriffsvektoren Zielwert: 0 — statische HTML-Dateien, kein serverseitiger Code, kein Login auf der Webseite Testmethode: Architektur-Review Prioritaet: Must
NFR-007: CMS nicht direkt erreichbar
Abschnitt betitelt „NFR-007: CMS nicht direkt erreichbar“Anforderung: CMS-Server darf nicht direkt aus dem Internet erreichbar sein. Metrik: Offene Ports auf Hetzner VPS Zielwert: 0 offene Ports, Zugang ausschliesslich ueber Cloudflare Tunnel Testmethode: Port-Scan Prioritaet: Must
NFR-008: Multi-Tenant Datenisolation
Abschnitt betitelt „NFR-008: Multi-Tenant Datenisolation“Anforderung: Kein Kunde darf Daten eines anderen Kunden sehen oder veraendern. Metrik: Tenant-Isolation Zielwert: 0 Cross-Tenant-Zugriffe Testmethode: Automatisierte Tests, Middleware prueft Tenant-ID auf jedem Request Prioritaet: Must
Verfuegbarkeit
Abschnitt betitelt „Verfuegbarkeit“NFR-009: Uptime Kundenwebseiten
Abschnitt betitelt „NFR-009: Uptime Kundenwebseiten“Anforderung: Kundenwebseiten muessen hochverfuegbar sein. Metrik: Uptime Zielwert: 99.9% (Cloudflare Pages/CDN — unabhaengig vom CMS) Testmethode: Uptime-Monitoring im CMS Prioritaet: Must
NFR-010: Uptime CMS
Abschnitt betitelt „NFR-010: Uptime CMS“Anforderung: CMS soll verfuegbar sein, Ausfall darf Kundenwebseiten nicht beeintraechtigen. Metrik: Uptime Hetzner VPS Zielwert: 99.5% (Hetzner SLA) Testmethode: Monitoring Prioritaet: Should Hinweis: CMS-Downtime ist unkritisch — Kundenwebseiten sind statisch und laufen weiter. Kontaktformular-Events und Analytics werden in SQS gepuffert.
Wartbarkeit
Abschnitt betitelt „Wartbarkeit“NFR-011: Onboarding neuer Kunden
Abschnitt betitelt „NFR-011: Onboarding neuer Kunden“Anforderung: Das technische Anlegen einer neuen Kundenwebseite (ohne Design) darf nicht zu lange dauern. Metrik: Zeit bis lauffaehiges Projekt Zielwert: < 4 Stunden Testmethode: Zeitmessung bei Onboarding Prioritaet: Should
NFR-012: Betriebsaufwand pro Kunde
Abschnitt betitelt „NFR-012: Betriebsaufwand pro Kunde“Anforderung: Das System muss mit steigender Kundenzahl funktionieren ohne proportional mehr Aufwand. Metrik: Betriebsaufwand pro Kunde nach Onboarding Zielwert: < 1h/Monat pro Kunde Testmethode: Aufwandstracking Prioritaet: Should
NFR-013: Backup und Recovery
Abschnitt betitelt „NFR-013: Backup und Recovery“Anforderung: Kundendaten muessen regelmaessig gesichert und wiederherstellbar sein. Metrik: Recovery Point Objective (RPO) / Recovery Time Objective (RTO) Zielwert: RPO < 1h (PostgreSQL via WAL-G), RTO < 4h. Medien: R2 + S3-IA Dual-Write (RPO nahe 0) Testmethode: Regelmaessiger Recovery-Test Prioritaet: Must
Barrierefreiheit
Abschnitt betitelt „Barrierefreiheit“NFR-014: Accessibility
Abschnitt betitelt „NFR-014: Accessibility“Anforderung: Kundenwebseiten sollten grundlegende Barrierefreiheit gewaehrleisten. Metrik: WCAG 2.1 Level AA Zielwert: Keine kritischen Violations Testmethode: axe DevTools Audit Prioritaet: Should Hinweis: BFSG/EAA (EU-Richtlinie) betrifft zunehmend auch kleine Webseiten ab 2025
NFR-015: Betriebskosten pro Kunde
Abschnitt betitelt „NFR-015: Betriebskosten pro Kunde“Anforderung: Infrastrukturkosten pro Kunde muessen niedrig bleiben. Metrik: EUR pro Kunde pro Monat Zielwert: < EUR 2/Mo bei 50+ Kunden Testmethode: Monatliche Kostenaufstellung Prioritaet: Must Umsetzung: Cloudflare Free Tier (Pages, DNS, SSL, CDN), PostgreSQL auf VPS ($0), R2 ~$0.15/10GB, SES ~$0.01
NFR-016: Keine ueberraschenden Kosten
Abschnitt betitelt „NFR-016: Keine ueberraschenden Kosten“Anforderung: Keine Dienste mit unkontrollierbaren Kosten bei Traffic-Spikes. Metrik: Maximale Monatskosten bei 10x Traffic Zielwert: Kosten steigen maximal 2x bei 10x Traffic (dank Cloudflare $0 Egress, SQS-Pufferung) Testmethode: Kostenmodell-Simulation Prioritaet: Should