Wir haben eine Django-basierte Website, für die wir einen Teil des Inhalts (Text und Geschäftslogik wie Preispläne) intern problemlos bearbeiten möchten. Daher haben wir beschlossen, ihn außerhalb der Codebasis zu speichern. Normalerweise ist der Grund einer der folgenden:
Es ist etwas, das nicht-technische Leute bearbeiten wollen. Ein Beispiel ist das Verfassen von Texten für eine Website. Die Programmierer erstellen eine Vorlage mit Text, der standardmäßig "Lorem ipsum ..." lautet, und der eigentliche Inhalt wird später in die Datenbank eingefügt.
Es ist etwas, das wir schnell ändern möchten, ohne neuen Code bereitstellen zu müssen (was wir derzeit zweimal pro Woche tun). Ein Beispiel wären Funktionen, die den Kunden derzeit zu unterschiedlichen Preisstufen zur Verfügung stehen. Anstatt diese fest zu codieren, lesen wir sie aus der Datenbank.
Die beschriebene Lösung ist flexibel, aber es gibt einige Gründe, warum ich sie nicht mag.
Da der Inhalt aus der Datenbank gelesen werden muss, entsteht ein Leistungsaufwand .
Wir verringern dies durch die Verwendung eines Caching-Schemas, dies erhöht jedoch auch die Komplexität des Systems.
Entwickler, die den Code lokal ausführen, sehen das System in einem deutlich anderen Zustand als in der Produktion. Automatisierte Tests üben das System auch in einem anderen Zustand aus. Situationen wie das Testen neuer Funktionen auf einem Staging-Server werden ebenfalls schwieriger. Wenn der Staging-Server keine aktuelle Kopie der Datenbank hat, kann dies unerwartet von der Produktion abweichen.
Wir könnten dies abschwächen, indem wir den neuen Status gelegentlich in das Repository übernehmen (z. B. durch Hinzufügen von Datenmigrationen), aber es scheint ein falscher Ansatz zu sein. Ist es?
Irgendwelche Ideen, wie man diese Probleme am besten löst? Gibt es einen besseren Ansatz für den Umgang mit den Inhalten, die ich übersehen habe?