Mamy stronę internetową opartą na Django, dla której chcieliśmy, aby niektóre treści (tekst i logika biznesowa, taka jak plany cenowe) były łatwe do edycji we własnym zakresie , dlatego postanowiliśmy przechowywać je poza bazą kodu. Zwykle przyczyną jest jedna z następujących przyczyn:
To coś, co ludzie nietechniczni chcą edytować. Jednym z przykładów jest copywriting strony internetowej - programiści przygotowują szablon z tekstem domyślnie „Lorem ipsum ...”, a rzeczywista treść jest później wstawiana do bazy danych.
Jest to coś, co chcemy móc szybko zmieniać, bez potrzeby wdrażania nowego kodu (co obecnie robimy dwa razy w tygodniu). Przykładem mogą być funkcje dostępne obecnie dla klientów na różnych poziomach cen. Zamiast na stałe je odczytywać z bazy danych.
Opisane rozwiązanie jest elastyczne, ale istnieje kilka powodów, dla których mi się nie podoba.
Ponieważ zawartość należy odczytać z bazy danych, występuje narzut związany z wydajnością .
Łagodzimy to za pomocą schematu buforowania, ale powoduje to również pewną złożoność systemu.
Programiści, którzy uruchamiają kod lokalnie, widzą system w znacznie innym stanie niż jego działanie w środowisku produkcyjnym. Zautomatyzowane testy ćwiczą także system w innym stanie. Sytuacje takie jak testowanie nowych funkcji na serwerze pomostowym również stają się trudniejsze - jeśli serwer pomostowy nie ma najnowszej kopii bazy danych, może nieoczekiwanie różnić się od produkcji.
Możemy to złagodzić, od czasu do czasu zatwierdzając nowy stan w repozytorium (np. Dodając migracje danych), ale wydaje się, że to niewłaściwe podejście. Czy to jest
Wszelkie pomysły, jak najlepiej rozwiązać te problemy? Czy istnieje lepsze podejście do obsługi treści, które pomijam?