Ви можете багато чого зробити, щоб покращити процес розгортання. Кілька з них:
Переконайтесь, що ваш код добре перевірений.
В ідеалі ви повинні мати 100% тестового покриття, а також інтеграційне тестування для кожного можливого сценарію.
Якщо у вас цього немає, ви, ймовірно, повинні кинути все і взятися за це.
Подивіться на розвиток поведінки.
Наявність повного тестового набору дозволить вам ...
Запустити безперервну інтеграцію.
Кожного разу, коли хтось робить зміни, CI може автоматично запустити тестовий набір. Якщо тестовий набір пройде, він може негайно розгорнутись (або запланувати розгортання). Що стосується змін, які не потребують значних змін у ваших базах даних, це лише заощадить вам багато часу та головного болю.
У разі виникнення проблеми CI може також отримати відкат у один клік.
CI набагато менш корисний, якщо тестовий набір не є повним та правильним, оскільки вся передумова базується на можливості автоматичного підтвердження вашого коду.
Зробіть атомні оновлення.
В ідеалі ви не повинні просто копіювати нові файли на старі на виробничому сервері. Натомість використовуйте такий інструмент, як capistrano, який копіює кожен файл у нове місце, а потім використовує символічне посилання, щоб вказати на потрібне розгортання. Відкат миттєвий, оскільки включає просто зміну симпосилання, щоб вказати на попереднє розгортання. (Хоча це не обов'язково стосується міграції вашої бази даних.)
Також вивчіть, чи можуть вам допомогти такі контейнери, як Docker.
Зробіть менші, частіші зміни.
Незалежно від того, чи є у вас тести, CI чи нічого, це одне лише може вам суттєво допомогти. Кожна зміна повинна мати власну гітку git, а розгортання має мати якомога менше змін. Оскільки зміни є меншими, можливо менше під час розгортання потенційно помилитися.
З цього приводу вносите зміни, коли це можливо, більш ізольованими. Якщо ви внесли зміни в гру Омаха, і це не впливає на Texas Hold'em, 5 карт-коду чи щось інше, то це єдина гра, яку потрібно призупинити для обслуговування.
Проаналізуйте що-небудь тривале.
Ви згадали, що деякі частини розгортання займають багато часу. Це , ймовірно , зміни схеми бази даних. Варто ознайомитись із DBA у вашій базі даних разом із кожною зміною схеми, щоб побачити, що може бути краще.
Попросіть експерта з питань тематики переглянути будь-яку іншу частину розгортання, яка займає великі блоки часу.
Робота непарних годин.
Ви, можливо, вже займаєтесь цим, але це згадує. Від розробників (і sysadmins!) Більше не слід очікувати, що вони працюватимуть "9 на 5", особливо для операцій 24x7. Якщо очікується, що хтось проводить години ночі, переглядаючи розгортання, виправляючи будь-які проблеми, а потім дотримуйтесь розкладу дня, ваші очікування нереальні, і ви налаштовуєте цю людину на вигорання.