Розгортання програмного забезпечення відіграє критичну роль у сучасному світі розробки, особливо в умовах хмарних технологій. Проте, цей етап часто недооцінюють. Багато компаній не приділяють достатньо уваги оптимізації розгортання, щоб зробити його швидким, надійним та автоматизованим.
На жаль, поширеними є ручні процеси розгортання. У кращому випадку, це супроводжується детальним списком інструкцій, а в гіршому – імпровізованими діями в останній момент. Хоча автоматизація розгортання завжди є бажаною метою, шлях до неї часто виявляється складним. Проте, наявність автоматизованого та надійного процесу розгортання є ключем до значної економії часу та зусиль, які команди розробників зазвичай витрачають на кожен випуск.
Стратегії розгортання, такі як Canary і Blue-Green, пропонують додаткові переваги, включаючи високу доступність, швидке встановлення та можливість відкату. Це дозволяє командам випускати оновлення частіше та з меншим рівнем стресу. Давайте розглянемо ці стратегії детальніше та визначимо їх відмінності.
Синьо-зелене розгортання: детальний огляд
Синьо-зелене розгортання мінімізує час простою та ризик впровадження нових версій програмного забезпечення шляхом створення двох ідентичних середовищ: активного (синього) та неактивного (зеленого). Активне середовище – це платформа, де запущена поточна версія програмного забезпечення, і де користувачі активно працюють. Неактивне середовище використовується для розгортання та тестування нової версії. Після успішного тестування трафік перемикається з активного середовища на неактивне, яке стає новим активним середовищем. За потреби процес можна повторити.
Почитайте також: Роз’яснення про синьо-зелене розгортання та його роль в DevOps
Ключові характеристики та переваги синьо-зеленого розгортання
Особливості процесу синьо-зеленого розгортання:
- Створення двох ідентичних середовищ, синхронізованих даними та процесами. Активне (синє) середовище забезпечує робочі процеси користувачів, тоді як неактивне (зелене) використовується для нових розгортань і підтримується в актуальному стані.
- Миттєве перемикання трафіку з активного на неактивне середовище, яке стає новим активним. Це усуває час простою і не вимагає дій з боку користувачів для доступу до нового середовища.
- Забезпечення швидкого відкату в разі проблем з новою версією, гарантуючи мінімальний час простою та високу доступність програми.
- Автоматизоване тестування, що гарантує якість нової версії програмного забезпечення перед розгортанням в активному середовищі.
- Підтримка безперервної доставки, що сприяє швидким і частішим випускам програмного забезпечення, завдяки легкості перемикання трафіку.
Розгортання Canary: загальний огляд
Розгортання Canary передбачає поетапний випуск нових функцій або оновлень для обмеженої групи користувачів перед їх розгортанням для всіх. Спершу створюється нова версія програмного забезпечення, яка розгортається для невеликої групи, а стара версія залишається доступною для решти користувачів. Розробники уважно стежать за новою версією, щоб переконатися в її стабільності та коректній роботі. За умови позитивних результатів, нова версія стає доступною для більшої кількості користувачів, і так до повного охоплення. Цей підхід мінімізує ризик виникнення помилок, які можуть вплинути на всіх користувачів одночасно.
Метою розгортання Canary є зниження ризиків, пов’язаних з впровадженням нових функцій для широкої аудиторії, та забезпечення більш плавного переходу до нової версії.
Почитайте також: Роз’яснення розгортання Canary та його ролі в DevOps
Ключові характеристики та переваги розгортання Canary
Особливості процесу розгортання Canary:
- Поступове розгортання нової версії спочатку для малої групи користувачів, а потім для більшої кількості з часом, мінімізуючи ризик впливу помилок на всіх користувачів.
- Ретельний моніторинг нової версії для забезпечення її стабільності та коректної роботи, що дозволяє розробникам швидко отримувати відгуки та вносити необхідні зміни.
- Швидкий і легкий відкат до попередньої версії у разі виникнення проблем, підвищуючи довіру до процесу розгортання.
- Максимальна автоматизація процесу розгортання для мінімізації людського фактора.
Порівняння синьо-зеленого розгортання та розгортання Canary
Характеристика | Синьо-зелене розгортання | Розгортання Canary |
Синхронізація даних | Постійна синхронізація даних між синім і зеленим середовищами. | Нова версія розгортається для підмножини користувачів або серверів; решта використовує поточну версію. |
Процес активації | Перемикання трафіку з активного середовища на неактивне після тестування нової версії. | Поступове розгортання для визначеної підмножини користувачів, які активно тестують нові версії. |
Досвід користувачів у виробництві | Відсутність простоїв; плавне перемикання між активними середовищами. | Підмножина користувачів тестує нову версію; можливі проблеми для цієї групи. |
Висока доступність vs швидкий зворотній зв’язок | Пріоритет високої доступності. | Пріоритет швидкого зворотного зв’язку та контрольованого розгортання. |
Зменшення ризику | Зменшення ймовірності проблеми шляхом швидкого відкату до стабільної версії. | Поступовий випуск для підмножини користувачів. |
Тестовий підхід | Тестування переважно в неактивних середовищах; тестери можуть не виявити всіх реальних проблем. | Користувачі у виробничому середовищі є тестерами, виявляючи реальні проблеми на ранній стадії. |
Відомі випадки використання | Netflix, Amazon, Etsy, LinkedIn і IBM використовують синьо-зелене розгортання. | Netflix і Google використовують Canary разом із автоматизованим тестуванням та поступовим розгортанням. |
Синьо-зелене розгортання проти Canary: особливості
Розгортання
Синьо-зелене розгортання передбачає використання двох середовищ (синього та зеленого), які постійно синхронізуються даними, що вимагає постійних процесів синхронізації між ними. Після тестування нової версії трафік перемикається з активного середовища на неактивне, яке стає новим активним. Цей процес не вимагає часу на розгортання коду і забезпечує відсутність простою для користувачів, які не помічають перемикання.
Розгортання Canary передбачає розгортання нової версії програмного забезпечення для малої групи користувачів, а більшість продовжує використовувати поточну версію. Це поступовий процес, де користувачі виступають у ролі тестувальників. Коли нова версія стає стабільною, її розгортають для решти користувачів.
Синьо-зелене розгортання є кращим вибором, якщо пріоритетом є висока доступність, тоді як розгортання Canary підходить для тих, хто цінує швидкий зворотний зв’язок і контрольоване розгортання.
Зменшення різниці ризиків
Синьо-зелене розгортання мінімізує ризик збоїв завдяки швидкому переходу на стабільну попередню версію, що забезпечує безперебійність роботи для всіх користувачів. Хоча існує ризик відтермінування нових функцій під час відкату, користувачі не будуть заблоковані критичними проблемами.
Розгортання Canary зменшує ймовірність виникнення проблем поступово. Перші користувачі нової версії виявляють будь-які проблеми на ранній стадії, що дозволяє уникнути масштабних збоїв.
Різниця підходу до тестування
Синьо-зелене розгортання фокусує тестування виключно в неактивному середовищі, де розробники та тестери можуть перевіряти все, що потрібно. Хоча існує ймовірність, що деякі проблеми реальних користувачів не будуть виявлені, швидке перемикання між середовищами дозволяє розробникам швидко вирішувати виявлені проблеми.
Розгортання Canary використовує користувачів у виробничому середовищі як тестувальників. Вони можуть знаходити більше реальних проблем за короткий час, що дозволяє команді розробників зосередитися на вирішенні найважливіших питань.
Досвід і випадки використання
Відомі випадки успішного використання різних стратегій розгортання:
- Netflix використовує синьо-зелене розгортання для оновлення свого потокового сервісу.
- Amazon та Etsy застосовують синьо-зелене розгортання для своїх платформ електронної комерції.
- LinkedIn використовує синьо-зелене розгортання для своєї соціальної мережі.
- IBM впроваджує синьо-зелене розгортання для своєї хмарної платформи.
- Netflix також застосовує Canary Deployment, поєднуючи його з автоматизованим тестуванням, feature flags і A/B тестуванням.
- Google використовує Canary Deployment для оновлення своїх хмарних сервісів, застосовуючи автоматизоване тестування, розподіл трафіку та моніторинг.
Передовий досвід та майбутні тенденції
Автоматизація є ключовою, і DevOps конвеєри є майбутнім процесів розгортання. Ці повністю автоматичні процеси включають такі кроки:
- Створення або оновлення цільових середовищ щодо послуг, даних, користувачів або привілеїв.
- Автоматичне розгортання вихідних кодів з репозиторію.
- Оновлення схеми бази даних та даних.
- Автоматизоване виконання тестів.
- Автоматичний відкат у разі невдалих тестів.
- Усунення будь-якого ручного втручання.
З такими конвеєрами розгортання ви можете використовувати Canary або Blue-Green, або будь-які інші підходи. Це лише приклади ефективних стратегій, але головне – це створити гнучкі процеси, які можна легко адаптувати. Можна навіть поєднувати ці стратегії.
Заключні слова
Ручні процедури розгортання свідчать про незрілі процеси розробки та недостатню гнучкість компанії. Тому важливо впроваджувати згадані стратегії розгортання для покращення процесів розробки.
Дізнайтесь також, як розгортати додатки в Kubernetes.