rambler.ios 6 - feature toggle

38
Feature toggle Станислав Цыганов @DevAlloy

Upload: stanislav-tsyganov

Post on 22-Jan-2017

177 views

Category:

Mobile


1 download

TRANSCRIPT

Page 1: Rambler.iOS 6 - Feature toggle

Feature toggle

Станислав Цыганов @DevAlloy

Page 2: Rambler.iOS 6 - Feature toggle

Задачи

• Настройки пользователя

• A/B тестирование

• Удаленное управление фичами

• Категоризация пользователей

• Настройки пользователя

• A/B тестирование

• Удаленное управление фичами

• Категоризация пользователей

Page 3: Rambler.iOS 6 - Feature toggle

О чем поговорим

• Что такое feature toggle

• Их категории

• Возможные подходы к реализации

• Что такое feature toggle

• Их категории

• Возможные подходы к реализации

Page 4: Rambler.iOS 6 - Feature toggle

Feature toggle

• Наличие состояния приложения, исходя из которого те или иные фичи считаются включенными или выключенными

• Состоянием может быть: конфигурационный файл с сервера, состояние сети, версия iOS

• Ветвление логики происходит в toggle point

Page 5: Rambler.iOS 6 - Feature toggle

Категории

Основные метрики: •Продолжительности жизни •Степень гибкости

Page 6: Rambler.iOS 6 - Feature toggle

Экспериментальные

• Очень динамичные (могут меняться по несколько раз во время одного запуска)

• Сюда же можно отнести фичи, которыми может управлять пользователь

• Фичи для A/B тестирования

Page 7: Rambler.iOS 6 - Feature toggle

Системные

• Фичи, которые могут сильно влиять на производительность системы

• Потенциально опасные фичи, которые может понадобится удаленно отключить

Page 8: Rambler.iOS 6 - Feature toggle

Разрешительные

• Выделение премиальных пользователей

• Внутреннее тестирование фичи

Page 9: Rambler.iOS 6 - Feature toggle

Релизные

• Новый код предварительно закрывается if

Page 10: Rambler.iOS 6 - Feature toggle

Релизные (Release)

• Все кидается в trunk(develop) ветку

Page 11: Rambler.iOS 6 - Feature toggle

Возможные подходы

Зависят от:

• Динамичности фичи

• Архитектуры

Page 12: Rambler.iOS 6 - Feature toggle

Динамические фичи

• Сервис настроек

• Реализация интерактора

Page 13: Rambler.iOS 6 - Feature toggle

VC

Сервис настроек

Feature Service

Page 14: Rambler.iOS 6 - Feature toggle

Сервис настроек

Presenter Interactor

Router

View

Feature Service

Page 15: Rambler.iOS 6 - Feature toggle

Сервис настроек

Presenter Interactor

Router

View

Feature Service

Page 16: Rambler.iOS 6 - Feature toggle

Сервис настроек

Presenter Interactor

Router

View

Feature Service

Page 17: Rambler.iOS 6 - Feature toggle

Сервис настроек

Feature Service

Page 18: Rambler.iOS 6 - Feature toggle

Сервис настроек

Page 19: Rambler.iOS 6 - Feature toggle

Реализация интерактора

Presenter Interactor

Router

View

Services

Page 20: Rambler.iOS 6 - Feature toggle

Реализация интерактора

Presenter Interactor

Router

View

Services

Page 21: Rambler.iOS 6 - Feature toggle

Interactor

Реализация интерактора

Page 22: Rambler.iOS 6 - Feature toggle

Реализация интерактора

Page 23: Rambler.iOS 6 - Feature toggle

Различия

• Позволяет избежать большого сервиса

• Менее реиспользуем

Page 24: Rambler.iOS 6 - Feature toggle

Presenter

Presenter/VC

Page 25: Rambler.iOS 6 - Feature toggle

Presenter/VC

Page 26: Rambler.iOS 6 - Feature toggle

Статические фичи

• Инъекция зависимостей

• Передача конфигурации

Page 27: Rambler.iOS 6 - Feature toggle

Инъекция зависимостей• Правильные зависимости могут быть выбраны при инициализации

Service

Page 28: Rambler.iOS 6 - Feature toggle

Инъекция зависимостей• Правильные зависимости могут быть выбраны при инициализации

ServiceService

InMemStorage fileStorage

Page 29: Rambler.iOS 6 - Feature toggle

Инъекция зависимостей• Может быть реализована через инъекцию фабрики

Page 30: Rambler.iOS 6 - Feature toggle

Инъекция зависимостей• Возможна проблема с повторяемостью кода

Page 31: Rambler.iOS 6 - Feature toggle

Инъекция зависимостей• Возможна проблема с повторяемостью кода

Page 32: Rambler.iOS 6 - Feature toggle

Инъекция зависимостей• Возможна проблема с повторяемостью кода

A B

Page 33: Rambler.iOS 6 - Feature toggle

Инъекция зависимостей• Возможна проблема с повторяемостью кода

A

B

??

Page 34: Rambler.iOS 6 - Feature toggle

Инъекция зависимостей• Возможна проблема с повторяемостью кода

CA

B

??

Page 35: Rambler.iOS 6 - Feature toggle

Передача конфигурации• Конфигурация устанавливается извне

Page 36: Rambler.iOS 6 - Feature toggle

Внимание!

• Не стоит инкапсулировать абсолютно все фичи

• Не стоит делать зависимые друг от друга фичи

Page 37: Rambler.iOS 6 - Feature toggle

Что получаем?

• Инкапсуляцию фич

• Относительно простой переход между категориями feature toggle

• Спокойствие за "опасные" фичи

Page 38: Rambler.iOS 6 - Feature toggle

Итоги• Feature toggle - подход, где поведения компонентов приложения может меняться в зависимости от стейта приложения

• Выделяются основные категории фич: Релизные, Экспериментальные, Системные и Разрешительные

• Подходы к реализации статических и динамических фич