Автор зображення: blog.crisp.se
Безперервна доставка (Continuous Delivery) та безперервне розгортання (Continuous Deployment) — це практики в сучасній розробці програмного забезпечення, які спрощують процес випуску. Хоча вони тісно пов'язані, вони відрізняються за цілями та рівнями автоматизації:
Безперервна доставка
Визначення:
Безперервна доставка гарантує, що кодова база завжди перебуває в стані, готовому до розгортання. Кожна зміна проходить через автоматизовані тести і потрапляє в середовище staging. Однак розгортання в продакшн є ручним рішенням.
Ключові моменти:
- Ручний запуск розгортання:
Потрібна людська участь для переведення коду зі staging в продакшн.
- Акцент на якість:
Орієнтується на надійне автоматизоване тестування та ручне схвалення, щоб забезпечити готовність до продакшн.
- Ідеальний випадок використання:
Коли потрібно контролювати час випуску в продакшн, наприклад, у регульованих індустріях або для високоризикових застосунків.
- Приклад:
Після автоматизованих тестів і staging менеджер релізів натискає кнопку для розгортання в продакшн.
Безперервне розгортання
Визначення:
Безперервне розгортання йде ще далі, автоматизуючи процес розгортання. Кожна успішна зміна, що проходить автоматизовані тести, автоматично розгортається в продакшн без людського втручання.
Ключові моменти:
- Повна автоматизація:
Між staging і продакшн немає ручних кроків.
- Швидкий зворотний зв'язок:
Зміни стають доступними відразу після проходження пайплайна, що дає можливість для швидкої ітерації та зворотного зв'язку.
- Ідеальний випадок використання:
Підходить для середовищ, де необхідні часті оновлення, таких як платформи SaaS або інтернет-магазини.
- Приклад:
Розробник комітить код, тести проходять, і зміни автоматично потрапляють у продакшн за кілька хвилин.
Ключові відмінності
+--------------------------+-------------------------------------+-------------------------------------------+
| Аспект | Безперервна доставка | Безперервне розгортання |
+--------------------------+-------------------------------------+-------------------------------------------+
| Розгортання в продакшн | Ручний запуск | Повна автоматизація |
| Швидкість | Повільніше, оскільки чекає на схвалення | Швидше, оскільки кожна зміна виходить в ефір |
| Рівень ризику | Нижчий, з більшою контролем | Вищий, але зменшений завдяки надійним тестам |
| Випадок використання | Регульовані або чутливі середовища | Динамічні і високочастотні середовища |
+--------------------------+-------------------------------------+-------------------------------------------+
Спільні основи
Обидві практики базуються на:
• Контроль версій (наприклад, Git).
• Автоматизоване тестування.
• Пайплайни безперервної інтеграції (CI).
• Інструменти моніторингу та спостереження.
Я навчився цьому сьогодні і подумав, що варто поділитися з усіма.
Перекладено з: Continuous Delivery and Continuous Deployment