Istnieje wiele rzeczy, które możesz zrobić, aby usprawnić proces wdrażania. Kilka z nich to:
Upewnij się, że kod jest dobrze przetestowany.
Idealnie powinieneś mieć 100% pokrycie testem jednostkowym, a także testy integracyjne dla każdego możliwego scenariusza.
Jeśli nie masz tego, prawdopodobnie powinieneś porzucić wszystko i zająć się tym.
Spójrz na rozwój oparty na zachowaniu.
Posiadanie pełnego zestawu testów pozwoli Ci ...
Uruchom ciągłą integrację.
Ilekroć ktoś dokonuje zmiany, CI może wtedy automatycznie uruchomić na nim pakiet testowy. Jeśli pakiet testowy przejdzie pomyślnie, można go natychmiast wdrożyć (lub zaplanować wdrożenie). W przypadku zmian, które nie wymagają znaczących zmian w bazach danych, samo to pozwoli Ci zaoszczędzić dużo czasu i bólu głowy.
W przypadku problemu CI może również cofnąć za jednym kliknięciem.
CI jest znacznie mniej przydatny, jeśli Twój zestaw testów nie jest kompletny i poprawny, ponieważ cała przesłanka opiera się na możliwości sprawdzania poprawności kodu w sposób zautomatyzowany.
Dokonaj aktualizacji atomowych.
Idealnie byłoby, gdyby nie kopiować nowych plików na stary na serwerze produkcyjnym. Zamiast tego użyj narzędzia takiego jak capistrano, które kopiuje każdy plik do nowej lokalizacji, a następnie używa dowiązania symbolicznego, aby wskazać pożądane wdrożenie. Wycofywanie jest natychmiastowe, ponieważ polega po prostu na zmianie dowiązania symbolicznego w celu wskazania poprzedniego wdrożenia. (Chociaż nie musi to obejmować migracji bazy danych).
Sprawdź także, czy pojemniki takie jak Docker mogą ci pomóc.
Dokonuj mniejszych, częstszych zmian.
Niezależnie od tego, czy masz testy, CI czy nic, samo to może znacznie ci pomóc. Każda zmiana powinna mieć własną gałąź git, a wdrożenie powinno zawierać jak najmniej zmian. Ponieważ zmiany są mniejsze, jest mniej potencjalnych błędów podczas wdrażania.
W tej notatce wprowadzaj zmiany bardziej izolowane, gdy tylko to możliwe. Jeśli dokonałeś zmiany w grze Omaha i nie ma ona wpływu na Texas Hold'em, 5-kartowy stud ani nic innego, to jest to jedyna gra, która musi zostać zawieszona na utrzymanie.
Analizuj wszystko, co długoterminowe.
Wspomniałeś, że niektóre części wdrożeń zajmują dużo czasu. To jest prawdopodobnie zmiany schematu bazy danych. Warto spojrzeć na bazę danych DBA wraz z każdą zmianą schematu, aby zobaczyć, co może działać lepiej.
Poproś specjalistę o zapoznanie się z każdą inną częścią wdrożenia, która zajmuje duże bloki czasu.
Dziwne godziny pracy.
Być może już to robisz, ale trzeba o tym wspomnieć. Nie należy się spodziewać, że programiści (i sysadmins!) Będą pracować od „9 do 5”, szczególnie w przypadku operacji 24x7. Jeśli ktoś ma spędzić noc na opiece nad wdrożeniem, rozwiązywaniu problemów, a następnie dotrzymywać harmonogramu dnia, twoje oczekiwania są nierealne, a ty ustawiasz tę osobę na wypalenie.