Стендап Сьогодні 📢 Канал в Telegram @stendap_sogodni

🤖🚫 Контент вільний від AI. Цей пост на 100% написаний людиною, як і все на моєму блозі. Насолоджуйтесь!

15.03.2023

Як не поламати продакшн для всіх

Хочу повернутись до теми перевірки на продакшні, яку зачепив позавчора. Але тепер з іншого боку — фактично, перевірка функціонала на продакшні є єдиним остаточним підтвердженням, що він працює. Але. Неодмінно деколи на продакшн пролазять критичні баги. Що робити, щоб вони доторкнулись найменшої кількості реальних користувачів?

Стейджинг не вирішує цієї проблеми, бо стейджинг ніколи не буде рівноцінною копією продакшна, з реальним характером використання. На стейджингу можна помітити баг при свідомій перевірці, але не випадково, як його знайдуть справжні користувачі.

Запуск інтеграційних тестів перед випуском нового коду теж не допомагає; це знайде регресії, але ж автоматизоване тестування теж обмежено передбачуваними сценаріями.

Так званий blue-green деплой допоможе відкотити зміни та не випускати зовсім поламаний код. Але нічого не зробить для багів, яки не впливають на деплой, тобто для більшості багів.

З підходів, що знизять ризик поламати продакшн для всіх, найпростіший у впровадженні — це feature flags. Причому не глобальні (хоча глобальні теж добре), а на рівні користувача. З фіча-флагами можна випускати функціонал поступово, а також відкочувати поведінку назад. Залишається тільки не забути використати їх, особливо для змін, що здаються тривіальними. Думаю, треба визначити для вашого бізнесу критичні сценарії (вірний вибір — білінг), та взяти за правило кожну зміну до них прикривати фіча-флагом.

Далі, можна зробити зі стейджингу “версію раннього доступу”, яку можуть за бажанням використати ентузіасти. Чимало продуктів так і роблять. Навіть Apple декілька років тому почали випускати бета-версії своїх операційних систем, щоб покращити якість остаточної версії, яку побачать всі.

Наступний по надійності підхід — це зробити декілька копій продакшна, та деплоїти на них одна за одною, можливо, на відстані днів або навіть тижнів. Але мені здається, що це спроможні робити тільки найбільші сервіси.