Сьогодні існує безліч стратегій розгортання на вибір, і з часом їх буде лише більше. Проте дві з найпоширеніших, які активно використовують деякі з найбільших компаній, — це Canary і Blue-Green.
Порівнюючи Blue-Green і Canary, важливо враховувати не лише швидкість чи простоту. Один із ключових факторів вибору між цими стратегіями — час простою під час розгортання.
Щоб звести простій до мінімуму і забезпечити плавний перехід при випуску оновлень або змін, критично важливо обрати між Canary і Blue-Green найбільш відповідний варіант.
Розберімо, що пропонує кожна стратегія, порівняємо Blue-Green і Canary напряму та поділимося власним досвідом роботи з обома підходами.
Що таке Blue-Green Deployment і що він дає?
У стратегії Blue-Green нову версію застосунку можна розгорнути одразу після тестування та перевірки. Це стало можливим завдяки двом ідентичним середовищам — синьому і зеленому, звідки й назва Blue-Green.
Принцип роботи простий: одне середовище активне, інше — ні. Нову версію застосунку розгортають у неактивному середовищі, наприклад зеленому. Оскільки обидва середовища повністю ідентичні за ресурсами, інфраструктурою та конфігурацією, всі проблеми з оновленням можна усунути ще до його повного виходу.
Коли оновлення перевірено і розробники впевнені в його роботі, живий трафік перемикають на раніше неактивне середовище. Зелене середовище стає активним, а синє — переходить у режим очікування.
Тепер неактивне синє середовище слугує резервним: у ньому можна тестувати наступні оновлення, поки зелене обслуговує щойно розгорнуту версію. Простій при цьому фактично відсутній, адже трафік перемикається миттєво.
Крім того, якщо в оновленні виявляться проблеми, функція відкату дозволяє повернутися до попередньої версії застосунку. Втім, якщо розробники вже почали роботу над новим оновленням у неактивному середовищі, відкочуватися до нього не вийде: попередня версія в цьому середовищі вже недоступна.
Серед компаній, які використовують цю стратегію, яскравий приклад — Spotify. Оскільки сервіс має працювати цілодобово і без вихідних, Spotify завжди тримає резервне неактивне середовище напоготові для виходу нових оновлень.
Що таке Canary Deployment і що він дає?
Головна відмінність між Canary-розгортанням і Blue-Green полягає в тому, що замість двох середовищ, де оновлення одночасно доставляється всім користувачам, у Canary-стратегії оновлення спочатку випускається для невеликої групи користувачів.
Якщо в оновленні є проблеми, з ними стикається лише невелика частина користувачів, яка й надає зворотний зв'язок. Після усунення проблем оновлення випускається для більшої частини користувачів, які також повідомляють розробникам про будь-які виявлені недоліки.
Цикл повторюється з поступово зростаючою часткою користувачів, доки всі проблеми не буде вирішено і оновлення не отримають 100% користувачів. Наприклад, спочатку оновлення отримують лише 2% користувачів, потім 25%, потім 75% і, нарешті, 100%.
Таке поступове розгортання у Canary, на відміну від Blue-Green, забезпечує більш керований і гнучкий вихід у прод: розробники можуть тестувати функції й оновлення в контрольованому середовищі, де з потенційними проблемами стикається лише незначна частина користувачів.
Canary також підтримує відкат, однак, оскільки розгортання відбувається поетапно, відкат теж виконується поетапно, доки не буде досягнуто стабільної версії.
Добре відомий приклад цієї стратегії розгортання - використання Netflix Canary разом з інструментом Chaos Monkey, який навмисно вносить збої в їхню систему. Якщо збій впливає на Canary-середовище, команда Netflix може проаналізувати реакцію системи і скоригувати її поведінку. Таким чином Netflix переконується, що оновлення залишається стабільним і стійким навіть за несприятливих умов.
Blue-Green Deployment проти Canary
Обидві стратегії розгортання мають свої переваги, але водночас і обмеження. Саме тому перед прийняттям рішення важливо зважити всі плюси й мінуси Blue-Green і Canary.
Якщо після цього розділу ви ще не визначилися, яку стратегію обрати, наприкінці статті я також поділився нашим досвідом роботи з обома підходами і висновками, які ми зробили.
Зменшення часу простоїв
Одна з ключових тем цієї статті - скорочення простою під час розгортання в Blue-Green порівняно з Canary. Одна з сильних сторін Blue-Green - швидкість: завдяки двом середовищам оновлення або нова функція розгортається миттєво.
Canary, своєю чергою, завдяки поступовому підходу зводить простій до мінімуму: з проблемами стикається лише невелика підгрупа користувачів, а оскільки зворотний зв'язок надходить на кожному етапі, усунення проблем відбувається значно швидше і без жодного простою.
Обидва підходи підтримують відкат, однак у Blue-Green він виконується миттєво, що дає розробникам надійну запасну позицію на випадок серйозних проблем. Щоправда, як я вже зазначав, резервна версія буде недоступна, якщо в неактивному середовищі вже ведеться робота над новішою версією.
Відкат у Canary виконується так само поступово, як і саме розгортання. Проте він завжди доступний, оскільки стабільна версія не залежить від середовища, в якому тестуються й опрацьовуються нові оновлення.
З точки зору скорочення простою, порівнюючи Canary і Blue-Green, Canary перевершує Blue-Green за контролем ризиків і точністю керування. Однак якщо говорити виключно про мінімізацію простою, Blue-Green є кращим варіантом з двох, оскільки перемикання відбувається миттєво.
При цьому, порівнюючи Blue-Green і Canary, важливо враховувати й інші фактори, крім скорочення простою.
Тип програми
Загалом застосунки можна поділити на транзакційно-навантажені та контентно-орієнтовані. Для транзакційно-навантажених застосунків Blue-Green є значно кращим варіантом, оскільки тут пріоритетом є висока доступність сервісу та мінімальний простій, а миттєве перемикання і миттєвий відкат Blue-Green дають йому перевагу над Canary.
Контентно-орієнтовані застосунки, на відміну від них, не залежать від транзакцій у реальному часі. Оскільки такі застосунки, як правило, використовуються для платформ соціальних мереж і сервісів взаємодії з користувачами, Canary є значно кращою стратегією: оновлення можна випускати поступово й отримувати зворотний зв'язок на кожному етапі.
Вартість інфраструктури
Ще одним важливим фактором при виборі між Blue-Green і Canary є витрати. Blue-Green за своєю природою дорожчий, оскільки потребує підтримки двох окремих середовищ.
Саме тому єдине виробниче середовище Canary є значно економнішим варіантом, що робить його більш підходящим для невеликих команд або менш ресурсомістких застосунків.
Масштабованість і довгострокова підтримка
Blue-Green можна масштабувати, однак підтримка двох повноцінних середовищ для великомасштабних застосунків може бути ресурсомісткою і складною. З часом управління дубльованими середовищами створює значні накладні витрати, особливо для застосунків із складною інфраструктурою.
Це робить вибір між Canary і Blue-Green з точки зору масштабованості та обслуговування доволі очевидним. З Canary масштабування зазвичай простіше й економічніше, оскільки не потребує дубльованих середовищ.
Замість цього Canary зосереджується на масштабуванні в межах основного середовища, поступово розширюючи частку користувачів, яким доступні нові зміни. Такий підхід значно простіше підтримувати в довгостроковій перспективі, оскільки він знижує складність інфраструктури та спрощує обслуговування.
Досвід Cloudzy з Blue-Green Deployment і Canary Deployment
Надаючи DevOps-послуги клієнтам, ми розуміємо, що задоволеність клієнтів, висока доступність і мінімальний простій є критично важливими для їхнього бізнесу. В одному конкретному випадку клієнт звернувся до нас за допомогою у масштабному оновленні інфраструктури. Перед командою постало завдання обрати між Blue-Green і Canary для їхньої системи.
Після ретельного обмірковування ми вирішили спочатку спробувати Blue-Green, оскільки він практично не передбачає простою. Ми підготували ідентичне green-середовище і налаштувалися на розгортання оновлення. Напруга була відчутною: одним натисканням кнопки весь трафік переключався на green-середовище, а розробники знають, що скільки б ти не тестував, завжди залишається частка невизначеності щодо того, як усе обернеться.
На щастя, все пройшло добре. Перехід виявився надзвичайно плавним, і проблем майже не виникло. З часом, у міру того як зростали сервіси й користувацька база нашого клієнта, виникла потреба випускати нові функції, і дискусія між Blue-Green і Canary спалахнула знову.
Однак цього разу вибір був очевидним. Йшлося про відносно невеликі функції, які аж ніяк не можна порівняти за масштабом з тим оновленням інфраструктури. Тому ми природно обрали Canary: він дозволив поступово розгортати функції для невеликих частин користувацької бази клієнта й усувати проблеми на основі зворотного зв'язку від користувачів.
Це рішення виявилося правильним: хоча серйозних проблем не виникло, почали з'являтися дрібніші — про них повідомили 5% користувачів клієнтської бази, на яких функцію вже розгорнули.
У Cloudzy ми підбираємо рішення під конкретні потреби. Незалежно від того, що вам потрібно — надійність Blue-Green deployment чи гнучкість Canary deployment — наша DevOps-команда має досвід і знання, щоб реалізувати оптимальну стратегію для вашої інфраструктури. Зв'яжіться з нами тут сьогодні, щоб дізнатися, як ми можемо оптимізувати ваш процес розгортання та забезпечити безперебійну роботу.
До речі про VPS: ми пропонуємо одні з найнижчих тарифів у галузі VPS. У нашому розпорядженні — понад 12 локацій по всьому світу, виділені інтернет-з'єднання зі швидкістю до 10 Gbps, корпоративне NVMe-сховище SSD, потужні процесори AMD EPYC з турбочастотою 3.23 GHz і часом безвідмовної роботи 99.95%. Перегляньте наші Ціни VPS для отримання детальнішої інформації.
Завершальні думки
Зрештою, якщо порівнювати Canary deployment і Blue-Green deployment, не можна однозначно сказати, що один підхід кращий за інший. Все залежить від конкретних задач і того, який варіант краще відповідає вашим вимогам.
Часто задавані питання
У чому головна відмінність між Blue-Green і Canary?
Головна відмінність між стратегіями Blue-Green і Canary deployment полягає в тому, як саме виходять оновлення. Blue-Green deployment використовує два ідентичних середовища: оновлення застосовується до неактивного, після чого відбувається миттєве переключення практично без простою. Canary deployment, навпаки, поступово розгортає оновлення на невелику групу користувачів, відстежує можливі проблеми і лише потім розповсюджує зміни на всю базу.
Що краще скорочує простій: Blue-Green чи Canary?
Blue-Green deployment, як правило, краще підходить для мінімізації простою, оскільки дозволяє миттєво перемикатися між середовищами та зводить будь-які перебої до мінімуму. Canary deployment теж спрямований на зниження простою, але через поступове розгортання можуть виникати незначні локальні проблеми, які торкаються лише невеликої частини користувачів.
Які витрати слід враховувати при виборі між Blue-Green і Canary?
Blue-Green deployment зазвичай коштує дорожче, оскільки потребує підтримки двох повноцінних середовищ. Canary deployment економічно вигідніший: він не вимагає дублювання інфраструктури, а оновлення розгортаються в основному середовищі. Це робить його зручнішим вибором для невеликих команд або менш ресурсомістких застосунків.