Архитектура А/Б тестирования: сделай сам
DESCRIPTION
Badoo — это большая социальная сеть с более чем 180 млн. пользователей. Большинство новых фич в нашей компании мы предварительно оцениваем посредством A/B тестирования. Вот уже примерно год мы используем собственный высоконагруженный фреймворк тестирования, при этом по моему мнению он очень прост, понятен, и не требует огромных ресурсов на разработку и поддержку. В докладе я расскажу вам о том, почему мы пришли к собственному решению, его архитектуру и принципы работы. Я уверен, каждый из вас может сделать что-то подобное для своего проекта и начать принимать более обоснованные решения. Тезисы: * Как мы раньше тестировали * Почему мы сделали свой инструмент * Архитектура: API, граф. интерфейсы, транспорт, скрипты, БД * Структура теста * Основные правила А/Б тестирования * Оценка результатов, примеры отчетов * И заключительная часть про то, что от человека с головой полностью не избавиться Для кого доклад: Для разработчиков и техн. менеджеров соц. сетей, сайтов объявлений, блогов с рассылками, проектов, продающих что-то через e-mail расслыки, разных коммьюнити-сайтов, банков и вообще проектов, где взаимодействие с каждым клиентом долгосрочное. Сложность: Несмотря на то, что конференция называется Highload++, я уверяю, что представленную здесь архитектуру может потянуть проект с посещаемостью в 1000 чел в день и тремя программистами в штате. Закодить все, что здесь рассказано на PHP займет меньше недели одного человека. А результат, между прочим, пожно вполне изменрять в живой прибыли.TRANSCRIPT
![Page 1: Архитектура А/Б тестирования: сделай сам](https://reader035.vdocuments.mx/reader035/viewer/2022062510/548c9cf4b4795961318b469e/html5/thumbnails/1.jpg)
Архитектура А/Б тестирования: сделаи5 самСергеи5 Аверин
Badoo
![Page 2: Архитектура А/Б тестирования: сделай сам](https://reader035.vdocuments.mx/reader035/viewer/2022062510/548c9cf4b4795961318b469e/html5/thumbnails/2.jpg)
• Социальная сеть для знакомств • 195 миллионов зарегистрированных пользователей • 10 миллионов пользователей в день • 2000+ серверов • 50 тыс. динамических запросов/сек • Разработка в Москве и Лондоне • MySQL, PHP, C/C++, Linux, nginx, memcached • Много своего, в т. ч. PINBA, PHP-‐FPM, патчи PHP, PHPUnit, MySQL
![Page 3: Архитектура А/Б тестирования: сделай сам](https://reader035.vdocuments.mx/reader035/viewer/2022062510/548c9cf4b4795961318b469e/html5/thumbnails/3.jpg)
Для кого доклад?
Для сайтов, где • пользователи идентифицированы • есть возможность долгосрочно отслеживать пользователя • пользователи нужны надолго, и заходят на сайт периодически • нужны более сложные методики оценки успеха,чем единоразовая покупка/регистрация/заказ/звонок
![Page 4: Архитектура А/Б тестирования: сделай сам](https://reader035.vdocuments.mx/reader035/viewer/2022062510/548c9cf4b4795961318b469e/html5/thumbnails/4.jpg)
Сложность
• Выше среднего, но ничего космического тут нет • Я уверен, что вы можете сделать то же самое за 3 неделисилами 2—3 разработчиков • Для небольших сайтов архитектура будет сильно похожа • Результат можно измерять в реальной прибыли
![Page 5: Архитектура А/Б тестирования: сделай сам](https://reader035.vdocuments.mx/reader035/viewer/2022062510/548c9cf4b4795961318b469e/html5/thumbnails/5.jpg)
Зачем нам понадобились A/B тесты
Раньше мы запускали фичу в маленькой стране и сравнивали показатели с цифрами до запуска или в соседних странах Но… мы растем: • Для всех идей стран не хватит • Нужно выбрать из нескольких похожих вариантов • Хочется более достоверной методики оценки • В самом худшем случае урон невелик
![Page 6: Архитектура А/Б тестирования: сделай сам](https://reader035.vdocuments.mx/reader035/viewer/2022062510/548c9cf4b4795961318b469e/html5/thumbnails/6.jpg)
Почему мы сделали свое
![Page 7: Архитектура А/Б тестирования: сделай сам](https://reader035.vdocuments.mx/reader035/viewer/2022062510/548c9cf4b4795961318b469e/html5/thumbnails/7.jpg)
Мы пробовали чужое
• Смотрели несколько сторонних продуктов • Выбрали и использовали Optimizely…
![Page 8: Архитектура А/Б тестирования: сделай сам](https://reader035.vdocuments.mx/reader035/viewer/2022062510/548c9cf4b4795961318b469e/html5/thumbnails/8.jpg)
![Page 9: Архитектура А/Б тестирования: сделай сам](https://reader035.vdocuments.mx/reader035/viewer/2022062510/548c9cf4b4795961318b469e/html5/thumbnails/9.jpg)
![Page 10: Архитектура А/Б тестирования: сделай сам](https://reader035.vdocuments.mx/reader035/viewer/2022062510/548c9cf4b4795961318b469e/html5/thumbnails/10.jpg)
Проблемы Optimizely и подобных систем
• jQuery • Внешний CDN • JS-‐совместимость с нашим кодом • «Прыгающие» страницы • Нет локализации, поддержки разных языков • Выбор пользователей по языку, полу — все сам, в PHP-‐коде • Ограниченное применение — нет API, только JS-‐код
![Page 11: Архитектура А/Б тестирования: сделай сам](https://reader035.vdocuments.mx/reader035/viewer/2022062510/548c9cf4b4795961318b469e/html5/thumbnails/11.jpg)
Но главное — не это
![Page 12: Архитектура А/Б тестирования: сделай сам](https://reader035.vdocuments.mx/reader035/viewer/2022062510/548c9cf4b4795961318b469e/html5/thumbnails/12.jpg)
А то, что анализируем только клики
Большинство докладов про А/Б тестирование — из мираe-‐commerce: • анализируем посещаемость трех страниц — главной, каталога товаров, страницы товара • анализируем воронку продаж (где пользователь уходит) • улучшаем продажи (клики по кнопке «заказать») • Купил? Следующий!
![Page 13: Архитектура А/Б тестирования: сделай сам](https://reader035.vdocuments.mx/reader035/viewer/2022062510/548c9cf4b4795961318b469e/html5/thumbnails/13.jpg)
Мы — не интернет магазин
• Анализируем поведение — частота заходов, время на сайте, кол-‐во чатов, заливка фото… • Нужна статистика по большему количеству параметров • И за больший срок, чем от момента захода на сайт до клика по цели • Продажи — не самое важное
![Page 14: Архитектура А/Б тестирования: сделай сам](https://reader035.vdocuments.mx/reader035/viewer/2022062510/548c9cf4b4795961318b469e/html5/thumbnails/14.jpg)
Чем свое лучше и хуже
Плюсы • Большая применимость • Большие нагрузки • Никакого JS с внешнего CDN • Весь ваш функционал локализации/переменных доступен !!
Минусы • Надо кодить • Нагрузка теперь наша • Статистику считать самим • Сделать свой WYSIWYG-‐интерфейс редактирования сложно (но и не нужно)
![Page 15: Архитектура А/Б тестирования: сделай сам](https://reader035.vdocuments.mx/reader035/viewer/2022062510/548c9cf4b4795961318b469e/html5/thumbnails/15.jpg)
Как у нас устроены тесты
![Page 16: Архитектура А/Б тестирования: сделай сам](https://reader035.vdocuments.mx/reader035/viewer/2022062510/548c9cf4b4795961318b469e/html5/thumbnails/16.jpg)
Письмо с плохим кликрейтом
![Page 17: Архитектура А/Б тестирования: сделай сам](https://reader035.vdocuments.mx/reader035/viewer/2022062510/548c9cf4b4795961318b469e/html5/thumbnails/17.jpg)
Вариант для всех
![Page 18: Архитектура А/Б тестирования: сделай сам](https://reader035.vdocuments.mx/reader035/viewer/2022062510/548c9cf4b4795961318b469e/html5/thumbnails/18.jpg)
Вариант для мальчиков
![Page 19: Архитектура А/Б тестирования: сделай сам](https://reader035.vdocuments.mx/reader035/viewer/2022062510/548c9cf4b4795961318b469e/html5/thumbnails/19.jpg)
Вариант для девочек
![Page 20: Архитектура А/Б тестирования: сделай сам](https://reader035.vdocuments.mx/reader035/viewer/2022062510/548c9cf4b4795961318b469e/html5/thumbnails/20.jpg)
Структура теста
Тест
Группа
Вариант Контрольный вариант Вариант
...
...
Группа
Вариант Контрольный вариант Вариант ...
Одно исследование с определенными срокамиНабор критериев,
описывающих аудиторию с одинаковым поведением (группы не пересекаются)
Измененный вариант шаблона/поведенияИсходный вариант шаблона/поведения
![Page 21: Архитектура А/Б тестирования: сделай сам](https://reader035.vdocuments.mx/reader035/viewer/2022062510/548c9cf4b4795961318b469e/html5/thumbnails/21.jpg)
Структура теста
Тест
Мальчики
Красная кнопка
Контрольный вариант
Зеленый заголовок
Девочки
Красная кнопка
Контрольный вариант Котики
![Page 22: Архитектура А/Б тестирования: сделай сам](https://reader035.vdocuments.mx/reader035/viewer/2022062510/548c9cf4b4795961318b469e/html5/thumbnails/22.jpg)
РезультатыГруппа Вариант Отправлено Кликов Кликрейт
Мальчики
Контрольный 2000 100 5 %
Красная кнопка 2000 110 5,5 % (+0,5 %)
Зеленый заголовок 2000 130 6,5 % (+1,5 %)
Девочки
Контрольный 1000 35 3,5 %
Красная кнопка 1000 30 3 % (−0,5 %)
Котики 1000 50 5 % (+1,5 %)
![Page 23: Архитектура А/Б тестирования: сделай сам](https://reader035.vdocuments.mx/reader035/viewer/2022062510/548c9cf4b4795961318b469e/html5/thumbnails/23.jpg)
С высоты птичьего полета
![Page 24: Архитектура А/Б тестирования: сделай сам](https://reader035.vdocuments.mx/reader035/viewer/2022062510/548c9cf4b4795961318b469e/html5/thumbnails/24.jpg)
Хотелось, что бы это работало так:
1) Заходим на страницу, выбираем на ней текст, создаем несколько версий текста. Или выбираем где-‐то в бекофисе константу,создаем тест с несколькими значениями этой константы.
![Page 25: Архитектура А/Б тестирования: сделай сам](https://reader035.vdocuments.mx/reader035/viewer/2022062510/548c9cf4b4795961318b469e/html5/thumbnails/25.jpg)
Хотелось, что бы это работало так:
1) Заходим на страницу, выбираем на ней текст, создаем несколько версий текста. Или выбираем где-‐то в бекофисе константу,создаем тест с несколькими значениями этой константы.
1) Подготавливаем несколько шаблонов/css-‐файлов/значений 2) Настраиваем параметры теста в бекофисе 3) Вписываем в код выбор шаблона и привязку его к пользователю 4) Выбираем метрику, по которой мы будем оценивать результат 5) Прогоняем тест, собирая эту метрику и кто какой шаблон видел 6) Берем кого-‐то умного и анализируем результаты
![Page 26: Архитектура А/Б тестирования: сделай сам](https://reader035.vdocuments.mx/reader035/viewer/2022062510/548c9cf4b4795961318b469e/html5/thumbnails/26.jpg)
А теперь архитектура
![Page 27: Архитектура А/Б тестирования: сделай сам](https://reader035.vdocuments.mx/reader035/viewer/2022062510/548c9cf4b4795961318b469e/html5/thumbnails/27.jpg)
А теперь архитектураСделаем сначала систему сбора статистики
![Page 28: Архитектура А/Б тестирования: сделай сам](https://reader035.vdocuments.mx/reader035/viewer/2022062510/548c9cf4b4795961318b469e/html5/thumbnails/28.jpg)
API Scribe-транспорт Разборщик статистики
База данных
![Page 29: Архитектура А/Б тестирования: сделай сам](https://reader035.vdocuments.mx/reader035/viewer/2022062510/548c9cf4b4795961318b469e/html5/thumbnails/29.jpg)
API
Функция посылки событий • просто пакует данные+текущую дату, и передает в транспорт !
Stats::sendEvent($event_type, $user_id)Stats::sendEvent($event_type, $user_id, $param)
тип события, строка значение, например, «проголосовал за» — 1 «проголосовал против» — 0
![Page 30: Архитектура А/Б тестирования: сделай сам](https://reader035.vdocuments.mx/reader035/viewer/2022062510/548c9cf4b4795961318b469e/html5/thumbnails/30.jpg)
Scribe-‐транспорт
не теряем данныефайлы с данными, новый файл каждые 2 минуты, каждое событие в отдельной папке
PHP-бекенды
Scribe-коллектор
100 000 000+ записей в день
![Page 31: Архитектура А/Б тестирования: сделай сам](https://reader035.vdocuments.mx/reader035/viewer/2022062510/548c9cf4b4795961318b469e/html5/thumbnails/31.jpg)
![Page 32: Архитектура А/Б тестирования: сделай сам](https://reader035.vdocuments.mx/reader035/viewer/2022062510/548c9cf4b4795961318b469e/html5/thumbnails/32.jpg)
![Page 33: Архитектура А/Б тестирования: сделай сам](https://reader035.vdocuments.mx/reader035/viewer/2022062510/548c9cf4b4795961318b469e/html5/thumbnails/33.jpg)
![Page 34: Архитектура А/Б тестирования: сделай сам](https://reader035.vdocuments.mx/reader035/viewer/2022062510/548c9cf4b4795961318b469e/html5/thumbnails/34.jpg)
Скрипт-‐процессор статистики
• Разбирает эти файлы, и кладет в БД • Мультипоточный разбор с блокировками файлов (в PHP — flock()) • События каждого типа — в отдельные таблицы • По одной таблице на день • Выкидываем повторные события там, где это можно • Там, где нельзя — делаем BULK INSERT’ы • Для некоторых — агрегируем в памяти/файлах и пишем результат
![Page 35: Архитектура А/Б тестирования: сделай сам](https://reader035.vdocuments.mx/reader035/viewer/2022062510/548c9cf4b4795961318b469e/html5/thumbnails/35.jpg)
Скрипт-‐процессор статистики
![Page 36: Архитектура А/Б тестирования: сделай сам](https://reader035.vdocuments.mx/reader035/viewer/2022062510/548c9cf4b4795961318b469e/html5/thumbnails/36.jpg)
БД
• Подойдет обычная SQL-‐СУБД, например, MySQL или Postgres • Желательно отдельный сервер, с большим кол-‐вом ядер • Для MySQL лучше использовать XtraDB
![Page 37: Архитектура А/Б тестирования: сделай сам](https://reader035.vdocuments.mx/reader035/viewer/2022062510/548c9cf4b4795961318b469e/html5/thumbnails/37.jpg)
API Scribe-транспорт Разборщик статистики
База данных
![Page 38: Архитектура А/Б тестирования: сделай сам](https://reader035.vdocuments.mx/reader035/viewer/2022062510/548c9cf4b4795961318b469e/html5/thumbnails/38.jpg)
Дополним схему до архитектуры А/Б тестирования
![Page 39: Архитектура А/Б тестирования: сделай сам](https://reader035.vdocuments.mx/reader035/viewer/2022062510/548c9cf4b4795961318b469e/html5/thumbnails/39.jpg)
API статистики
Scribe-транспорт Разборщик статистики
БД статистики
![Page 40: Архитектура А/Б тестирования: сделай сам](https://reader035.vdocuments.mx/reader035/viewer/2022062510/548c9cf4b4795961318b469e/html5/thumbnails/40.jpg)
API статистики
Scribe-транспорт Разборщик статистики
БД статистики
БД тестов
![Page 41: Архитектура А/Б тестирования: сделай сам](https://reader035.vdocuments.mx/reader035/viewer/2022062510/548c9cf4b4795961318b469e/html5/thumbnails/41.jpg)
БД тестов
Тест
Группа
Вариант Контрольный вариант Вариант
...
...
Группа
Вариант Контрольный вариант Вариант ...
• id (сквозная нумерация) • имя • даты начала-‐конца • статус
• id (сквозная нумерация) • имя • критерии выбора пользователей(пол, страна, язык…)
• id (сквозная нумерация) • имя • значение переменной/имя шаблона
![Page 42: Архитектура А/Б тестирования: сделай сам](https://reader035.vdocuments.mx/reader035/viewer/2022062510/548c9cf4b4795961318b469e/html5/thumbnails/42.jpg)
API статистики
Scribe-транспорт Разборщик статистики
БД статистики
БД тестов Бекофис-интерфейс
![Page 43: Архитектура А/Б тестирования: сделай сам](https://reader035.vdocuments.mx/reader035/viewer/2022062510/548c9cf4b4795961318b469e/html5/thumbnails/43.jpg)
Бекофис-‐интерфейс
Создание/редактирование тестов • проверяет непересекаемость групп • требует указать дату начала/конца
Управление тестами Дебаг: • покажи мне как выглядит вариант X? • какой вариант был для юзера Z? • попадет ли в тест юзер Y?
![Page 44: Архитектура А/Б тестирования: сделай сам](https://reader035.vdocuments.mx/reader035/viewer/2022062510/548c9cf4b4795961318b469e/html5/thumbnails/44.jpg)
![Page 45: Архитектура А/Б тестирования: сделай сам](https://reader035.vdocuments.mx/reader035/viewer/2022062510/548c9cf4b4795961318b469e/html5/thumbnails/45.jpg)
![Page 46: Архитектура А/Б тестирования: сделай сам](https://reader035.vdocuments.mx/reader035/viewer/2022062510/548c9cf4b4795961318b469e/html5/thumbnails/46.jpg)
![Page 47: Архитектура А/Б тестирования: сделай сам](https://reader035.vdocuments.mx/reader035/viewer/2022062510/548c9cf4b4795961318b469e/html5/thumbnails/47.jpg)
![Page 48: Архитектура А/Б тестирования: сделай сам](https://reader035.vdocuments.mx/reader035/viewer/2022062510/548c9cf4b4795961318b469e/html5/thumbnails/48.jpg)
API статистики
Scribe-транспорт Разборщик статистики
БД статистики
БД тестов Бекофис-интерфейс
API тестов
![Page 49: Архитектура А/Б тестирования: сделай сам](https://reader035.vdocuments.mx/reader035/viewer/2022062510/548c9cf4b4795961318b469e/html5/thumbnails/49.jpg)
API статистики
Scribe-транспорт Разборщик статистики
БД статистики
БД тестовMemcached Бекофис-интерфейс
API тестов
![Page 50: Архитектура А/Б тестирования: сделай сам](https://reader035.vdocuments.mx/reader035/viewer/2022062510/548c9cf4b4795961318b469e/html5/thumbnails/50.jpg)
API статистики
Scribe-транспорт Разборщик статистики
БД статистики
БД тестовMemcached Бекофис-интерфейс
API тестов
![Page 51: Архитектура А/Б тестирования: сделай сам](https://reader035.vdocuments.mx/reader035/viewer/2022062510/548c9cf4b4795961318b469e/html5/thumbnails/51.jpg)
API тестов
ABTests::hit($User, $page)
• Выбирает тест/группу/вариант для пользователя и страницы,где он находится (если есть подходящие) • Отправляет эти данные в статистику как факт просмотра определенного варианта • Возвращает либо null (не в тесте), либо заданное в варианте значение — имя шаблона/тип поведения/значение переменной • У нас доходит до 3 млн вызовов в день, где возвращается не null
![Page 52: Архитектура А/Б тестирования: сделай сам](https://reader035.vdocuments.mx/reader035/viewer/2022062510/548c9cf4b4795961318b469e/html5/thumbnails/52.jpg)
API тестов
Тест
Группа
Вариант Контрольный вариант Вариант
...
...
Группа
Вариант Контрольный вариант Вариант ...
Равномерное распределение
Пользователь может попасть только в одну группу,
т. к. они не пересекаются
сравнивать результаты можно только с пользователями той же группы, а не со всеми остальными
Выбирает пользователю тест
![Page 53: Архитектура А/Б тестирования: сделай сам](https://reader035.vdocuments.mx/reader035/viewer/2022062510/548c9cf4b4795961318b469e/html5/thumbnails/53.jpg)
API тестов: выбираем тест
!!Тестировать надо так, чтобы не было взаимовлияния тестов • $test_id = $user_id % $num_running_tests — плохо
При изменении кол-‐ва запущенных тестов пользователи должны как можно меньше перемещаться между тестами • consistent hashing • заранее сделать несколько наборов пользователей • выбирать и помечать тех, кто еще ни в каком тесте
Тест Тест ...
![Page 54: Архитектура А/Б тестирования: сделай сам](https://reader035.vdocuments.mx/reader035/viewer/2022062510/548c9cf4b4795961318b469e/html5/thumbnails/54.jpg)
API тестов: выбираем вариант
!!• по остатку от деления $user_id % $num_variants — не хорошо • по crc32($user_id) % $num_variants — вполне хорошее
Вариант Контрольный вариант Вариант ...
![Page 55: Архитектура А/Б тестирования: сделай сам](https://reader035.vdocuments.mx/reader035/viewer/2022062510/548c9cf4b4795961318b469e/html5/thumbnails/55.jpg)
Скрипт-‐процессор статистики
• Дорабатываем скрипт для создания таблицы фактов участия в тесте в БД статистики • Можно сделать подсчет хитов
![Page 56: Архитектура А/Б тестирования: сделай сам](https://reader035.vdocuments.mx/reader035/viewer/2022062510/548c9cf4b4795961318b469e/html5/thumbnails/56.jpg)
API статистики
Scribe-транспорт Разборщик статистики
БД статистики
БД тестовMemcached Бекофис-интерфейс
API тестов
![Page 57: Архитектура А/Б тестирования: сделай сам](https://reader035.vdocuments.mx/reader035/viewer/2022062510/548c9cf4b4795961318b469e/html5/thumbnails/57.jpg)
Делаете скрипт копирования тестов в базу со статистикой
API статистики
Scribe-транспорт Разборщик статистики
БД статистики
БД тестовMemcached Бекофис-интерфейс
API тестов
![Page 58: Архитектура А/Б тестирования: сделай сам](https://reader035.vdocuments.mx/reader035/viewer/2022062510/548c9cf4b4795961318b469e/html5/thumbnails/58.jpg)
API статистики
Scribe-транспорт Разборщик статистики
БД статистики
БД тестовMemcached Бекофис-интерфейс
API тестов
Интерфейс анализа
![Page 59: Архитектура А/Б тестирования: сделай сам](https://reader035.vdocuments.mx/reader035/viewer/2022062510/548c9cf4b4795961318b469e/html5/thumbnails/59.jpg)
Интерфейс для аналитика
• Программа-‐клиент для MySQL • JOIN статистики с таблицей фактов WHERE test_id = 2 GROUP BY variant_id
• Скрипт-‐генератор отчетов • Бекофис-‐страница с графиками • Система бизнес-‐аналитики • …
![Page 60: Архитектура А/Б тестирования: сделай сам](https://reader035.vdocuments.mx/reader035/viewer/2022062510/548c9cf4b4795961318b469e/html5/thumbnails/60.jpg)
Как это работает
![Page 61: Архитектура А/Б тестирования: сделай сам](https://reader035.vdocuments.mx/reader035/viewer/2022062510/548c9cf4b4795961318b469e/html5/thumbnails/61.jpg)
Как это работает
• Распихиваете по коду сбор статистики • В коде обработки запроса: • дергаете функцию выбора варианта • null и контрольный вариант — показываете то же, что и обычно • другое — показываете новый шаблон/вариант поведения
• Настраиваете тест в интерфейсе, прогоняем тест • В БД получаем таблицы со статистикой, фактами просмотра пользователями вариантов и таблицы с описаниями тестов • Анализируем результаты
![Page 62: Архитектура А/Б тестирования: сделай сам](https://reader035.vdocuments.mx/reader035/viewer/2022062510/548c9cf4b4795961318b469e/html5/thumbnails/62.jpg)
Оценка результатов
• Условия теста не должны меняться от начала до конца • Проверяйте достоверность результатов (G-‐test confidence) • Переводы часто портят результаты — делайте группы по языкам • Проверяйте гомогенность групп по 2—3 параметрам • Иногда для разных аудиторий побеждают разные варианты — не стесняйтесь слать мальчикам одни письма, а девочкам другие (только без фанатизма) • Идея смотреть только кликрейт — так себе, выбирайте несколько параметров
![Page 63: Архитектура А/Б тестирования: сделай сам](https://reader035.vdocuments.mx/reader035/viewer/2022062510/548c9cf4b4795961318b469e/html5/thumbnails/63.jpg)
@ryba_xek
ryba.xek
Много интересного: http://habrahabr.ru/company/badoo/blog/
Слайды, mind map, предыдущие доклады:
http://averin.ru/slides/[email protected]
Спасибо! Вопросы?