Es gibt eine Menge Dinge, die Sie tun können, um Ihren Bereitstellungsprozess zu verbessern. Einige davon sind:
Stellen Sie sicher, dass Ihr Code gut getestet ist.
Idealerweise sollten Sie für jedes denkbare Szenario eine 100% ige Einheitentestabdeckung sowie Integrationstests haben.
Wenn Sie das nicht haben, sollten Sie wahrscheinlich alles fallen lassen und sich darum kümmern.
Betrachten Sie die verhaltensorientierte Entwicklung.
Mit einer vollständigen Testsuite können Sie ...
Führen Sie eine kontinuierliche Integration durch.
Immer wenn jemand eine Änderung festschreibt, kann CI die Testsuite automatisch darauf ausführen. Wenn die Testsuite erfolgreich ist, kann sie sofort bereitgestellt werden (oder eine Bereitstellung planen). Bei Änderungen, die keine wesentlichen Änderungen an Ihren Datenbanken erfordern, sparen Sie allein dadurch viel Zeit und Kopfschmerzen.
Im Falle eines Problems kann CI Ihnen auch ein Rollback mit einem Klick ermöglichen.
CI ist viel weniger nützlich , wenn Ihre Testsuite nicht vollständig und richtig ist , da die gesamte Prämisse ruht auf in der Lage, Ihren Code in einer automatisierten Art und Weise zu validieren.
Machen Sie atomare Updates.
Im Idealfall sollten Sie nicht nur neue Dateien über die alten auf dem Produktionsserver kopieren. Verwenden Sie stattdessen ein Tool wie capistrano, mit dem jede Datei an einen neuen Speicherort kopiert und anschließend über einen symbolischen Link auf die gewünschte Bereitstellung verwiesen wird. Das Zurücksetzen erfolgt sofort, da der Symlink einfach so geändert wird, dass er auf die vorherige Bereitstellung verweist. (Dies gilt jedoch nicht unbedingt für Ihre Datenbankmigration.)
Prüfen Sie auch, ob Container wie Docker Ihnen helfen können.
Nehmen Sie kleinere und häufigere Änderungen vor.
Ganz gleich, ob Sie Tests, CI oder nichts haben, dies allein kann Ihnen erheblich helfen. Jede Änderung sollte einen eigenen Git-Zweig haben, und eine Bereitstellung sollte so wenig Änderungen wie möglich enthalten. Da die Änderungen kleiner sind, kann bei einer Bereitstellung möglicherweise weniger schief gehen.
In diesem Sinne sollten Sie Änderungen nach Möglichkeit stärker isolieren. Wenn Sie das Omaha-Spiel geändert haben und es keine Auswirkungen auf Texas Hold'em, 5 Card Stud oder etwas anderes hat, ist dies das einzige Spiel, das für eine Wartung gesperrt werden muss.
Analysieren Sie alles, was auf lange Sicht läuft.
Sie haben erwähnt, dass einige Teile Ihrer Bereitstellungen sehr lange dauern. Dies ist wahrscheinlich eine Änderung des Datenbankschemas. Es lohnt sich, zusammen mit jeder Schemaänderung einen DBA-Blick auf Ihre Datenbank zu werfen, um festzustellen, welche Leistung besser sein kann.
Lassen Sie einen Fachexperten einen Blick auf jeden anderen Teil einer Bereitstellung werfen, der viel Zeit in Anspruch nimmt.
Arbeite ungerade Stunden.
Möglicherweise tun Sie dies bereits, aber es muss erwähnt werden. Von Entwicklern (und Sysadmins!) Sollte nicht mehr erwartet werden, dass sie "9 bis 5" arbeiten, insbesondere für einen 24x7-Betrieb. Wenn erwartet wird, dass jemand die Nachtstunden damit verbringt, einen Einsatz zu babysitten, Probleme zu beheben und dann einen Tagesplan einzuhalten, sind Ihre Erwartungen unrealistisch und Sie bereiten diese Person auf Burnout vor.