На цьому етапі з'ясовується, чи відрізняється «працює в розробника» від «працює в клієнта». Якщо відрізняється, отже, середовище не описане, і кожен випуск нової версії буде лотереєю. Для бізнесу це виглядає просто: оновлення сайту в п'ятницю ввечері, і до понеділка замовлення не приймаються.
Це дев'ятий етап стратегії розробки застосунку. Розбираємо, що входить у деплой застосунку та налаштування інфраструктури, що Ви отримуєте, скільки це коштує і чому ручний випуск дорогий не в момент випуску, а в момент аварії.
Що відбувається на етапі
- Контейнеризація (Docker, docker-compose).
- Налаштування серверів і SSL-сертифікатів.
- Автоматизація процесів через Supervisor.
- Налаштування CI/CD-процесів.
Базова платформа: Linux і Nginx. Docker пакує застосунок разом із середовищем, тож на сервері працює саме те, що перевірялося. Supervisor стежить за фоновими процесами: чергами, відкладеними задачами, повторними запитами до зовнішніх сервісів. Якщо процес упав, він перезапускається, а не чекає, поки хтось помітить. CI/CD перетворює випуск нової версії на повторювану процедуру замість ручного набору команд.
Що Ви отримуєте на виході
- Відтворюване середовище, яке піднімається однією командою.
- Налаштовані сервери, SSL-сертифікати та їхнє автооновлення.
- Фонові процеси під наглядом Supervisor.
- Конвеєр випуску: зміни проходять однаковий шлях від репозиторію до сервера.
- Резервне копіювання з перевіреним відновленням, а не просто з налаштованим бекапом.
- Порядок відкату на попередню версію, зрозумілий не лише авторові.
Скільки коштує деплой та інфраструктура
У прайсі Ingello етап розгортання та інфраструктури коштує від $800 до $4700. Це один із двох етапів комерційної версії, у яких немає нульової нижньої межі: мінімальний контур потрібен завжди. Далі ціна залежить від того, скільки середовищ, сервісів і регламентів відновлення потрібно:
- скільки середовищ треба: лише бойове чи ще тестове й демонстраційне;
- скільки сервісів і фонових процесів працює в продукті;
- наскільки складний конвеєр випуску і які перевірки в ньому стоять;
- які вимоги до резервного копіювання й часу відновлення;
- чи приймаємо ми інфраструктуру, створену іншою командою.
Ціну етапу фіксуємо до початку робіт, і вона входить у загальний розрахунок за етапами, який Ви отримуєте після консультації.
Ручний деплой дорогий не в момент випуску, а в момент аварії
Поки все добре, різниця між ручним і автоматичним випуском виглядає як двадцять хвилин роботи. Різниця проявляється вночі, коли треба швидко повернути попередню версію, а людина, яка знає послідовність кроків, недоступна.
Так було на заводі Prime EVA, куди ми прийшли в живу систему, що вже продавала й виробляла. Почали з аудиту: розібрали код, деплой і базу даних і зафіксували стан системи в окремому документі. Потім автоматизували розгортання, і викладка нової версії перестала бути ручним ритуалом із завмиранням серця. Для безперервної інтеграції дібрали архітектурні рішення, за яких зміни йдуть до користувачів короткими ітераціями і не зупиняють продажі.
Розгортання як вимога в ТЗ
Інфраструктуру простіше замовити, коли її описано заздалегідь. У технічному завданні платформи онлайн-тренувань XenFit записали нефункціональні вимоги: система ділиться на слабко пов'язані підсистеми й розгортається на Ubuntu з Docker у кілька кроків, є окреме файлове сховище і журнал помилок. Таку вимогу можна перевірити: або нова команда піднімає систему за інструкцією, або ні.
Спостерігати, а не здогадуватися
Розгорнута система має повідомляти про свій стан. У нашій операторській вітрині просування на одному екрані видно таймери фонових задач і стан контейнерів. Той самий принцип ми закладаємо в клієнтські проєкти: процес, що впав, помітно одразу, а не зі скарги клієнта.
Що входить у мінімум
- Відтворюване середовище, яке піднімається однією командою.
- Сертифікати та їхнє автооновлення.
- Резервне копіювання з перевіреним відновленням, а не просто з налаштованим бекапом.
Що ламається, якщо заощадити
- Випуск залежить від однієї людини, і її відпустка стає ризиком для бізнесу.
- Сертифікат спливає, браузери показують попередження, і покупці йдуть.
- Фоновий процес тихо зупиняється, і листи клієнтам чи статуси замовлень перестають надходити.
- Бекап є, але відновитися з нього ніхто не пробував, і під час аварії з'ясовується, що він неповний.
Що потрібно від Вас
- Рішення, де житиме система: Ваші сервери чи дібраний нами хостинг.
- Доменне ім'я і доступ до керування ним.
- Вимоги до зберігання даних, якщо вони є у Вашій галузі.
Куди далі
Далі тестування та передача, де перевіряються зокрема й процеси розгортання. Попередній крок: серверна бізнес-логіка. Карта всіх етапів у стратегії розробки застосунку.
Якщо випуск нової версії у Вас зараз ручний або інфраструктура дісталася від іншої команди, обговоримо інфраструктуру на безкоштовній консультації з архітектором. Після неї Ви отримаєте розрахунок ціни та строків за етапами.