Comments 6
Мы с тогглами не велосипедили, а просто взяли Unleash. Полёт нормальный, но...
Применительно к приложениям (не обязательно мобильным) вы с этими тогглами получаете головняк в плане поддержки "старых" версий. Типа: начали пилить фичу; спрятали её под тоггл; выкатили версию приложения 1 с этим тогглом; постепенно ввели фичу в эксплуатацию (открыли краник на 100% в том же анлише) — и всё, версия 1 теперь обречена зависеть от тоггл-менеджмента, причём от конкретной его конфигурации. Фича-то допилена, обкатана, можно вырезать тоггл над ней в версии 2, но в версии 1 на устройствах пользователей этот тоггл уже никуда не денется — вам придётся поддерживать инфраструктуру тоггл-менеджмента.
Да, можно заложить функции принуждения к обновлению приложения, выпиливать тогглы спустя время или даже автоматически считать их включенными по истечении какого-то времени (позавидую вашей уверенности в себе), но это всё бомбы замедленного действия. В любом случае онлайн-тогглы портят долгосрочную живучесть вашего приложения. Да даже в моменте она портится: отказ сервера тогглов приводит к пропаданию фич из приложения, что для пользователя выглядит очень стрёмно и ведёт к нагрузке на службу поддержки и отрицательным отзывам в сторах. К этому всему надо быть очень готовым. В преимущественно оффлайновые приложения лучше вообще онлайновую конфигурацию (в частности, фиче-тогглы) не тащить.
Думаю для этого можно ввести понятие минимальной версии клиентского приложения, и сделать модалку, если версия у клиента ниже минимальной версии. Мы реализовали это так (примерно) - клиент отправляет запрос в API, получает MINIMAL и LAST_VERSION. Если версия ниже MINIMAL, то блочит все приложение модалкой, предлагая обновиться. Если версия между MINIMAL и LAST_VERSION, то просто выходит модалка (которую можно закрыть), информирующая клиента о том, что вышла новая версия приложения.
Что у на том проекте где я сейчас работаю:
- есть именно тоглы. у тогла есть состояние вкл/выкл, если вкл для всех — то еще и версия где он вкл.
- раз включенный для всех тогл — нельзя выключать по правилам но при этом через несколько релизов надо удалить
- на сборках для разработчиков и тестеров есть панелька для включения тоглов руками (работает в том числе и на прод-серверах)
- есть еще динамические настройки, с сервера приходя флаги про режим работы функционала (и есть вариант — "вырубить нафиг", если что-то пошло не так и фича начала создавать проблему на фронте или бэке, иногда выключенная фича означает "использовать старую версию того же" но чаще именно полное отключение фичи пока чинят).
- по правилам, фича закрывается тоглом И динамической настройкой. И опять же постепенно выпиливается когда уже не надо
- динамические настройки учитывают еще и платформу(iOS/Android/Web) и версию приложения
- на старте приложение может словить ответ от бэка что рекомендуется обновится либо обновление должно быть обязательным (зависит от версии приложения, устройства и так далее — вполне может быть что телефон с Android 6 потребуют обновится а вот с Android 4 — дадут пока пожить… потому что новые версии требуют минимум Android 6)
И все это — самописное.
Спасибо автору за вкусную статью!
Готовим FeatureToggle для Android