Получи случайную криптовалюту за регистрацию!

Development toggles  #iOS #TBD Мы недавно писали о начале вне | Koshelek Engineering

Development toggles 
#iOS #TBD

Мы недавно писали о начале внедрения подхода разработки Trunk Based Development. Отсутствующий, на тот момент, управляемый механизм development toggles (с концепцией feature toggle можно познакомиться тут) на iOS блокировал этот процесс. Наконец мы реализовали этот механизм и спешим поделиться, как. 
 
На этапе исследования первым делом обозначили два стула — готовая библиотека, например FeatureFlags, или in-house решение. Остановились на самописном фреймворке. Несмотря на то, что готовые библиотеки предоставляли довольно гибкий API, In-house решение позволило бы нам не плодить 3rd party зависимости, и было бы поддерживаемым и провалидированным тестами. 
 
На выходе получились: 
1. Локальная JSON конфигурация, описывающая доступные тогглы; 
2. Swift фреймворк Toggles, содержащий всю логику, которая максимально валидируется юнит-тестами. Для поддержки функциональности тогглов в легаси кодовой базе добавили адаптер для Objective-C; 
3. Внутреннее SwiftUI приложение TogglesApp, с помощью которого можно получать информацию о используемых тогглах в основном приложении и переключать их;
4. Возможность подмены конфигурации через Xcode функциональность Replace Container в Devices and Simulators, для поддержки старых версий, где SwiftUI недоступен. 
 
Пока что фреймворк работает только с локальным JSON конфигом, полностью удовлетворяющим нашим потребностям для development toggles и Trunk Based Development. В будущем планируем расширить функциональность библиотеки для возможности управления тогглами с бэкенда и подружить логику с нашим механизмом A/B тестирования, чтобы процесс работы с experiment toggles был более управляемым. Кроме этого, на каком-то этапе нужно будет задуматься о шифровании локального конфига, если там появятся чувствительные данные.

Автор: Александр Пряничников @pryaniq