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?
Odpowiedzi:
Powinieneś pomyśleć o treści edytowalnej jako pełnej funkcji .
Ale zamiast uczynić treść edytowalną, możesz sprawić, że osoby techniczne będą częścią twojego rozwoju. Zamiast rozwijać -> wdrażać -> modyfikować dane, możesz zmieniać dane -> rozwijać -> wdrażać. Może mógłbyś pożyczyć kilka pomysłów od statycznych platform blogowych, takich jak Octopress .
źródło
To dobre zadanie dla twoich DevOps. :) Możesz wykonać następujące czynności:
Możliwe jest zautomatyzowanie wszystkiego oprócz połączenia z Chef lub innym narzędziem, dzięki czemu to rozwiązanie może być wygodne zarówno dla użytkowników, programistów, jak i SQA.
źródło
Mieliśmy tę samą sytuację. Skończyło się na użyciu następujących aplikacji Django:
Nie jest idealny, ale zapewnia wszystko, czego potrzebujesz:
Aby programiści mogli korzystać z tych samych stron, co w systemie produkcyjnym, jeśli jest to rzeczywiste wymaganie, wyeksportuj z produkcji do rozwoju i przetestuj za pomocą urządzeń.
Pod względem koncepcyjnym myślę, że jesteś na dobrej drodze. Zadaj sobie pytanie, czy musisz wdrożyć własne rozwiązanie, czy możesz żyć z jakimś systemem CMS. Flatpages to jedna bardzo prosta wersja tego. Dostępne są bardziej wyrafinowane CMS .
źródło