SlideShare a Scribd company logo
1 of 59
Download to read offline
Toggle your app
Евгений Кривобоков
12 млн установок
20+ Android разработчиков
70+ pull request’ов в неделю
370+ KLOC (Kotlin)
2
Проблемы большого приложения
Жизнь одной фичи
Тестирование
Разгоняем релизный цикл
3
Рост команд
4
Design Development QA
Кросс-функциональные команды
5
Design
Team Team
Development
QA
Как фичи попадают в приложение?
6
merge
Как фичи попадают в приложение?
7
Можно выпускать?
Как фичи попадают в приложение?
8
Можно выпускать Баги?
Точка
невозврата
Как фичи попадают в приложение?
9
Можно выпускать?
Feature toggles
( feature switch, feature flag, conditional feature, etc.) 

10
Feature toggles


Изменение поведения без изменения кода*
11
( feature switch, feature flag, conditional feature, etc.) 

12
Проблемы большого приложения
Жизнь одной фичи
Тестирование
Разгоняем релизный цикл
13
Time to market
14
Team
Team
Team
Team
…
release train
Публикация или доставка
15
Team
Team
Team
Team
…
release train
отключены
“While feature toggles are a valuable tool in the box,
they are a second-best option. 

The best thing to do with such features is to find a
way to gradually release them into production as you
are building them”
16
Martin Fowler
Жизнь одной фичи
17
ИзмененияДобавление
переключателя
Удаление
переключателя
Включение
…
Добавление переключателя
Технический долг: плата за гибкость
Планировать удаление
18
Простейший способ
val useNewFlow = false
if (useNewFlow) {
startNewFlow()
} else {
startLegacyFlow()
}
19
Простейший способ
val useNewFlow = false
if (useNewFlow) {
startNewFlow()
} else {
startLegacyFlow()
}
20
отключен по умолчанию
Toggle router
interface Features {
val isNewFlowEnabled: Boolean
val isNewGalleryEnabled: Boolean
val isWallpapersEnabled: Boolean
// ...
}
21
Feature
interface Feature<out T> {
val value: T
// metadata
22
Feature
interface Feature<out T> {
val value: T
val description: String
val key: String
// ...
23
Описание для
тестировщиков
Уникальный
идентификатор
Toggle router
interface Features {
val isNewFlowEnabled: Feature<Boolean>
val newAdvice: Feature<String>
val apiUri: Feature<Uri>
// ...
24
Самый простой способ
if (features.isWallpapersEnabled) {

wallpaper.visibility = VISIBLE

}
25
Изоляция решений
fun openGallery() {
val intent = if (features.isNewGalleryEnabled){
intentFactory.internalGalleryIntent()
} else {
intentFactory.systemGalleryIntent()
}
startActivity(intent)
}
26
Изоляция решений
fun openGallery() {
val intent = if (isNewGallerySupported()){
intentFactory.internalGalleryIntent()
} else {
intentFactory.systemGalleryIntent()
}
startActivity(intent)
}
27
Инверсия решений
@Provides
fun providePresenter(features: Features): Presenter {
return if (isNewFlowEnabled()) {
NewFlowPresenter()
} else {
OldFlowPresenter()
}
}
28
Branch by abstraction
29
Client
Client
Client
Supplier
Branch by abstraction
30
Client
Client
Client
Supplier
Abstraction
layer
Branch by abstraction
31
Client
Client
Client
Supplier
Abstraction
layer
Branch by abstraction
32
Client
Client
Client
Supplier
Abstraction
layer
New
Supplier
Включение
Experimental toggle
Release toggle
33
Эксперименты
A/B тесты
Ранние релизы
34
Конфликтующие изменения в API
35
iOS
Android
/1/parameters
Конфликтующие изменения в API
36
iOS
Android
/2/parameters
Конфликтующие изменения в API
37
iOS
Android
/?/parameters
Линейность версионирования API
38
1 2 3
/v/path/to/resource
…
Публикация состояния
iOS
Android
Features
39
/1/parameters
Публикация состояния
class FeaturesInterceptor(…) : Interceptor {



override fun intercept(chain: Interceptor.Chain): Response {

…

headers.add("Features", buildFeaturesHeader())

…

return chain.proceed(request)

}



}
40
Публикация состояния
interface Feature<out T> {
// ...
val apiToggleKey: String?
41
Удаление переключателя
Избавляемся от тех. долга
42
Проблемы большого приложения
Жизнь одной фичи
Тестирование
Разгоняем релизный цикл
43
Как тестировать?
44
feature N
feature 1
develop
…
Отладочный экран
MutableFeature<T>: Feature<T> {
override var value: T
val originalValue: T
}
Изменяемые значения
47
Юнит тесты
@Test

fun `get intent - routes to profile items - updated user adverts is disabled`() {

features.givenFeatureDisabled { updatedUserAdverts }



val intent = factory.createUserAdvertsIntent()



intent.assertHasComponent<ProfileItemsActivity>()

}



@Test

fun `get intent - routes to user adverts - updated user adverts is enabled`() {

features.givenFeatureEnabled { updatedUserAdverts }



val intent = factory.createUserAdvertsIntent()



intent.assertHasComponent<UserAdvertsActivity>()

}
48
Юнит тесты
@Test

fun `get intent - routes to profile items - updated user adverts is disabled`() {

features.givenFeatureDisabled { updatedUserAdverts }



val intent = factory.createUserAdvertsIntent()



intent.assertHasComponent<ProfileItemsActivity>()

}



@Test

fun `get intent - routes to user adverts - updated user adverts is enabled`() {

features.givenFeatureEnabled { updatedUserAdverts }



val intent = factory.createUserAdvertsIntent()



intent.assertHasComponent<UserAdvertsActivity>()

}
49
Юнит тесты: взаимное влияние
val features = Features()
50
Юнит тесты: взаимное влияние
val features = Features()
@Mock
lateinit var features: Features
51
Юнит тесты: взаимное влияние
fun getToggleCases() = arrayOf(...)



@Test

@Parameters(method = "getToggleCases")

fun `...`(case: ToggleCase) { … }
52
UI тесты
@Test

fun deliveryButton_isDisplayed_deliveryIsActivated() {

givenToggleEnabled { delivery }



screen.start()



deliveryButton.isVisible()

}



@Test

fun deliveryButton_isNotDisplayed_deliveryIsDeactivated() {

givenToggleDisabled { delivery }



screen.start()



deliveryButton.isNotVisible()

}
53
Проблемы большого приложения
Жизнь одной фичи
Тестирование
Разгоняем релизный цикл
54
Непрерывная доставка
Ценность для пользователя
Возможна ли в принципе?
Что мешает?
Как приближаемся?
55
Что попало в сборку?
56
Что попало в сборку?
APK
57
• Fix Version: ?
• Affects version: ?
• …
{
"key":"suggest"
"value":true
}
Что попало в сборку?
58
report Toggle Key:
Deploy
service
suggest
Итоги
Непрерывная интеграция кода
Небольшие pull request’ы
Приближаемся к непрерывной доставке
59

More Related Content

What's hot

Postman тестирование api v1.0 (1)
Postman тестирование api v1.0 (1)Postman тестирование api v1.0 (1)
Postman тестирование api v1.0 (1)DataArt
 
Инструменты автоматизации тестирования мобильных приложений. Сравнительный ан...
Инструменты автоматизации тестирования мобильных приложений. Сравнительный ан...Инструменты автоматизации тестирования мобильных приложений. Сравнительный ан...
Инструменты автоматизации тестирования мобильных приложений. Сравнительный ан...ISsoft
 
Plugin development for intelli j platform
Plugin development for intelli j platformPlugin development for intelli j platform
Plugin development for intelli j platformchashnikov
 
Mobile automation uamobile
Mobile automation uamobileMobile automation uamobile
Mobile automation uamobileUA Mobile
 
Java худеет. Спроси меня как. Уменьшение размера дистрибутива Java приложения...
Java худеет. Спроси меня как. Уменьшение размера дистрибутива Java приложения...Java худеет. Спроси меня как. Уменьшение размера дистрибутива Java приложения...
Java худеет. Спроси меня как. Уменьшение размера дистрибутива Java приложения...Nikita Lipsky
 

What's hot (6)

Postman тестирование api v1.0 (1)
Postman тестирование api v1.0 (1)Postman тестирование api v1.0 (1)
Postman тестирование api v1.0 (1)
 
Инструменты автоматизации тестирования мобильных приложений. Сравнительный ан...
Инструменты автоматизации тестирования мобильных приложений. Сравнительный ан...Инструменты автоматизации тестирования мобильных приложений. Сравнительный ан...
Инструменты автоматизации тестирования мобильных приложений. Сравнительный ан...
 
Plugin development for intelli j platform
Plugin development for intelli j platformPlugin development for intelli j platform
Plugin development for intelli j platform
 
Mobile automation uamobile
Mobile automation uamobileMobile automation uamobile
Mobile automation uamobile
 
Team workflow
Team workflowTeam workflow
Team workflow
 
Java худеет. Спроси меня как. Уменьшение размера дистрибутива Java приложения...
Java худеет. Спроси меня как. Уменьшение размера дистрибутива Java приложения...Java худеет. Спроси меня как. Уменьшение размера дистрибутива Java приложения...
Java худеет. Спроси меня как. Уменьшение размера дистрибутива Java приложения...
 

Similar to Toggle your app / Евгений Кривобоков (Авито)

Jiramania презентации @augspb
Jiramania презентации   @augspbJiramania презентации   @augspb
Jiramania презентации @augspbGonchik Tsymzhitov
 
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
 
Комфортная разработка мобильных проектов
Комфортная разработка мобильных проектовКомфортная разработка мобильных проектов
Комфортная разработка мобильных проектовCodeFest
 
Обзор платформы B4
Обзор платформы B4Обзор платформы B4
Обзор платформы B4Bars Group
 
Архитектура в Agile: слабая связность
Архитектура в Agile: слабая связностьАрхитектура в Agile: слабая связность
Архитектура в Agile: слабая связностьAndrey Bibichev
 
DEV Labs 2016. Микросервисы - первая кровь
DEV Labs 2016. Микросервисы - первая кровьDEV Labs 2016. Микросервисы - первая кровь
DEV Labs 2016. Микросервисы - первая кровьSasha Soleev
 
Масштабируемая архитектура фронтенда
Масштабируемая архитектура фронтендаМасштабируемая архитектура фронтенда
Масштабируемая архитектура фронтендаRoman Dvornov
 
Как жить в согласии с SOLID?
Как жить в согласии с SOLID?Как жить в согласии с SOLID?
Как жить в согласии с SOLID?etyumentcev
 
Расширяемая платформа для создания и управления автоматизированными тестами н...
Расширяемая платформа для создания и управления автоматизированными тестами н...Расширяемая платформа для создания и управления автоматизированными тестами н...
Расширяемая платформа для создания и управления автоматизированными тестами н...jazzteam
 
IT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчикаIT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчикаMikhail Chinkov
 
IT-шная история игрушек или feature-driven тестирование в действии
IT-шная история игрушек или feature-driven тестирование в действииIT-шная история игрушек или feature-driven тестирование в действии
IT-шная история игрушек или feature-driven тестирование в действииGleb Rybalko
 
JavaScript Design Patterns overview by Ksenia Redunova
JavaScript Design Patterns overview by Ksenia RedunovaJavaScript Design Patterns overview by Ksenia Redunova
JavaScript Design Patterns overview by Ksenia RedunovaLohika_Odessa_TechTalks
 
Алексей Рыбак (Badoo)
Алексей Рыбак (Badoo)Алексей Рыбак (Badoo)
Алексей Рыбак (Badoo)Ontico
 
Доклад Алексея Рыбака на Whalerider 2013. Эволюция разработки в Badoo.
Доклад Алексея Рыбака на Whalerider 2013. Эволюция разработки в Badoo.Доклад Алексея Рыбака на Whalerider 2013. Эволюция разработки в Badoo.
Доклад Алексея Рыбака на Whalerider 2013. Эволюция разработки в Badoo.Badoo Development
 
Разработка модуля для отладки приложений на языке ActionScript 3 в среде Visu...
Разработка модуля для отладки приложений на языке ActionScript 3 в среде Visu...Разработка модуля для отладки приложений на языке ActionScript 3 в среде Visu...
Разработка модуля для отладки приложений на языке ActionScript 3 в среде Visu...Rinat Shaikhutdinov
 
Mobile Monday Kiev#1 - How to save time in Mobile Apps Development
Mobile Monday Kiev#1 - How to save time in Mobile Apps DevelopmentMobile Monday Kiev#1 - How to save time in Mobile Apps Development
Mobile Monday Kiev#1 - How to save time in Mobile Apps DevelopmentIntersog
 

Similar to Toggle your app / Евгений Кривобоков (Авито) (20)

Toggle your app
Toggle your appToggle your app
Toggle your app
 
Jiramania презентации @augspb
Jiramania презентации   @augspbJiramania презентации   @augspb
Jiramania презентации @augspb
 
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
 
Комфортная разработка мобильных проектов
Комфортная разработка мобильных проектовКомфортная разработка мобильных проектов
Комфортная разработка мобильных проектов
 
Обзор платформы B4
Обзор платформы B4Обзор платформы B4
Обзор платформы B4
 
Архитектура в Agile: слабая связность
Архитектура в Agile: слабая связностьАрхитектура в Agile: слабая связность
Архитектура в Agile: слабая связность
 
DEV Labs 2016. Микросервисы - первая кровь
DEV Labs 2016. Микросервисы - первая кровьDEV Labs 2016. Микросервисы - первая кровь
DEV Labs 2016. Микросервисы - первая кровь
 
Масштабируемая архитектура фронтенда
Масштабируемая архитектура фронтендаМасштабируемая архитектура фронтенда
Масштабируемая архитектура фронтенда
 
Как жить в согласии с SOLID?
Как жить в согласии с SOLID?Как жить в согласии с SOLID?
Как жить в согласии с SOLID?
 
Qt tool evaluation
Qt tool evaluationQt tool evaluation
Qt tool evaluation
 
Расширяемая платформа для создания и управления автоматизированными тестами н...
Расширяемая платформа для создания и управления автоматизированными тестами н...Расширяемая платформа для создания и управления автоматизированными тестами н...
Расширяемая платформа для создания и управления автоматизированными тестами н...
 
IT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчикаIT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчика
 
IT-шная история игрушек или feature-driven тестирование в действии
IT-шная история игрушек или feature-driven тестирование в действииIT-шная история игрушек или feature-driven тестирование в действии
IT-шная история игрушек или feature-driven тестирование в действии
 
JavaScript Design Patterns overview by Ksenia Redunova
JavaScript Design Patterns overview by Ksenia RedunovaJavaScript Design Patterns overview by Ksenia Redunova
JavaScript Design Patterns overview by Ksenia Redunova
 
Алексей Рыбак (Badoo)
Алексей Рыбак (Badoo)Алексей Рыбак (Badoo)
Алексей Рыбак (Badoo)
 
Доклад Алексея Рыбака на Whalerider 2013. Эволюция разработки в Badoo.
Доклад Алексея Рыбака на Whalerider 2013. Эволюция разработки в Badoo.Доклад Алексея Рыбака на Whalerider 2013. Эволюция разработки в Badoo.
Доклад Алексея Рыбака на Whalerider 2013. Эволюция разработки в Badoo.
 
DevOps для 1С
DevOps для 1СDevOps для 1С
DevOps для 1С
 
Разработка модуля для отладки приложений на языке ActionScript 3 в среде Visu...
Разработка модуля для отладки приложений на языке ActionScript 3 в среде Visu...Разработка модуля для отладки приложений на языке ActionScript 3 в среде Visu...
Разработка модуля для отладки приложений на языке ActionScript 3 в среде Visu...
 
CI/CD with Fastlane and Telegram
CI/CD with Fastlane and TelegramCI/CD with Fastlane and Telegram
CI/CD with Fastlane and Telegram
 
Mobile Monday Kiev#1 - How to save time in Mobile Apps Development
Mobile Monday Kiev#1 - How to save time in Mobile Apps DevelopmentMobile Monday Kiev#1 - How to save time in Mobile Apps Development
Mobile Monday Kiev#1 - How to save time in Mobile Apps Development
 

More from Ontico

One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...Ontico
 
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Ontico
 
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Ontico
 
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Ontico
 
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Ontico
 
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)Ontico
 
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...Ontico
 
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Ontico
 
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)Ontico
 
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)Ontico
 
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Ontico
 
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Ontico
 
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Ontico
 
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Ontico
 
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)Ontico
 
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Ontico
 
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Ontico
 
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...Ontico
 
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Ontico
 
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Ontico
 

More from Ontico (20)

One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
 
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
 
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
 
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
 
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
 
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
 
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
 
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
 
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
 
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
 
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
 
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
 
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
 
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
 
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
 
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
 
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
 
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
 
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
 
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
 

Toggle your app / Евгений Кривобоков (Авито)