Англійська для розробників платформи Feature Flag
Освоєння англійського словника, який розробники використовують для визначення пріоритетів прапорців, відсотків розгортання і експериментального словника під час обговорення платформ прапорців можливостей, таких як Unleash, Flagsmith або GrowthBook.
Платформи з прапорцями можливостей дозволяють командам відокремлювати розгортання від випуску, але ця гнучкість приходить з словником, який команда повинна точно поділитись - «розгортання», «kill switch» і «експеримент» - це три різні речі з трьома різними профілями ризику, і їх змішування в обговоренні може призвести до неправильних заходів безпеки. Цей підручник містить інформацію про англійську мову, яку використовують під час обговорення функціональних прапорців платформ з командою.
Ключовий словник
** Правило призначення ** — умова (заснована на атрибутах користувача, таких як рівень плану, регіон або ІД користувача), яка визначає, які користувачі бачать які варіанти прапора, і яка оцінюється під час кожного перевірки прапора.
“Вада вплинула тільки на корпоративних клієнтів, тому що правило призначення було розширено до атрибуту plan:enterprise - всі інші були на старому шляху коду весь час.”
** Відсоткове розгортання ** — поступове збільшення частки користувачів, які отримують новий варіант прапора, зазвичай, для виявлення проблем у невеликій групі користувачів перед повним випуском.
- “Не перескочуйте прямо до 100% — починайте з 5% і спостерігайте за кількістю помилок протягом години, перш ніж збільшувати її.” *
** Kill switch ** — прапорець, єдина мета якого полягає у миттєвому вимиканні можливості або шляху коду у виробничому режимі без розгортання, використовується як механізм безпеки операцій, а не як механізм випуску.
- “Запакувати нову логіку повторення платежу у перемикач зупинки — якщо він неправильно поводиться під реальним навантаженням, нам потрібно мати змогу вимкнути його за декілька секунд, не чекаючи на відновлення розгортання.” *
** Флаговий борг ** — накопичення старих флагів можливостей, залишених в кодовій базі довго після того, як їх розгортання завершено, додаючи складність і ризик без постійної користі. “Цей прапорець був на 100% протягом восьми місяців, і кожен користувач знаходиться на новому шляху — це борг прапорця, давайте вилучимо прапорець і старий шлях коду повністю.”
** Прилипкість** — гарантія того, що даний користувач постійно отримує ту ж саму варіацію прапора у різних сеансах, зазвичай, це досягається за допомогою гешування стабільного ідентифікатора користувача, щоб користувачі не мігнули між сеансами. “Користувачі бачили новий поток замовлення під час одного відвідування, а старий — під час наступного — це помилка прилипання, ключ bucket прапора не стабільний між сеансами.”
** Прапорець тестування A/B (експерименту) ** — прапорець, який використовується спеціально для випадкового призначення користувачів варіантам для статистичного порівняння, відрізняється від простого прапорця розгортання і зазвичай пов’ язано з аналітичною або експериментальною платформою. “Це не прапорець розгортання, це прапорець експерименту — не перезаписуйте жодного завдання вручну, інакше ви зменшите статистичні результати, які ми намагаємося виміряти.”
Звичайні фрази
- Чи це kill switch, rollout flag, або експериментальний прапор — тому що очікування безпеки різні для кожного?»
- Який процент оновлення і який план збільшення його?»
- Чи є цей прапор все ще потрібним, чи це борг прапора, який ми повинні очистити?»
- Чи є завдання цього користувача прилипаючим між сеансами, або воно може тріскатися?
- Чи є хтось, хто вручну перевизначає завдання на цьому експериментальному прапорі?
Приклади висловлювань
Перегляд запиту на звантаження: “Цей прапорець був повністю розгорнутий протягом місяців без плану його вилучення — додамо квиток для вилучення прапорця і резервного шляху коду, це борг за прапорець.”
Пояснення рішення про проектування: “Ми закріпили новий алгоритм рекомендацій у перемикачі зупинки окремо від його прапора розгортання, тому операції можуть відключити його миттєво під час інциденту, не торкаючись відсотка розгортання.”
Опис вади: “Користувачі продовжували перемикати між старим і новим інтерфейсом, тому що прапорець був заснований на ідентифікаторі сеансу, а не на ідентифікаторі користувача — перехід на стабільний ключ, заснований на користувачі, виправив проблему з прилипанням.”
Професійні поради
- Скажіть ** “kill switch” ** спеціально для аварійного відключення прапора - використання “прапора” загально для розгортання і вимикання заборони затьмарює розмову про операційний ризик.
- Під час перегляду використання прапорців, запитайте “чи є цей прапорець боргом?” — прапорець, який застряг на 100% або 0% без активної мети повинен викликати квиток очищення, не залишаючи його безкінечно.
- Використовуйте “липкість” точно, коли описуєте послідовне призначення для кожного користувача — це стандартний термін і відрізняє проблему від правил призначення або відсотку розгортання.
- Розрізняти ** « експериментальний прапорець » ** (статистичне призначення, не перезапускати вручну) від ** « прапорця розгортання » ** (прогресивно випущений, вручну перезапуск для випадків підтримки часто є в порядку) при встановленні очікувань з командами підтримки.
Практичні вправи
- Поясніть двома реченнями різницю між аварійним вимикачем і відсотковим розгортанням.
- Написати коментар перегляду коду у одному реченні, у якому буде позначено старий прапорець як заборгованість за прапорцем.
- Опишете вашими словами, чому вручну перезаписувати завдання користувача на прапорці експерименту є проблемою.
Науковий напрямок: «Системи управління та оптимізація процесів»
Будьмо чесними - вивчення професійної англійської як розробник може бути приголомшливим. Це не просто знати * визначення * слів; це розуміти, як вони використовуються у контексті, особливо при обговоренні технічних деталей, таких як прапорці можливостей. Багато поширених фраз звучать незграбно або неточно, якщо їх передавати без чіткого розуміння їхніх нюансів. Наприклад, просто сказати «ми розгорнемо 80%» може бути неправильно інтерпретовано — що означає «розгорнути» справді? Це може означати єдине, монолітне розгортання, а не поступове, цілеспрямоване випуск.
Часта проблема виникає у коментарях перегляду коду. Уявіть, що ви отримуєте повідомлення: « Цей прапорець не працює правильно ». Хоча це технічно вірно, але в ньому відсутній важливий контекст. Корисніша відповідь, спрямована на ясніше спілкування, буде на зразок: « Чи можете ви пояснити, на який сегмент користувача впливає прапорець і яка очікувана поведінка? » Чи буде записано у журнал певне повідомлення про помилку, якщо прапорець не буде активним?» Зауважте, що у цьому пункті додано питання — у ньому буде запитано про певні відомості, необхідні для ефективного діагностування проблеми. Аналогічно, в розмовах Slack, що обговорюють PR, уникаючи нечітких тверджень, таких як «Функція прапорець потребує виправлення», а замість цього вибираючи «Я бачу непослідовну поведінку з цим прапорцем, що націлений на користувачів в бета-групі; чи можемо ми дослідити, чому він не активується, як очікувалося?», Демонструє більш професійний і дієвий підхід.
Іншою областю, де може легко виникнути плутанина, є обговорення відсотків розгортання. Сказати «ми розгорнемо 20% до виробництва» не автоматично передає * як * це розгортання відбудеться. Буде це лінійним? Показник? Чи буде вбудований якийсь моніторинг або зворотній зв’язок? Важливо вказати стратегію. Наприклад, хороший опис PR може звучати так: «Ми поступово збільшимо експозицію прапора з 5% до 20% протягом наступних 72 годин, уважно стежачи за впливом продуктивності і відгуками користувачів». Цей рівень деталізації забезпечує, що кожен розуміє запланований процес.
Нарешті, пам’ ятайте, що технічний жаргон часто шарується з конкретними фразами, пов’ язаними зі зменшенням ризику. Фрази на кшталт «зменшити радіус вибуху», «контрольований розгортання» або «хірургічне розгортання» часто використовуються при обговоренні реалізації функцій прапора - вони всі вказують на навмисну стратегію для управління потенційними негативними наслідками. Зрозуміти ці терміни і те, як вони застосовуються в реальних сценаріях, значно поліпшить ваше спілкування і співпрацю з вашою командою.
# Example: Using Unleash to query the status of a flag
unleash list --target "my_feature"