SlideShare a Scribd company logo
1 of 18
Feature toggles
О приложении
- 13 млн активных установок
- 2 млн пользователей в день
- 11 разработчиков
2
Сложности командной разработки
- трудности тестирования
- негибкая релизная политика
3
Feature branches
4
develop
feature A
feature B
Feature branches
5
develop
feature A
feature B
нужный функционал
Feature branches
6
develop
feature A
feature B
pull request
Feature toggle
( feature switch, feature flag, conditional feature, etc ) – изменение поведения
системы без изменения кода
7
Feature toggle
( feature switch, feature flag, conditional feature, etc ) – изменение поведения
системы без изменения кода
interface Features {
val isNewFlowEnabled: Boolean
val isNewGalleryEnabled: Boolean
val isFunWallpapersEnabled: Boolean
// ...
}
8
Внедрение
@Provides
@PerFragment
internal fun providePresenter(features: Features): FlowPresenter {
return if (features.isNewFlowEnabled) {
NewFlowPresenter()
} else {
OldFlowPresenter()
}
}
9
Внедрение
override fun openGallery() {
val intent = if (features.isNewGalleryEnabled) {
intentFactory.internalGalleryIntent()
} else {
intentFactory.systemGalleryIntent()
}
startActivity(intent)
}
10
Внедрение
if (features.isFunWallpapersEnabled) {
wallpaperView.visibility = VISIBLE
}
11
Внедрение
- для любых изменений с оценкой сроков более одного дня
- незавершенный функционал можно сливать в develop, если он спрятан
за feature toggle
12
Внедрение
debug release
class ReleaseFeatures : Features {
override val isNewFlowEnabled = false
override val isNewGalleryEnabled = true
override val isFunWallpapersEnabled = false
}
13
Внедрение
Checklist:
- тесты
- отсутствие экрана настроек в release сборках
- запрет backup
14
Результаты
Плюсы:
- легкое тестирование
- переиспользуемость кода
- маленькие pull request. Повышение качества code review
- гибкая релизная политика
15
Результаты
Минусы:
- «мусор» в коде
- reverse engineering
16
Бонусы
- continuous Delivery
- remote Config
- A/B testing
17
Feature toggles
nikolaynesterov@gmail.com

More Related Content

Similar to Feature-toggles

Feature toggles в процессе подбора, Алексей Ульенков СберТех
Feature toggles в процессе подбора, Алексей Ульенков СберТехFeature toggles в процессе подбора, Алексей Ульенков СберТех
Feature toggles в процессе подбора, Алексей Ульенков СберТехСбертех | SberTech
 
Java 9: what is there beyond modularization
Java 9: what is there beyond modularizationJava 9: what is there beyond modularization
Java 9: what is there beyond modularizationIvan Krylov
 
Toggle your app / Евгений Кривобоков (Авито)
Toggle your app / Евгений Кривобоков (Авито)Toggle your app / Евгений Кривобоков (Авито)
Toggle your app / Евгений Кривобоков (Авито)Ontico
 
Toggle your app 2.0 (AppsConf)
Toggle your app 2.0 (AppsConf)Toggle your app 2.0 (AppsConf)
Toggle your app 2.0 (AppsConf)Eugene Krivobokov
 
Разработка Web-приложений на Angular JS. Архитектурные семинары Softengi
Разработка Web-приложений на Angular JS. Архитектурные семинары SoftengiРазработка Web-приложений на Angular JS. Архитектурные семинары Softengi
Разработка Web-приложений на Angular JS. Архитектурные семинары SoftengiSoftengi
 
Functional reactive full stack development in java/js (JPoint ed.)
Functional reactive full stack development in java/js (JPoint ed.)Functional reactive full stack development in java/js (JPoint ed.)
Functional reactive full stack development in java/js (JPoint ed.)Vyacheslav Lapin
 
Процесс изменения платформы Java
Процесс изменения платформы JavaПроцесс изменения платформы Java
Процесс изменения платформы JavaAlexey Fyodorov
 
Google I/O 2016 для разработчиков
Google I/O 2016 для разработчиковGoogle I/O 2016 для разработчиков
Google I/O 2016 для разработчиковWOX APP
 
SECON'2017, Неволин Роман, Функциональный C#
SECON'2017, Неволин Роман, Функциональный C#SECON'2017, Неволин Роман, Функциональный C#
SECON'2017, Неволин Роман, Функциональный C#SECON
 
Jiramania презентации @augspb
Jiramania презентации   @augspbJiramania презентации   @augspb
Jiramania презентации @augspbGonchik Tsymzhitov
 
Daria Chernishova Test Automation Story
Daria Chernishova Test Automation StoryDaria Chernishova Test Automation Story
Daria Chernishova Test Automation Storyautomated-testing.info
 
C# Web. Занятие 02.
C# Web. Занятие 02.C# Web. Занятие 02.
C# Web. Занятие 02.Igor Shkulipa
 
PostgreSQL в высоконагруженных проектах
PostgreSQL в высоконагруженных проектахPostgreSQL в высоконагруженных проектах
PostgreSQL в высоконагруженных проектахAlexey Vasiliev
 
Drupal организация разработки
Drupal   организация разработкиDrupal   организация разработки
Drupal организация разработкиAnna Fedoruk
 
What to expect from Java 9
What to expect from Java 9What to expect from Java 9
What to expect from Java 9JavaDayUA
 
RAD на Java: как устроена CUBA Platform?
RAD на Java: как устроена  CUBA Platform?RAD на Java: как устроена  CUBA Platform?
RAD на Java: как устроена CUBA Platform?Aleksey Stukalov
 
Drupal -organizaciya_razrabotki
Drupal  -organizaciya_razrabotkiDrupal  -organizaciya_razrabotki
Drupal -organizaciya_razrabotkidrupalconf
 

Similar to Feature-toggles (20)

Feature toggles в процессе подбора, Алексей Ульенков СберТех
Feature toggles в процессе подбора, Алексей Ульенков СберТехFeature toggles в процессе подбора, Алексей Ульенков СберТех
Feature toggles в процессе подбора, Алексей Ульенков СберТех
 
Java 9: what is there beyond modularization
Java 9: what is there beyond modularizationJava 9: what is there beyond modularization
Java 9: what is there beyond modularization
 
Toggle your app / Евгений Кривобоков (Авито)
Toggle your app / Евгений Кривобоков (Авито)Toggle your app / Евгений Кривобоков (Авито)
Toggle your app / Евгений Кривобоков (Авито)
 
Toggle your app 2.0 (AppsConf)
Toggle your app 2.0 (AppsConf)Toggle your app 2.0 (AppsConf)
Toggle your app 2.0 (AppsConf)
 
Разработка Web-приложений на Angular JS. Архитектурные семинары Softengi
Разработка Web-приложений на Angular JS. Архитектурные семинары SoftengiРазработка Web-приложений на Angular JS. Архитектурные семинары Softengi
Разработка Web-приложений на Angular JS. Архитектурные семинары Softengi
 
Functional reactive full stack development in java/js (JPoint ed.)
Functional reactive full stack development in java/js (JPoint ed.)Functional reactive full stack development in java/js (JPoint ed.)
Functional reactive full stack development in java/js (JPoint ed.)
 
Процесс изменения платформы Java
Процесс изменения платформы JavaПроцесс изменения платформы Java
Процесс изменения платформы Java
 
Google I/O 2016 для разработчиков
Google I/O 2016 для разработчиковGoogle I/O 2016 для разработчиков
Google I/O 2016 для разработчиков
 
SECON'2017, Неволин Роман, Функциональный C#
SECON'2017, Неволин Роман, Функциональный C#SECON'2017, Неволин Роман, Функциональный C#
SECON'2017, Неволин Роман, Функциональный C#
 
Java 9 - Back to the Future
Java 9 - Back to the FutureJava 9 - Back to the Future
Java 9 - Back to the Future
 
Jiramania презентации @augspb
Jiramania презентации   @augspbJiramania презентации   @augspb
Jiramania презентации @augspb
 
Daria Chernishova Test Automation Story
Daria Chernishova Test Automation StoryDaria Chernishova Test Automation Story
Daria Chernishova Test Automation Story
 
C# Web. Занятие 02.
C# Web. Занятие 02.C# Web. Занятие 02.
C# Web. Занятие 02.
 
Refactoring
RefactoringRefactoring
Refactoring
 
Toggle your app
Toggle your appToggle your app
Toggle your app
 
PostgreSQL в высоконагруженных проектах
PostgreSQL в высоконагруженных проектахPostgreSQL в высоконагруженных проектах
PostgreSQL в высоконагруженных проектах
 
Drupal организация разработки
Drupal   организация разработкиDrupal   организация разработки
Drupal организация разработки
 
What to expect from Java 9
What to expect from Java 9What to expect from Java 9
What to expect from Java 9
 
RAD на Java: как устроена CUBA Platform?
RAD на Java: как устроена  CUBA Platform?RAD на Java: как устроена  CUBA Platform?
RAD на Java: как устроена CUBA Platform?
 
Drupal -organizaciya_razrabotki
Drupal  -organizaciya_razrabotkiDrupal  -organizaciya_razrabotki
Drupal -organizaciya_razrabotki
 

Feature-toggles