Розгортання стратегії англійською: Blue-Green, Canary, and Feature Flags
Освоєння англійської мови для стратегій розгортання — blue- green, canary releases, feature flags і gradual rollouts.
Introduction
Сучасні команди програмного забезпечення постійно надають код, і вони розробили багатий словник для стратегій і методів, які роблять постійну доставку безпечною. Незалежно від того, обговорюєте ви план випуску у перегляді спринту, пояснюєте проблему виробництва нетехнічним учасникам чи пишете підручник з розгортання, розуміння термінів у цій статті допоможе вам точніше і з більшою впевненістю повідомити про стратегію розгортання.
Словник стратегії розгортання
** Розгортання синьо- зеленого кольору ** — стратегія випуску, яка підтримує два ідентичні виробничі середовища, які називаються синє і зелене. У будь-який момент часу одне середовище працює і обслуговує трафік, а інше не працює. Після того, як нова версія буде готовою, її буде розгорнуто у неактивному середовищі, перевірено, а потім миттєво переключено трафік, перетворюючи неактивне середовище на нове активне.
“Ми використовуємо синьо-зелене розгортання для нашого головного API сервісу — переключення майже миттєве для користувачів, і якщо щось не так, ми можемо повернути трафік до попереднього середовища менш ніж за хвилину.”
** Canary release ** — метод розгортання, за якого нова версія служби випускається для невеликого відсотка користувачів, перш ніж вона буде розгорнута для всієї бази користувачів. Термін походить від історичного використання канарій у вугільних шахтах як систем раннього попередження.
“Ми зробили канарський випуск нового потоку оплати для 5 відсотків користувачів в п’ятницю ввечері - рівень помилок залишався стабільним протягом 24 годин, тому ми розширили до 25 відсотків в суботу і пішли на повне розгортання в понеділок.”
** Прапорець можливості ** — Механізм програмного забезпечення, який дозволяє інженерам увімкнути або вимкнути можливість під час виконання без розгортання нового коду. Прапорці можливостей відокремлюють розгортання від випуску, дозволяючи коду бути відправленим до виробництва у спущеному стані і активованим, коли команда готова.
“Новий рушій рекомендацій працює за прапорцем функції вже два тижні — ми плануємо ввімкнути його для всіх користувачів наступного вівторка після того, як будуть отримані остаточні результати A/B-тестування.”
** Відновлення ** — процес повернення розгортання до попередньої відомої версії програмного забезпечення, зазвичай у відповідь на виробничий інцидент, несподівані помилки або невдалу перевірку стану після випуску.
“Протягом трьох хвилин після розгортання, наш рівень помилок підскочив вище порогу SLO — ми негайно запустили відновлення і були повернуті до попередньої версії протягом п’яти хвилин.”
** Перейти до виробництва ** — перехід збірки або артефакту через етапи конвеєра розгортання з нижчого середовища, наприклад, з етапу розробки або передвиробництва, до реального виробничого середовища. Промоція зазвичай слідує за набором воротів перевірки.
“Якщо команда контролю якості підпишеться на стадійне середовище і всі тести інтеграції пройдуть успішно, менеджер випуску переведе вас на виробниче середовище під час вікна підтримки у четвер.”
** Dark launch ** — метод, за допомогою якого нова функціональність або шлях коду виконується у виробничому середовищі для справжніх користувачів, але його вивід приховується або відкидається, а не показується користувачеві. Це дозволяє інженерам тестувати новий код під реальним виробничим навантаженням без впливу на користувацький досвід.
“Ми запустили новий алгоритм індексування пошуку в темряві протягом тижня — ми відправили результати в тіньовий журнал, а не в інтерфейс користувача, що дозволило нам перевірити продуктивність і коректність без будь-якого ризику для користувача.”
** Розділення трафіку ** — практика розділення вхідних запитів між двома або більше версіями служби, зазвичай за допомогою балансувальника навантаження або правила шлюзу API. Розділення трафіку є основним механізмом за канарськими випусками і A / B тестуванням у виробництві.
“Ми налаштували розділення трафіку на рівні nginx — 90 відсотків запитів надходять до стабільної версії, а 10 відсотків маршрутизуються до експериментальної кінцевої точки, щоб ми могли порівняти часи відповіді під реальним навантаженням.”
** Поступове розгортання ** — керований підхід до розгортання, коли нова версія випускається для поступово більших сегментів користувачів або інфраструктури з часом, з перевірками на кожному етапі перед подальшим розширенням.
“Поступове впровадження пройшло гладко: 1 відсоток у понеділок, 10 відсотків до середи, 50 відсотків до п’ятниці, і повне впровадження наступного понеділка після п’яти днів чистих показників.”
Вибір правильної стратегії
Кожна стратегія розгортання має різний ризик і складність профілю. Блакитно-зелене розгортання відмінно підходить для випусків з майже нульовим часом простою, але вимагає подвійного обслуговування інфраструктури. Випуски Canary добре підходять для змін, які стосуються користувача, коли ви бажаєте спостерігати за реальною поведінкою у невеликому масштабі перед повним випуском. Прапорці можливостей надають найбільшу гнучкість, але вводять постійні витрати на обслуговування — прапорці, які ніколи не очищаються, стають технічним боргом.
Темні запуски використовуються не дуже часто, але вони надзвичайно потужні для перевірки змін сервера під час виробничого навантаження без будь- якого впливу на користувача. Поступове розгортання з автоматичними тригерами відновлення представляє поточну найкращу практику для більшості високошвидкісних виробничих систем.
Розробка планів розгортання
Під час написання або презентації плану розгортання, будьте конкретними щодо стратегії, яку ви використовуєте, і чому. Не просто скажіть « ми розгорнемо у четвер ». Скажіть « ми зробимо випуск канарки на рівні 5 відсотків у четвер, спостерігатимемо за рівнем помилок і затримкою протягом 24 годин, і розширимо до повного обсягу трафіку у п’ ятницю, якщо показники залишаться у межах порогів SLO — інакше ми повернемося до попереднього стану ». Цей рівень специфічності демонструє інженерну зрілість і створює довіру до зацікавлених сторін, яким потрібно розуміти профіль ризику кожного випуску.
Недоліки: Неможливість використовувати в іграх
Розгортання програмного забезпечення не просто про натискання коду; це складна розмова, що включає зменшення ризику, моніторинг продуктивності і співпрацю. Для не-англомовних носіїв англійської мови, специфічна термінологія навколо стратегій розгортання - синьо-зелене, канарське, прапори функцій - може бути особливо складною через тонкі відмінності у фразування і наголосу. Це не просто про знання визначення, але розуміння того, як вони насправді використовуються на практиці в команді розробників. Розглянемо деякі поширені пастки і як підійти до них з більшою ясністю.
Однією з найчастіших проблем є використання надто технічної мови без контексту. Переглядач коду може залишити коментар на зразок: « Перед об’ єднанням слід випустити « канарку » ». Хоча це технічно правильно, але це не пояснює * чому *. Більш корисною, комунікативною відповіддю буде: « Щоб мінімізувати ризик під час розгортання, чи можемо ми реалізувати випуск канарій, який буде націлений на 5% користувачів, щоб стежити за продуктивністю і визначати будь- які несподівані проблеми? » Ця фраза відразу надає контекст — метою є зменшення ризику — і вказує конкретну метрику (5%) для розуміння обсягу. Аналогічно, в обговореннях Slack ви часто почуєте такі фрази, як «переверніть прапорець функції». Хоча це зрозуміло, це не передає * мету * перевертання прапорця - контролювати доступ до нової функціональності і дозволяє нам швидко повертатися, якщо це потрібно. Краще повідомлення може бути: «Гаразд, давайте ввімкнемо прапорець функції для бета-користувачів, щоб ми могли зібрати відгуки перед більш широким випуском»
Іншою областю, де виникає плутанина, є значення термінології. « Синій- зелений » часто звучить як проста схема кольорів, але це повне дублювання інфраструктури — одне середовище (синій) працює, а інше (зелене) підготовлено для негайного переключення. « Канарейка » не просто випускається для невеликої групи; це * активний моніторинг * цієї невеликої групи на предмет аномалій перед масштабуванням. Прапорці можливостей — це не просто перемикач; вони представляють умовну логіку у вашому коді, що надає вам змогу керувати тим, які користувачі бачать які функціональні можливості на основі різних критеріїв — сегмента користувача, географічного розташування або навіть часу дня.
Нарешті, пам’ятайте про важливість активного слухання і запитання прояснюючих питань. Не вагайтеся запитати: « Чи можете ви розібратися, що ви маєте на увазі під « моніторингом продуктивності » у цьому контексті? » або « Які показники ми розглядаємо, коли говоримо про успішний випуск канарського релізу? » Проактивне спілкування є ключем до того, щоб заповнити будь- які прогалини у словнику і переконатися, що всі розуміють цілі та виконання стратегії розгортання.
# Example: Using Terraform to manage blue-green deployments (simplified)
terraform {
required_providers {
aws = "~> 4.0"
}
}
resource "aws_instance" "webserver" {
ami = "ami-0c55b23e9d874f116" # Example AMI
instance_type = "t2.micro"
tags = {
Name = "Blue Web Server"
}
}
resource "aws_instance" "green_webserver" {
ami = "ami-0c55b23e9d874f116" # Example AMI
instance_type = "t2.micro"
tags = {
Name = "Green Web Server"
}
}
output webserver_address {
value = aws_instance.webserver.public_ip
}