Фаза розгортання доставки програмного забезпечення відіграє значну роль у сучасній розробці програмного забезпечення, особливо в хмарному середовищі.
Незважаючи на це, це також одна з найбільш недооцінених фаз доставки. Компанії зазвичай не вкладають достатньо часу та енергії, щоб зробити розгортання швидким, надійним, автоматизованим або будь-яким із цього.
У більшості випадків я все ще бачу різні форми процедур розгортання вручну. У кращих випадках, принаймні з належним чином задокументованим контрольним списком кроків. У гіршому випадку просто випадкові плани, створені шляхом імпровізації в останні хвилини.
Автоматизована процедура розгортання завжди є віддаленою ціллю та заповнювачем короткострокової дорожньої карти, але фактичний шлях до неї непростий і непередбачуваний. Але наявність повністю автоматизованої та надійної процедури розгортання є ключем до значної економії з часом. Тоді ви можете відмовитися від зусиль, які більшість команди розробників зазвичай витрачає на розгортання кожного випуску.
Стратегії розгортання Canary і Blue-Green використовують усі ці переваги та додають більше, високу доступність і швидкі процеси встановлення та відкоту. Дозволяє команді випускати ще частіше і без безсонних ночей. Давайте подивимося, що вони приносять і чим відрізняються.
Синьо-зелене розгортання: огляд
Джерело: cncf.io
Синє-зелене розгортання зменшує час простою та ризик появи нових версій програмного забезпечення, створюючи два ідентичних середовища: активне (синє) та неактивне (зелене).
Активне середовище – це те, де працює поточна версія програмного забезпечення, а користувачі генерують робочий трафік. Неактивне середовище – це місце, де розгортається та тестується нова версія програмного забезпечення.
Після того, як нова версія протестована та готова, трафік перемикається з активного середовища в неактивне, перетворюючи його на нове активне середовище. За потреби можна повторити цей процес.
Читайте також: пояснення синьо-зеленого розгортання та його ролі в DevOps
Основні характеристики та переваги
Ось особливості процесу розгортання Blue-Green:
- Два ідентичних середовища є ідентичними з точки зору даних і процесів. Синє (активне) середовище — це те, де робочі користувачі виконують свої щоденні процеси. Зелене (неактивне) середовище – це місце, де встановлено нове розгортання та завжди синхронізовано з синім.
- Перемикання трафіку з активного середовища на неактивне, що робить його новим активним середовищем. Перемикання відбувається миттєво. Усі розгортання тепер у минулому. Немає вікна простою. Користувачам не потрібно нічого робити, щоб отримати доступ до нового середовища.
- Швидкий відкат у разі проблем є наслідком. Це забезпечує мінімальний час простою, якщо щось піде не так з новою версією програмного забезпечення, і програма залишається високодоступною.
- Автоматизоване тестування є ключовим аспектом розгортання Blue-Green. Це забезпечує ретельне тестування нової версії програмного забезпечення перед її розгортанням в активному середовищі.
- Це розгортання є частиною безперервної доставки, що в кінцевому підсумку означає швидші та частіші випуски програмного забезпечення у виробництво. Оскільки розгортання вже виконано, і вам потрібно лише переключити трафік, це настільки швидко, що ви можете робити це щодня. Припустимо, що ви швидкі в тестуванні.
Розгортання Canary: огляд
Джерело: cncf.io
Розгортання Canary виконує поступовий випуск нових функцій або оновлень для невеликої підгрупи користувачів перед розгортанням для всієї бази користувачів.
Цей підхід передбачає створення нової версії програмного забезпечення та її розгортання для невеликої групи, зберігаючи стару версію для решти користувачів. Команда розробників уважно стежить за новою версією, щоб переконатися, що вона стабільна та працює належним чином.
Якщо все йде добре, нова версія розгортається для більшої кількості користувачів, доки вона зрештою не охопить всю базу користувачів. Таким чином команда проекту мінімізує ризик появи помилок або інших проблем, які можуть вплинути на всіх користувачів одночасно.
Мета полягає в тому, щоб зменшити ризик впровадження нових функцій для великої бази користувачів. Тому перехід до нової версії відбувається набагато плавніше.
Читайте також: Пояснення розгортання Canary та його ролі в DevOps
Основні характеристики та переваги
Ось особливості процесу розгортання Canary:
- Спочатку розгорніть нову версію для невеликої підгрупи користувачів, а потім поступово поширюйте її для більшої кількості користувачів з часом. Ви зводите до мінімуму ризик появи помилок або інших проблем, які можуть вплинути на всіх користувачів одночасно.
- Уважно стежте за новою версією, щоб переконатися, що вона стабільна та працює належним чином. Розробники можуть швидше отримувати відгуки про нову версію, що дозволяє їм вносити будь-які необхідні зміни перед розгортанням для всієї бази користувачів.
- Якщо виникнуть проблеми, швидко й легко відкотіть розгортання до попередньої версії. Це допомагає підвищити довіру розробників і зацікавлених сторін до процесу розгортання, оскільки зменшує ризик появи проблем, які можуть вплинути на взаємодію з користувачем.
- Максимально автоматизуйте процес розгортання, щоб зменшити ризик людської помилки.
Підсумок: синьо-зелене розгортання проти розгортання Canary
FeatureBlue-Green DeploymentCanary DeploymentData SyncПостійна синхронізація даних між синім і зеленим середовищами.Підгрупа користувачів або серверів отримує нову версію; решта продовжують працювати з поточною версією. Процес активації. Перемикання з активного середовища на неактивне, коли нова версія буде готова. Поступове розгортання для визначеної підмножини користувачів, які активно тестують нові версії. Досвід користувачів у виробництві. Без простоїв у виробництві; плавне перемикання між активними середовищами. Підмножина робочих користувачів активно тестує нову версію; потенційні проблеми для цієї групи. Висока доступність проти швидкості зворотного зв’язку. Пріоритет щодо високої доступності. Пріоритет щодо швидшого зворотного зв’язку та контрольованого розгортання. Зменшення ризику. Зменшення ймовірності проблеми шляхом поступового випуску для підмножини користувачів. Тестування переважно в неактивних середовищах; Тестери можуть виявити не всі проблеми реального світу. Тестовий підхідТестування переважно в неактивних середовищах; Тестери можуть виявити не всі реальні проблеми. Виробничі користувачі діють як тестувальники, виявляючи реальні проблеми на ранній стадії. Відомі випадки використання Netflix, Amazon, Etsy, LinkedIn і IBM використовують Blue-Green. Netflix і Google використовують Canary разом із автоматизованим тестуванням і поступове розгортання.
Синьо-зелене розгортання проти Canary: особливості
Розгортання
Синьо-зелене розгортання означає два середовища (синє та зелене). Але в той же час два середовища постійно синхронізуються з точки зору даних. Це збільшує попит на постійні процеси синхронізації даних між двома середовищами.
Після того, як нова версія перевірена та вважається готовою, трафік перемикається з активного середовища в неактивне, перетворюючи його на нове активне середовище.
Ви не витрачаєте час на розгортання нового коду, і немає простою виробництва. Усі робочі користувачі постійно працюють у поточному активному середовищі й навіть не помічають перемикання.
Джерело: aws.amazon.com
Розгортання Canary передбачає розгортання нової версії програмного забезпечення для невеликої групи користувачів, тоді як більшість користувачів або серверів продовжують використовувати поточну версію. Це поступове розгортання, а не повний перехід. У цьому випадку тестувальники є безпосередніми робочими користувачами, навіть якщо це лише певна їх підмножина. Ця група активно тестує нову версію з виробничими процесами, і коли вона нарешті стане стабільною, нова версія буде поширена для решти користувачів.
Розгортання Blue-Green стане вашим вибором, якщо пріоритетом є висока доступність. Ви можете віддати перевагу розгортанню Canary, якщо віддаєте перевагу швидшому зворотному зв’язку та більш контрольованому (хоча й повільнішому) розгортанню.
Зменшення різниці ризиків
Синьо-зелене розгортання зменшує ризик збою випуску завдяки швидкому переходу на стабільну попередню версію. Для кожного користувача і миттєво. Очевидно, все ще існує ризик того, що нові функції будуть відкладені для користувачів у разі відкату, але принаймні жоден із користувачів не буде заблокований через деякі критичні проблеми з новим випуском.
Стратегія зменшення ризику розгортання Canary полягає в поступовому зменшенні ймовірності проблеми. Оскільки нові функції випущено для підгрупи робочих користувачів, вони вже використовують цю версію програмного забезпечення за деякий час до того, як випуск пошириться на всіх користувачів. Дуже висока ймовірність того, що перші користувачі незабаром виявлять будь-які подібні проблеми.
Різниця підходу до тесту
Синьо-зелене розгортання залишає процеси тестування виключно для неактивного середовища. Тут розробники, тестувальники та різні зацікавлені сторони можуть тестувати все, що забажають. Ви завжди можете очікувати такої ж поведінки, як якщо б тести запускалися безпосередньо в активному робочому середовищі (оскільки дані та конфігурація завжди синхронізуються між двома середовищами).
Отже, ваші тестувальники проводять шоу тестування, і все ще існує ймовірність, що вони не виявлять усіх проблем, які виникнуть у реальних користувачів. Однак насправді це не проблема, оскільки перемикання між неактивним і активним середовищами завжди відбувається швидко. Потім ви можете дозволити розробникам вирішити проблему та виконати перемикання знову.
Джерело: ibm.com
Розгортання Canary дозволяє використовувати робочих користувачів як тестувальників. Такі користувачі зазвичай прагнуть знайти більше проблем за коротший час. Вони просто запускають повсякденні бізнес-процеси в повному обсязі.
Не лише тому, що вони створили такі тестові сценарії та кейси, а тому, що вони все одно повинні це зробити. Ви ризикуєте, що члени групи деякий час матимуть серйозні проблеми. Але це не впливає на більшість користувачів, і команда розробників може відразу зосередитися на найсерйозніших реальних проблемах.
Досвід і випадки використання
Ось деякі з відомих випадків використання, коли такі розгортання вже виконуються успішно:
- Netflix використовує розгортання Blue-Green для розгортання нових версій свого потокового сервісу.
- Amazon і Etsy використовують Blue-Green розгортання для розгортання нових версій своєї платформи електронної комерції.
- LinkedIn використовує розгортання Blue-Green для розгортання нових версій своєї платформи соціальних мереж.
- IBM використовує розгортання Blue-Green для розгортання нових версій своєї хмарної платформи.
- Netflix також використовує Canary Deployment для впровадження змін у свій потоковий сервіс. Компанія використовує комбінацію автоматизованого тестування, позначок функцій і A/B-тестування, щоб повільно впроваджувати зміни.
- Google використовує Canary Deployment для впровадження змін у свої хмарні служби. Подібним чином компанія використовує переваги автоматизованого тестування, розподілу трафіку та включення моніторингу, щоб поступово розгортати зміни для невеликої підгрупи користувачів перед розгортанням для всіх користувачів.
Передовий досвід і майбутні тенденції
Автоматизація — це ключ, а конвеєри DevOps — це безперечно майбутнє процесів розгортання. Це повністю автоматичні процеси, які містять такі кроки, як:
- Створення або оновлення цільових середовищ щодо послуг, даних, користувачів або привілеїв.
- Автоматичне розгортання повних/дельта-версій вихідних кодів безпосередньо зі сховища коду.
- Оновлення схеми бази даних і оновлення даних.
- Автоматизоване виконання тестів безпосередньо під час розгортання.
- Автоматизовані процеси відкату в разі невдалого завершення будь-якого важливого тесту.
- Усунення будь-яких ступенів ручного втручання на нуль.
Коли у вас є такі конвеєри розгортання, ви можете підключати процеси Canary або Blue-Green або будь-які інші процеси, які вам заманеться. Це лише два приклади, які вже довели свою ефективність. Але це лише філософські рамки для вирішення більшості проблем із розгортанням. Неважко навіть перемикатися між ними з часом або використовувати поєднання обох.
Заключні слова
Дотримуючись процедур розгортання вручну, можна побачити незрілі процеси розробки або навіть команди. Крім того, це може показати, наскільки негнучкою та монолітною є конкретна компанія з точки зору доставки програмного забезпечення. В обох випадках це означає велику роботу, щоб виправити статус-кво. Отже, спробуйте реалізувати згадані вище стратегії розгортання для вашого проекту.
Далі перевірте, як розгортати програми в Kubernetes.