
December 20, 2024
Unser Tech-Stack und warum wir ihn gewählt haben
Unser Tech-Stack und warum wir ihn gewählt haben
Wir optimieren auf Entwicklungsgeschwindigkeit, betriebliche Zuverlässigkeit und Security by Design. Unser Standard-Stack:
- Backend: NestJS (TypeScript)
- Datenbank: PostgreSQL (managed auf Azure)
- Caching & Queues: Redis (Azure Cache for Redis)
- Web: React (Vite oder Next.js, wenn SSR/SEO benötigt wird)
- Mobile: React Native (Expo first)
- Cloud: Microsoft Azure (Container Apps/AKS, Key Vault, App Gateway/Front Door, Application Insights)
Architektur auf einen Blick
- Saubere, modulare Services in NestJS (zunächst Monolith bzw. modularer Monolith → Services bei Bedarf).
- PostgreSQL als System of Record; Redis für Read-Through-Cache, Rate Limits, kurzlebige Sessions und BullMQ-Queues.
- HTTP-APIs (REST/OpenAPI) und Background Worker; Webhooks für Integrationen.
- React Web-App + React Native (Expo) Mobile aus einem Monorepo (geteilte UI/Types).
- Azure: Containerisierte Workloads, Key Vault für Secrets, Application Insights + OpenTelemetry.
Backend — NestJS
Warum NestJS? Klare Struktur, Dependency Injection, Testbarkeit und erstklassiges TypeScript.
Datenbank — PostgreSQL
Warum Postgres? Zuverlässigkeit, starkes SQL + JSONB, hervorragende Extensions (pgcrypto, trigram).
Azure-Wahl
- Azure Database for PostgreSQL – Flexible Server, zonenredundante HA, wenn erforderlich.
Datenzugriff
- Sequelize mit expliziten Migrationen und Modellen
- Einsatz idempotenter Migrationen, ausschließlich vorwärtsgerichtet; Verifikation im Staging.
Caching & Queues — Redis
Anwendungsfälle
- Read-Through-Cache für häufige Queries (TTL 5–30 Min.).
- Idempotency-Keys, Rate Limits, kurzlebige Sessions.
- BullMQ-Queues für Background-Jobs (E-Mails, Webhooks, ETL), mit Backoff/Retry.
Web — React
Warum React? Tiefes Ökosystem; reibungsloser Übergang zu React Native.
- Vite für SPAs; Next.js, wenn SSR/SEO oder Edge-Rendering Mehrwert bringen.
- UI: Headless-Komponenten oder Design-System.
- State: Zustand mit Tanstack React Query; Formulare via React Hook Form + Zod.
Mobile — React Native (Expo)
Warum Expo? Schnelle Iteration und sehr gute Device-APIs.
- Offline-first mit SQLite, wo nötig.
- Geteilte Logik mit dem Web über Monorepo-Libraries (Types, Validierung, API-SDK).
Cloud — Azure
Compute
- Azure Container Apps (einfach) oder AKS (bei großem Scale).
- Background Worker als separate Container; Autoscaling über Queue-Länge oder CPU.
Networking & Delivery
- Azure Front Door oder Application Gateway für WAF + TLS; CDN für Assets.
Secrets & Identity
- Azure Key Vault (Managed Identities für den Zugriff).
- Azure AD / Entra ID oder B2C für Authentifizierung; JWTs an die Apps; RBAC in den Services.
Daten & Storage
- Azure PostgreSQL Flexible Server, Azure Cache for Redis, Blob Storage für Uploads; Lifecycle-Regeln für die Aufbewahrung.
Observability
- Application Insights mit Prometheus-Export (Traces, Logs, Metriken).
- Logging mit Loki; gestreamt nach Grafana.
Tooling
- ESLint/Prettier geteilte Konfiguration.
- Zod-Schemas, geteilt zwischen API und Clients (typsichere DTOs).
Golden Defaults
PostgreSQL
uuidals Primary Keys; Timestamps mit Zeitzone.- Sequelize-Migrationen; niemals direkt in Prod editieren.
- Indizes für Foreign Keys und eindeutige Business-Keys; Partial Indexes für häufige Filter.
Redis
- TTL auf allen Cache-Einträgen; niemals personenbezogene Daten ablegen.
- Getrennte DBs oder Präfixe für Cache vs. Queues.
- Dead-Letter-Queues für Jobs; Alert bei Retries größer als N.
NestJS
- Globale Validation Pipe (Zod oder class-validator), strikte DTOs.
- Zentraler Error-Filter → problem+json; konsistente Error-Codes.
- Feature Flags (konfigurierbar via Azure App Configuration oder ENV).
React / RN
- Error Boundaries; Analytics nur mit Consent; i18n-Scaffolding.
- API-SDK generiert aus OpenAPI (typsicher).
- Formular-Validierung mit geteilten Zod-Schemas.
Frequently asked Questions
Geht es auch ohne AKS?
Ja. Standardmäßig setzen wir auf Azure Container Apps für einfacheren Betrieb; AKS bei hohem Scale oder speziellen Anforderungen.
Drängen Sie KI in jedes Projekt?
Nein. Wir setzen KI nur dort ein, wo sie klassische Logik in Geschwindigkeit, Qualität oder Kosten messbar schlägt.
Kann unser Team das System selbst betreiben?
Ja. Wir liefern Dashboards, Runbooks und Schulungen; die Betriebsübergabe ist Teil des Projekts.
