Прапорець функції, також званий перемикачем функції, — це умова в коді програми, яка під час виконання визначає, чи активна певна функція для певного користувача або запиту. Замість того, щоб функція була присутня чи відсутня залежно від розгорнутої версії коду, вона присутня в коді, але вмикається або вимикається конфігурацією. Це відокремлює розгортання від випуску: код може безперервно постачатися у продакшн, тоді як функції, які він містить, залишаються невидимими, доки хтось не вирішить їх розкрити.
Для експериментів, прапорці функцій є основним механізмом тестування на стороні сервера. Призначення користувача варіанту прапорця функціонально аналогічне призначенню його експериментальній групі, і оскільки рішення відбувається в застосунку, а не в браузері, варіант може впливати на все, що контролює застосунок: логіку ціноутворення, рейтинг пошуку, алгоритми рекомендацій, тригери електронної пошти, правила оформлення замовлення та поведінку серверної частини, до якої жоден інструмент тестування на стороні клієнта не може дістатися. Це також усуває візуальне мерехтіння, яке створює маніпуляція на стороні клієнта, і є невидимим для блокувальників реклами та налаштувань браузера, що блокують скрипти.
Прапорці виконують кілька різних цілей, які варто розділити, оскільки вони мають дуже різний термін служби. Прапорці випуску приховують незавершену роботу та видаляються після повного запуску функції. Прапорці експериментів контролюють призначення варіантів та видаляються після завершення тестування. Операційні прапорці, які іноді називають аварійними перемикачами, дозволяють миттєво вимкнути функцію, якщо вона викликає проблеми у виробництві, і можуть існувати необмежений час. Прапорці дозволів обмежують функціональність за рівнем клієнта або контрактом і фактично є постійними. Якщо розглядати всі чотири речі як одне й те саме, організації отримують сотні застарілих умовних операторів, які ніхто не наважується видалити.
Це накопичення є основним ризиком. Кожен прапорець є гілкою, і кількість можливих шляхів коду зростає мультиплікативно в міру накопичення прапорців. Тестування кожної комбінації стає неможливим, неочікувані взаємодії між прапорцями призводять до дефектів, які важко відтворити, а код стає дедалі складнішим для обдумування. Дисципліновані команди розглядають видалення прапорців як частину визначення «виконано», ведуть інвентаризацію з власником та терміном дії для кожного прапорця, а також періодично проводять аудит прапорців, які мали фіксоване значення протягом місяців.
Прапорці функцій також дозволяють використовувати стратегії випуску, які знижують ризик незалежно від експериментів. Поступове розгортання надає функцію одному відсотку трафіку, потім п'яти, потім двадцяти, відстежуючи рівень помилок та бізнес-метрики на кожному кроці. Розгортання на основі кільця спочатку надає доступ внутрішнім користувачам, потім бета-когорті, а потім усім. Релізи Canary запускають нову версію разом зі старою та порівнюють операційні показники, перш ніж продовжити. Усі ці варіації однієї й тієї ж можливості: здатність змінювати, хто що бачить, без розгортання коду.
Прапорці також забезпечують механізм контрольованого регіонального та сегментного розгортання, що важливо для організацій, що працюють на кількох ринках. Зміну можна спочатку представити в одній країні, відстежувати на предмет специфічних для ринку проблем, пов'язаних з мовою, способами оплати, відображенням податків або нормативними вимогами, а потім розширити після того, як вона буде доведена. Це значно безпечніше, ніж глобальний реліз, і це дає докази того, чи переноситься покращення між ринками, що часто передбачається і рідко тестується. Питання інструментарію випливає з масштабу: невеликі команди можуть керувати прапорцями за допомогою файлів конфігурації та простого адміністративного інтерфейсу, тоді як організаціям, які одночасно використовують багато прапорців у кількох сервісах, зазвичай потрібна спеціалізована платформа управління, що забезпечує правила таргетування, журнали аудиту та послідовну оцінку на серверній та фронтендній частинах, оскільки непослідовна оцінка між рівнями призводить до того, що користувачі бачать половину функції.
Введення прапорців часто є передумовою для того, щоб взагалі могла існувати серйозна експериментальна практика, особливо для функціональності, яка знаходиться на рівні програми, а не на рівні представлення. розробка продукту Прапорна інфраструктура зазвичай будується разом із конвеєром доставки, тому експерименти, поступове розгортання та аварійне відкатування використовують один і той самий механізм. Після того, як вона існує, Послуга CRO Програма більше не обмежується тим, що можна змінити в браузері, що зазвичай відкриває найцінніші ідеї тестів у беклогу: ті, що стосуються ціноутворення, логіки персоналізації та механіки самого процесу покупки.