Що таке Canary Deployment та його переваги
Буває, що програмне забезпечення чудово проходить тестування в штучному середовищі, й всі метрики говорять про те, що його можна випускати у продакшн. Але після релізу зʼявляються баги, яких на тесті не було. Через це бізнес може втратити як гроші, так і лояльність клієнтів.
Канаркове розгортання допомагає уникнути таких проблем на релізі — перевірити температуру води перед зануренням.
Що таке канаркове розгортання (canary deployment)?
Канаркове розгортання (canary deployment) — це поступове розгортання програмного забезпечення, що розподіляє трафік між уже розгорнутою стабільною версією та новою. Так розробники можуть протестувати оновлення на невелику частину аудиторії, перед тим як викотити в прод, і відстежити, як користувачі взаємодіють зі змінами в режимі реального часу.
Часто виробники випускають канарковий реліз (canary releases), щоб технічно підковані користувачі могли протестувати нову версію, віднайти баги та повідомити про них. Так робить Chrome, Mozilla, Facebook.
Навіщо потрібне канаркове розгортання (canary deployment)?
Канаркове розгортання дає можливість частково випускати застосунок, щоб переконатись, що нова версія стабільна та працює саме так, як планувалось. З ним програмне забезпечення можна оновлювати без простоїв та легко відкотитись на стару версію, якщо трапляються проблеми.
Якщо канаркове розгортання (canary deployment) проходить успішно, то можна додавати більше трафіку, якщо ні — можна повертати стару версію.
Назва «canary deployment» прийшла із практики шахтарів Америки, Австралії, Канади та Великобританії брати з собою під землю маленьких пташок канарок. Вони швидко відчувають насичення повітря метаном та вуглекислим газом і перестають співати — так повідомляють шахтарів про небезпеку. Так і канаркова версія оновлення швидко повідомляє розробників про баги.
Переваги канаркового розгортання (canary deployment)
Реліз нових версій програмного забезпечення з канарковим розгортанням надає декілька переваг ↴
/ А/В тестування. Можна одразу побачити в роботі дві версії. Ми надаємо користувачам одразу два варіанти програмного забезпечення та можемо в режимі реального часу побачити, яка користувачам подобається більше.
/ Ранній зворотний зв’язок. Одразу після релізу канаркової версії ми отримуємо реальний зворотний зв’язок від користувачів.
/ Економія часу. Запуск нових систем займає багато часу. З канарковим розгортанням можна провести запуск поступово і швидко.
/ Відсутність простоїв. Програмне забезпечення не простоює на період, коли запускається нова версія. Все відбувається плавно — користувачі не помічають змін на момент оновлення.
/ Легкий відкат. Якщо канаркова версія працює нестабільно та видає багато помилок, легко повернутись до попередньої стабільної — просто повернути весь трафік на неї.
/ Тестування місткості. Для розгортання нового мікросервісу потрібно перевірити у виробничому середовищі необхідну місткість. Після запуску канаркової версії на невелику кількість користувачів, можна зробити припущення, яка місткість буде потрібна для всього масиву клієнтів.
/ Мінімізація шкоди від багів. Більшість помилок деплою відбувається через неузгодженість даних та пріоритету. Таких помилок стає менше, тому що їх можна вирішувати в перші секунди релізу.
Як зробити канаркове розгортання (canary deployment)
В канарковому розгортанні (canary deployment) ми публікуємо оновлення програми лише на частину користувачів. Інші залишаються на стабільній версії. Якщо все проходить без проблем, то переводимо всіх клієнтів на новий реліз, якщо ні — повертаємось до попередньої версії.
Щоб реалізувати процес канаркового розгортання (canary deployment) нам потрібно: балансування, моніторинг, аналіз версій та автоматизація.
Балансування
Можна здійснювати двома шляхами.
Варіант 1 — одна нода завжди канаркова. На неї постійно ллється менше трафіку і, коли проходить реліз оновлення, ми зрівнюємо її показники до деплою і після. Якщо кількість помилок збільшилась, то кількість проблем теж.
Варіант 2 — нода стає канарковою під час деплою. Кількість трафіку, що проходить крізь неї, зменшується в процесі оновлення. Після деплою трафік відновлюється.
Моніторинг
Потрібно розуміти, за якими метриками слідкувати, щоб робити правильні висновки та вчасно реагувати на зміни.
Найпоширеніші метрики:
Кількість помилок. Показник демонструє, чи все, що відбувається, йде за планом.
Час виконання запитів. Метрика показує, наскільки швидко працює сервіс.
Кількість успішних відповідей в секунду. Цифра показує, наскільки вдало проходить деплой.
Час виконання 95% запитів. Метрика демонструє, наскільки якісно працює нове оновлення.
Слідкувати за метриками моніторингу зручно в Prometheus.
Аналіз версій
Метрики тільки канаркової ноди. Після деплою нової версії програмного забезпечення вивчаємо тільки її роботу. Важливо в цей час постійно не перезавантажувати сторінки, вивчаючи логи.
Порівняння канаркової ноди з іншими. Зрівнюємо з мікросервісами на повному трафіку, щоб зрозуміти успішність деплою. Якщо на меншому трафіку більша кількість помилок, чим у звичайної ноди, то деплой йде не по плану.
Канаркова нода порівнюється із собою в минулому. Потрібно порівняти актуальні показники роботи ноди із попередніми метриками та проаналізувати, краще вона почала працювати з оновленням, чи гірше.
Автоматизація
Щоб інженери не виконували роботу руками, потрібно налаштувати процес деплою (deployment pipeline):
- Початок деплою
- Виводимо ноду з-під балансувальника
- Ставимо канаркову ноду
- Вмикаємо балансувальник з обмеженим трафіком
- Порівнюємо роботу версій
Проводь деплой та налаштовуй автоматизацію у Kubernetes! Якщо не знаєш, як застосовувати інструмент, ми — навчимо. На курсі в IT Education Center навчимо докеризувати застосунки та готувати їх до деплою, працювати з кластерами через CLI, автоматизувати деплой і працювати з моніторингом, управляти кластерами Kubernetes. Опановуй оркестрування контейнерів! |
Висновки
Канаркове розгортання допомагає виробникам програмного забезпечення перевірити нову версію софта, коли тестове середовище виявляється занадто дорогим, автоматизовані тести не покривають всі задачі, які потрібно, а випускати в прод без тестів занадто ризиковано.
З канарковим розгортанням можна оптимізувати команду, щоб навіть новачки могли деплоїти в продакшн і не боялись зробити помилку — її можна легко та швидко виправити.