Чотири години. Стільки в нас тривав один деплой. Зайти по SSH на перший сервер, стягнути код, вручну прогнати міграції. Потім другий сервер. Потім третій. Потім четвертий. Тести? "Та я прогнав їх у себе локально." Аппрув? Ланцюжок листів, який сам по собі з'їдав дві години, перш ніж хтось узагалі торкався прода.
Це не деплой. Це молитва.
Коли мене питають, що насправді дає швидкий deployment pipeline, я починаю не з цифр. Я починаю зі страху — бо саме він був справжньою ціною старого процесу, і саме про це ніхто не пише в презентаціях.
Старий процес був фільмом жахів
Ось усе як є, чесно. SSH на перший сервер, код, міграції руками. Повторити для другого, третього, четвертого. Чек-лист із 47 кроків, де одна людська помилка кладе прод. А деплой у п'ятницю? Категорично заборонений. Це правило ніде не було записане — просто всі тихо боялися.
Ручний деплой не лише жере час. Він вшиває страх у процес, а потім і в команду. Ти починаєш уникати змін. Накопичуєш релізи, бо кожен — це біль, від чого наступний стає ще більшим і страшнішим. Замкнене коло, і в кожній компанії, куди я приходив, була своя версія цього кола.
Що ми зрештою зібрали
Нова архітектура зрізала час деплою на 96%. Не тому що ми купили чарівний інструмент, а тому що прибрали людину з кожного кроку, де не треба ухвалювати рішення. Ось її каркас:
- GitOps як точка входу. Мердж у
main— і деплой стартує сам. Нікому не треба пам'ятати кроки, бо кроків, які треба пам'ятати, просто немає. - CI валідує кожен push. Без винятків. Без "ну один разочок можна." Пайплайну байдуже, наскільки терміновим тобі здається твій хотфікс.
- Аппрув за правилами. Гейти — це код, а не очікування, поки хтось відкриє пошту.
- Blue-green deployment. Нуль даунтайму на перемиканні, а відкат — в один клік, а не п'ять скриптів у правильному порядку під тиском.
- Автоматичні smoke-тести. Прод перевіряється секунд за 60, ще до того як на нього переведуть трафік.
Єдине, що лишилося від людини, — рев'ю PR. І все. Далі мерджу — робота машини.
Ефект вийшов далеко за межі годин
Економія часу — це заголовок, але не найцікавіше. Цікавіше те, що змінилося під капотом:
- На 96% менше часу на деплой — із чотирьох годин до десяти хвилин.
- У 10 разів більше деплоїв на тиждень. Фічі викочуються, коли готові, а не коли в когось вистачило сміливості.
- Інциденти впали з 15 за квартал до 3. Це багатьох здивувало, але логіка проста: маленькі зміни легко дебажити. Якщо щось зламалося, ти точно знаєш, який коміт винен, бо в реліз пішла одна річ, а не тридцять.
- Відкат в один клік, тому поганий деплой — це незручність, а не аварія.
Якщо ти досі забороняєш п'ятниці — у тебе не проблема з розкладом. У тебе проблема з пайплайном.
Перший деплой у п'ятницю був моторошним
Хочу бути чесним щодо цього моменту, бо розповідь про інструменти звучить значно гладше, ніж це відчувалося.
Коли ми вперше деплоїли в п'ятницю, я сидів, дивився, як крутиться пайплайн, і оновлював дашборд моніторингу кожні десять секунд, чекаючи, що хоч щось зламається. Нічого не зламалося. Smoke-тести пройшли. Трафік перемкнувся чисто. Ми розійшлися на вихідні, як нормальні люди.
Друга п'ятниця була легшою. До третьої про це вже ніхто не згадував.
Ось у цьому й урок. Інструменти — проста частина: вихідні за читанням доків і пара тижнів на обв'язку. А от переконати людей, що деплой у п'ятницю — це нормально, коли пайплайну можна довіряти, зайняло місяці. Кожен зелений деплой додавав краплинку довіри. Команду не можна переспорити й витягнути зі страху — її можна лише переважити фактами, по одному чистому релізу за раз.
Що я сказав би тобі, якщо ти досі на чотиригодинній версії
Ручний деплой — це баг у твоєму процесі, а не риса характеру твоєї команди. Якщо відкат не в один клік, ти граєшся з вогнем і називаєш це стратегією.
Почни там, де страх найгучніший. Автоматизуй спершу нудні кроки, де легко помилитися, — ті самі "зайди по SSH і молися", — і нехай кожен успіх купує тобі довіру на наступний крок. Не треба переписувати все за вихідні. Потрібна одна п'ятниця, в яку нічого не зламалося. А потім ще одна.
Швидкий deployment pipeline — це насправді не про швидкість. Швидкість — побічний ефект. Ти будуєш процес, якого команда перестає боятися. Саме він викочує фічі, ріже інциденти й дозволяє всім розходитися по домівках у п'ятницю, як нормальним людям.
Тож чесно: твоя команда деплоїть по п'ятницях? А якщо ні — що має змінитися, перш ніж ти цьому довіришся?