Settings Database

Zentrale Settings Database für .NET: Konfiguration ohne Deployment


Kurzbeschreibung

Entwicklung einer zentralen Konfigurationslösung für C#/.NET-Anwendungen, mit der Änderungen ohne Deployment möglich sind.

Ziel war es, die Systemlandschaft zu stabilisieren, Abstimmungsaufwand zu reduzieren und Anpassungen deutlich zu beschleunigen.

Ausgangslage

In gewachsenen Systemlandschaften werden Konfigurationswerte oft dezentral verwaltet – z. B. in Dateien, Datenbanken oder direkt im Code.

Daraus ergaben sich folgende Probleme:

  • Änderungen erforderten Deployments oder manuelle Anpassungen
  • Inkonsistenzen zwischen Umgebungen
  • Erhöhter Abstimmungs- und Testaufwand

Lösung

Aufbau einer zentralen Konfigurationsdatenbank („Settings Database“), in der alle anwendungsrelevanten Einstellungen gebündelt verwaltet werden.

Die Struktur basiert auf projektspezifischen Key-Value-Paaren und ermöglicht die flexible Speicherung:

  • Einfache Werte (z. B. Retention-Zeiten)
  • Verschlüsselte Verbindungsdaten
  • JSON-basierte Konfigurationen
  • Dateipfade (z. B. Backupordner)

Die Anwendungen lesen diese Einstellungen zur Laufzeit aus. Änderungen werden sofort wirksam – ohne Deployment.

Technische Umsetzung

  • Generische Datenbankstruktur zur flexiblen Erweiterung
  • Klare Trennung von Konfiguration und Anwendungslogik
  • Automatisierte Synchronisation über SQL Server Agent Jobs
  • Kontrollierte Verteilung über definierte Merge-Prozesse

Architekturdiagramm

Titel: Zentrale Konfigurationsarchitektur

[.NET App 1] ----\
                  \
[.NET App 2] ------> [Settings Database]
                  /         |
[.NET App 3] ----/          |
                             v
                    [SQL Agent Job]
                             |
                             v
                    [Weitere Systeme]

Farben (draw.io):
Apps = Blau (#4A90E2)
Datenbank = Grün (#7ED321)
Synchronisation = Orange (#F5A623)

Ergebnis

Vorher:

  • Änderungen nur über Deployments möglich
  • Hoher manueller Aufwand
  • Fehleranfällige, verteilte Konfiguration

Nachher:

  • Zentrale und konsistente Konfigurationsbasis
  • Änderungen ohne Deployment
  • Automatisierte Verteilung
  • Deutlich schnellere Anpassungen

Vorher–Nachher-Diagramm

Vorher:
❌ App 1 → config.json
❌ App 2 → Datenbank
❌ App 3 → Hardcoded Werte
❌ Manuelle Änderungen notwendig
❌ Inkonsistente Daten

Nachher:
✅ Zentrale Settings Database
✅ Klare Struktur (Key-Value)
✅ Einheitliche Datenquelle
✅ Automatische Verteilung
✅ Änderungen ohne Deployment

Praxisbeispiel

Die Anpassung eines Importpfads kann direkt in der Datenbank erfolgen. Zuvor war dafür eine Codeänderung mit anschließendem Deployment notwendig.

Nutzen

Für die Entwicklung:

  • Weniger Eingriffe in den Anwendungscode
  • Geringere Fehleranfälligkeit
  • Bessere Nachvollziehbarkeit von Einstellungen

Für das Unternehmen:

  • Schnellere Reaktionsfähigkeit bei Änderungen
  • Stabilere Releases durch weniger Deployments
  • Skalierbare Grundlage für weitere Anwendungen

Fazit

Die zentrale Konfigurationslösung reduziert technische Abhängigkeiten, vereinfacht Änderungsprozesse und erhöht die Stabilität der gesamten Systemlandschaft.