Unser Tech-Stack und warum wir ihn gewählt haben
December 20, 2024

Unser Tech-Stack und warum wir ihn gewählt haben

Tim Molitor

Tim Molitor

Technical Specialist & Developer

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

  • uuid als 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?

Toggle
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?

Toggle
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?

Toggle
Ja. Wir liefern Dashboards, Runbooks und Schulungen; die Betriebsübergabe ist Teil des Projekts.
Share this post