Етап 9. Деплой та інфраструктура: як продукт потрапляє на сервер і повертається після збою

Контейнеризація через Docker, налаштування серверів і SSL, автоматизація процесів через Supervisor, налаштування CI/CD. Чому ручний деплой це ризик, а не економія.

Етап 9. Деплой та інфраструктура: як продукт потрапляє на сервер і повертається після збою
INGELLO / BUSINESS3035

На цьому етапі з'ясовується, чи відрізняється «працює в розробника» від «працює в клієнта». Якщо відрізняється, отже, середовище не описане, і кожен випуск нової версії буде лотереєю. Для бізнесу це виглядає просто: оновлення сайту в п'ятницю ввечері, і до понеділка замовлення не приймаються.

Це дев'ятий етап стратегії розробки застосунку. Розбираємо, що входить у деплой застосунку та налаштування інфраструктури, що Ви отримуєте, скільки це коштує і чому ручний випуск дорогий не в момент випуску, а в момент аварії.

Що відбувається на етапі

  • Контейнеризація (Docker, docker-compose).
  • Налаштування серверів і SSL-сертифікатів.
  • Автоматизація процесів через Supervisor.
  • Налаштування CI/CD-процесів.

Базова платформа: Linux і Nginx. Docker пакує застосунок разом із середовищем, тож на сервері працює саме те, що перевірялося. Supervisor стежить за фоновими процесами: чергами, відкладеними задачами, повторними запитами до зовнішніх сервісів. Якщо процес упав, він перезапускається, а не чекає, поки хтось помітить. CI/CD перетворює випуск нової версії на повторювану процедуру замість ручного набору команд.

Що Ви отримуєте на виході

  • Відтворюване середовище, яке піднімається однією командою.
  • Налаштовані сервери, SSL-сертифікати та їхнє автооновлення.
  • Фонові процеси під наглядом Supervisor.
  • Конвеєр випуску: зміни проходять однаковий шлях від репозиторію до сервера.
  • Резервне копіювання з перевіреним відновленням, а не просто з налаштованим бекапом.
  • Порядок відкату на попередню версію, зрозумілий не лише авторові.

Скільки коштує деплой та інфраструктура

У прайсі Ingello етап розгортання та інфраструктури коштує від $800 до $4700. Це один із двох етапів комерційної версії, у яких немає нульової нижньої межі: мінімальний контур потрібен завжди. Далі ціна залежить від того, скільки середовищ, сервісів і регламентів відновлення потрібно:

  • скільки середовищ треба: лише бойове чи ще тестове й демонстраційне;
  • скільки сервісів і фонових процесів працює в продукті;
  • наскільки складний конвеєр випуску і які перевірки в ньому стоять;
  • які вимоги до резервного копіювання й часу відновлення;
  • чи приймаємо ми інфраструктуру, створену іншою командою.

Ціну етапу фіксуємо до початку робіт, і вона входить у загальний розрахунок за етапами, який Ви отримуєте після консультації.

Ручний деплой дорогий не в момент випуску, а в момент аварії

Поки все добре, різниця між ручним і автоматичним випуском виглядає як двадцять хвилин роботи. Різниця проявляється вночі, коли треба швидко повернути попередню версію, а людина, яка знає послідовність кроків, недоступна.

Так було на заводі Prime EVA, куди ми прийшли в живу систему, що вже продавала й виробляла. Почали з аудиту: розібрали код, деплой і базу даних і зафіксували стан системи в окремому документі. Потім автоматизували розгортання, і викладка нової версії перестала бути ручним ритуалом із завмиранням серця. Для безперервної інтеграції дібрали архітектурні рішення, за яких зміни йдуть до користувачів короткими ітераціями і не зупиняють продажі.

Розгортання як вимога в ТЗ

Інфраструктуру простіше замовити, коли її описано заздалегідь. У технічному завданні платформи онлайн-тренувань XenFit записали нефункціональні вимоги: система ділиться на слабко пов'язані підсистеми й розгортається на Ubuntu з Docker у кілька кроків, є окреме файлове сховище і журнал помилок. Таку вимогу можна перевірити: або нова команда піднімає систему за інструкцією, або ні.

Спостерігати, а не здогадуватися

Розгорнута система має повідомляти про свій стан. У нашій операторській вітрині просування на одному екрані видно таймери фонових задач і стан контейнерів. Той самий принцип ми закладаємо в клієнтські проєкти: процес, що впав, помітно одразу, а не зі скарги клієнта.

Що входить у мінімум

  • Відтворюване середовище, яке піднімається однією командою.
  • Сертифікати та їхнє автооновлення.
  • Резервне копіювання з перевіреним відновленням, а не просто з налаштованим бекапом.

Що ламається, якщо заощадити

  • Випуск залежить від однієї людини, і її відпустка стає ризиком для бізнесу.
  • Сертифікат спливає, браузери показують попередження, і покупці йдуть.
  • Фоновий процес тихо зупиняється, і листи клієнтам чи статуси замовлень перестають надходити.
  • Бекап є, але відновитися з нього ніхто не пробував, і під час аварії з'ясовується, що він неповний.

Що потрібно від Вас

  • Рішення, де житиме система: Ваші сервери чи дібраний нами хостинг.
  • Доменне ім'я і доступ до керування ним.
  • Вимоги до зберігання даних, якщо вони є у Вашій галузі.

Куди далі

Далі тестування та передача, де перевіряються зокрема й процеси розгортання. Попередній крок: серверна бізнес-логіка. Карта всіх етапів у стратегії розробки застосунку.

Якщо випуск нової версії у Вас зараз ручний або інфраструктура дісталася від іншої команди, обговоримо інфраструктуру на безкоштовній консультації з архітектором. Після неї Ви отримаєте розрахунок ціни та строків за етапами.

Поширені питання

01Скільки коштує деплой застосунку та налаштування інфраструктури?

У прайсі Ingello етап розгортання та інфраструктури коштує від $800 до $4700. Мінімальний контур потрібен будь-якому продукту: відтворюване середовище, SSL-сертифікати з автооновленням і резервне копіювання з перевіреним відновленням. Далі ціна зростає разом із кількістю середовищ, сервісів і фонових процесів, складністю конвеєра випуску й вимогами до часу відновлення.

02Які технології Ingello використовує для деплою?

Сервери працюють на Linux і Nginx. Застосунок пакується в контейнери Docker і описується через docker-compose, щоб на сервері працювало саме те, що перевірялося. Фонові процеси (черги, відкладені задачі, повторні запити до зовнішніх сервісів) контролює Supervisor, а випуск нових версій автоматизується через CI/CD. SSL-сертифікати налаштовуються з автооновленням.

03Чим небезпечний ручний деплой застосунку для бізнесу?

Ручний випуск залежить від пам'яті й доступності однієї людини. У звичайний день це непомітно, але під час аварії, коли вночі треба повернути попередню версію, послідовність кроків може знати лише недоступний співробітник. Підсумок: простій продажів, помилки під час поспішного відновлення і страх випускати оновлення, через який продукт перестає розвиватися.

04Навіщо потрібен CI/CD, якщо проєкт невеликий?

CI/CD робить випуск повторюваним: кожна зміна проходить однаковий шлях від репозиторію до сервера з тими самими перевірками. Для невеликого проєкту це передусім страховка: відкат на попередню версію стає процедурою, а не імпровізацією. На заводі Prime EVA автоматизація розгортання дала змогу випускати зміни короткими ітераціями, не зупиняючи продажів.

05Чи можна передати Ingello інфраструктуру від іншої команди?

Так. Робота починається з аудиту: команда розбирає код, процес розгортання й базу даних і фіксує фактичний стан системи в документі. Після цього зрозуміло, що можна лишити, а що треба перепакувати в контейнери, автоматизувати чи закрити резервним копіюванням. Приймання чужої інфраструктури враховується в ціні етапу деплою.