9. Architekturentscheidungen
ADR-1: Strategie zum Neuladen der NATS-Konfiguration
Abschnitt betitelt „ADR-1: Strategie zum Neuladen der NATS-Konfiguration“Kontext: Der NATS Server wird als Docker-Container betrieben. Änderungen an der Konfiguration müssen übernommen werden können, ohne den laufenden Betrieb unnötig zu unterbrechen. Ein Neustart des Containers kann bestehende Client-Verbindungen unterbrechen und die Nachrichtenverarbeitung beeinträchtigen. Daher wird ein definiertes Verfahren benötigt, um Konfigurationsänderungen zu validieren, anzuwenden und Fehler zu behandeln.
Entscheidung: Wir gehen davon aus das jede Konfiguration unter Docker lauft. Die NATS-Konfiguration wird über eine eingebundene Konfigurationsdatei bereitgestellt. Vor dem Anwenden einer Änderung wird die Konfiguration validiert. Unterstützte Konfigurationsänderungen werden durch das Senden eines SIGHUP-Signals an den laufenden NATS Server übernommen. Konfigurationsänderungen, die kein Hot Reload unterstützen, erfordern einen kontrollierten Neustart des Containers. Das Neuladen und Neustarten muss protokolliert werden. Fehler bei der Übernahme müssen durch die Betriebs- oder Deployment-Werkzeuge erkennbar sein.
docker exec nats nats-server -c /etc/nats/nats.conf -t \ && docker kill --signal=SIGHUP natsPositiv: Unnötige Container-Neustarts werden bei unterstützten Konfigurationsänderungen vermieden. Das Verfahren zur Übernahme von Konfigurationsänderungen ist einheitlich definiert. Die Validierung der Konfiguration ist von ihrer tatsächlichen Übernahme getrennt.
Negativ: Nicht alle Konfigurationsänderungen können zur Laufzeit übernommen werden. Eine erfolgreiche Validierung garantiert keine erfolgreiche Übernahme durch den laufenden Server. Die Betriebswerkzeuge müssen zwischen Hot-Reload-fähigen und neustartpflichtigen Änderungen unterscheiden.