Zarządzanie zmianami w środowisku produkcyjnym

Jesteśmy w trakcie wdrażania nowej aplikacji wykorzystującej grę 2.1.1 do produkcji i mamy z nią pewne realne problemy, a bardzo ograniczona dokumentacja niewiele pomogła ...

Nadszedł więc czas na aktualizację do nowej wersji, uruchomiliśmy nasze zwykłe skrypty stop / upgrade / start, ale nie powiodły się. Z jakiegoś powodu gra odmawiała zastosowania ewolucji. Kiedy zaczynałem, ciągle powtarzał

Ups, nie można uruchomić serwera. @ 6elnj89fh: Baza danych „domyślna” wymaga ewolucji!

Tak było, chociaż próbowaliśmy ustawićapplyEvolutions.default=true zarówno za pomocą wiersza poleceń, jak i pliku application_prod.conf. To też narzekało

OSTRZEŻENIE! Ten skrypt zawiera ewolucje DOWNS, które są prawdopodobnie destruktywne

co nie ma dla mnie większego sensu, ponieważ idziemy w górę, więc upadki i tak nie powinny być stosowane. Ale wydaje się, że to mógł być powód, dla którego odmówił zastosowania ewolucji.

W tym momencie nie byłem tak zmartwiony, że założyłem, że istnieje jakiś ręczny sposób na zastosowanie ewolucji. Po dokładnym przeszukaniu wygląda to tak jakby ... Było wsparcie dla tego w grze 1, ale nie w grze 2. W trybie dev możesz po prostu nacisnąć przycisk w przeglądarce, aby zastosować ewolucję, ale w trybie prod mogłem znaleźć BEZ SPOSOBU RĘCZNE STOSOWANIE EWOLUCJI. Czy to prawda, czy tęskniłem za tym? Naprawdę uważam, że to ważna funkcja! (Z perspektywy czasu mogłem zastosować skrypty ręcznie i wyłączyć wtyczkę ewolucji, ale wtedy straciłbym śledzenie ewolucji, które jest przydatne ..)

Zastanawiam się również, w jaki sposób chciałbyś „poprzeć” swoją bazę danych, ponieważ jestem pewien, że dojdziemy do punktu, w którym musimy to zrobić w pewnym momencie. Jeśli byłby to ręczny sposób, prawdopodobnie miałby opcjonalny argument wersji w celu obniżenia wersji bazy danych. Na przykład. jeśli jesteś w wersji 5 i musisz wrócić do 4, uruchamiaszplay apply-evolutions 4 które następnie zastosują wady z wersji 5 i odpowiednio zaktualizują db evolutions. Mogę zastosować te ograniczenia ręcznie, ale znowu problem jest taki, że db ewolucji ponownie znajdzie się w nieprawidłowym stanie ...

Coraz bardziej zdesperowany Wypróbowałem wszystkie ustawienia, które udało mi się znaleźć, aby przywrócić serwer i dodać-DapplyDownEvolutions.default=true opcja. Założyłem, że to ustawienie będzie miało zastosowanie tylko wtedy, gdy zdecyduję się na obniżenie wersji bazy danych (chociaż wydaje się, że nie ma takiej opcji), ale to, co faktycznie zrobiło, polegało na zastosowaniu poprawek, a następnie natychmiastowym zastosowaniu upadków (odkryłem to później podczas rozwiązywania problemów jako serwer w końcu się rozpoczął - bez jakiejkolwiek wiadomości - ale podczas odwiedzania witryny pojawił się tajemniczy komunikat o błędzie. Czy to właśnie ma zrobić to ustawienie? Jeśli tak, nie mogę zrozumieć, dlaczego ustawienie nawet istnieje. Nie mogę wymyślić żadnego scenariusza, w którym chciałbyś zastosować podwyższenia, a następnie natychmiastowe wyłączenie podczas migracji do nowszej wersji bazy danych. Czy ktoś może rzucić trochę światła na to ustawienie?

W tym momencie mogłem wreszcie uruchomić aplikację ponownie, ręcznie uruchamiając ponownie odpowiednie „UP”.

W tym momencie pracujemy nad zasadniczo ponownym napisaniem skryptów do obsługi ewolucji na własną rękę, aby mieć lepszą kontrolę nad tym, co jest uruchamiane i umożliwić powrót. Byłoby o wiele lepiej móc w tym celu korzystać z funkcji odtwarzania. mam nadzieję, że ktoś może rzucić na to trochę światła. Jeśli nie, to może ten rant może pomóc komuś w podobnej sytuacji ...

questionAnswers(1)

yourAnswerToTheQuestion