Eine Konfigurationssprache hält Einstellungen fest, die ein Programm beim Start liest, getrennt vom Code.
- Konfigurationssprache
Ein Format, in dem Einstellungen für ein Programm abgelegt werden, getrennt von seinem Quelltext.
Beispiel: „Die Zugangsdaten stehen in einer Konfigurationsdatei und nicht im Code.“Abgrenzung zum Datenaustauschformat: Beide halten Daten. Die Konfiguration wird von Menschen gepflegt und braucht deshalb Kommentare und Lesbarkeit; ein Austauschformat wird von Maschinen geschrieben.
Warum die Trennung nötig ist
Weil dieselbe Anwendung an verschiedenen Orten läuft. Auf dem Rechner der Entwicklung, auf einer Testumgebung, auf dem Produktivsystem. Was sich dabei unterscheidet, sind Adressen, Zugänge und Schalter, nicht der Code.
Daraus folgt eine Regel, gegen die regelmäßig verstoßen wird: Zugangsdaten gehören nicht in die Versionsverwaltung. Üblich ist eine Beispieldatei im Repository und die echte Datei nur auf dem jeweiligen System.
Die verbreiteten Formate
YAML ist im Webumfeld am häufigsten und in diesem Projekt das Format für Blueprints und Inhaltsköpfe. JSON wird benutzt, wo Maschinen die Datei schreiben, TOML dort, wo Eindeutigkeit vor Knappheit geht.
Dazu kommen schlichte Schlüssel-Wert-Dateien wie die verbreitete Datei mit Umgebungsvariablen. Sie kennt keine Verschachtelung und ist genau deshalb schwer falsch zu machen.
# .env: flach, ohne Verschachtelung, schwer falsch zu machen
APP_ENV=production
DB_HOST=127.0.0.1
DB_PASSWORD="geheim mit Leerzeichen"
# dasselbe in YAML, dafür mit Struktur
app:
env: production
datenbank:
host: 127.0.0.1
passwort: "geheim mit Leerzeichen"Was eine gute Konfiguration ausmacht
Sinnvolle Voreinstellungen, sodass nur Abweichungen aufgeschrieben werden müssen. Kommentare, die sagen, warum ein Wert so steht. Und eine Prüfung beim Start, die eine fehlende Angabe sofort meldet statt irgendwann mittendrin.