Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Как Badoo модерирует 1миллиард фотографий в год        Андрей Гоменюк
Badoo – это:•   Социальная сеть для знакомства с новыми    людьми•   В Top-200 Alexa с 2007 года•   160+ миллионов пользов...
Зачем?•   Хотим видеть только лица в поиске•   Хотим минимизировать жалобы пользователей    и запросы полиции•   Пользоват...
Как?
Какая-то железяка
Ан нет...
Немного статистики•   2 датацентра•   200+ серверов с фотографиями•   200+ серверов с пользовательскими данными•   150+ но...
Требования•   Скорость модерации: хотим не больше 1    минуты•   Качество модерации: хотим не больше 1    ошибки на 1000 ф...
Этапы•   Сортировка: присвоение каждой фотографии    категории, определяющей её содержание    (эротика, дети, разное и т.д...
Схематично
Доставка фото в модерацию
Доставка фото в модерацию•   У нас шардинг•   Хотим транзакционность•   Хотим меньше зависимостей между    компонентами
Решение•   Своя очередь сообщений на MySQL•   Каждому БД серверу - по очереди•   Все данные сливаются в несколько потоков ...
Но у нас два ДЦ•   Модерация происходит в одном ДЦ•   Очередь умеет доставлять события между ДЦ•   После обработки посылае...
Решение•   Появился быстрый канал: можем использовать    мастер-мастер репликацию•   Практически нет задержек для «америка...
Сортировка
Особенности•   Не хотим каждый раз дёргать информацию о    каждой фотографии/пользователе•   Храним все нужные данные для ...
Проблема №1•   Записей больше, чем чтений: нет смысла    кэшировать•   Записей очень много: если всё в одной таблице,    т...
Решение•   Один источник записей - одна таблица•   Нет проблем со вставками•   Нет проблем с deadlock’ами
Простой случай
Проблема №2•   Удалился пользователь/альбом/фото•   Проблемы с сетью•   Проблемы с фото-сервером
Решение: пропуски
Проблема №3•   Разом пришло очень много фотографий•   Модераторы разом перестали работать•   Изменились требования и нужно...
Решение: отложенные
Автоматическая проверка•   Подготавливаем массив «правильных»    фотографий•   Подмешиваем модераторам•   Сравниваем резул...
Ручная проверка•   Режим: доверяй, но проверяй•   На одном экране выводим 50 фотографий с    одним статусом•   Группируем ...
Ручная проверка
Интерфейс
Интерфейс•   Простота: ничего лишнего•   Подсказки от нас: лицо, пол анкеты•   Решение применяется несколькими кнопками•  ...
Применение решения
Применение решения•   После модерации нужен физический доступ к    фотографии: переместить/удалить/обрезать•   События о м...
Общая схема
Доверяй, но измеряй
Что измеряем•   Скорость доставки событий•   Скорость модерации•   Размер каждой очереди•   Стандартные показатели (Pinba)
Модераторы тоже люди•   Работают в удобное для себя время (день по    Москве)•   Делают то, за что больше платят•   Если з...
Для нас важна скорость•   Увеличенный тариф за работу в ночное время•   Очередь кадрирования автоматически    закрывается,...
Автоматическая модерация•   Сложные правила - даже люди иногда путаются•   Правила могут меняться•   Низкая скорость анали...
Знаменитости•   Пользователи любят загружать чужие фото•   Модераторы не знают всех знаменитостей...
Мы знаем, но рассказать   не можем. Пока...
Спасибо!     Вопросы?dron@corp.badoo.com
Как Badoo модерирует 1 миллиард фотографий в год (Андрей Гоменюк)
Как Badoo модерирует 1 миллиард фотографий в год (Андрей Гоменюк)
Upcoming SlideShare
Loading in …5
×

Как Badoo модерирует 1 миллиард фотографий в год (Андрей Гоменюк)

4,906 views

Published on

  • Be the first to comment

Как Badoo модерирует 1 миллиард фотографий в год (Андрей Гоменюк)

  1. 1. Как Badoo модерирует 1миллиард фотографий в год Андрей Гоменюк
  2. 2. Badoo – это:• Социальная сеть для знакомства с новыми людьми• В Top-200 Alexa с 2007 года• 160+ миллионов пользователей• 3+ миллиона новых фотографий и видео ежедневно• 40+ тысяч запросов к бэкэндам• PHP, MySQL, C(++), Linux, nginx, PHP-fpm, memcache
  3. 3. Зачем?• Хотим видеть только лица в поиске• Хотим минимизировать жалобы пользователей и запросы полиции• Пользователи стесняются загружать свои фотографии
  4. 4. Как?
  5. 5. Какая-то железяка
  6. 6. Ан нет...
  7. 7. Немного статистики• 2 датацентра• 200+ серверов с фотографиями• 200+ серверов с пользовательскими данными• 150+ новых фотографий в пике в секунду, 3+ миллиона в сутки• 120+ модераторов онлайн в пике• Время модерации фотографии: 1-2 минуты
  8. 8. Требования• Скорость модерации: хотим не больше 1 минуты• Качество модерации: хотим не больше 1 ошибки на 1000 фотографий (99.9%)• Стоимость модерации: не хотим делать лишнюю работу
  9. 9. Этапы• Сортировка: присвоение каждой фотографии категории, определяющей её содержание (эротика, дети, разное и т.д.) – для всех фотографий• Кадрирование: выделение лица на фотографии – только для фотографий, показываемых в поиске• Проверка качества: автоматическая + ручная
  10. 10. Схематично
  11. 11. Доставка фото в модерацию
  12. 12. Доставка фото в модерацию• У нас шардинг• Хотим транзакционность• Хотим меньше зависимостей между компонентами
  13. 13. Решение• Своя очередь сообщений на MySQL• Каждому БД серверу - по очереди• Все данные сливаются в несколько потоков на центральную БД на локальном ДЦ• Не нарушается целостность данных
  14. 14. Но у нас два ДЦ• Модерация происходит в одном ДЦ• Очередь умеет доставлять события между ДЦ• После обработки посылаем событие обратно• Минус: «американские» фотографии доходят медленнее
  15. 15. Решение• Появился быстрый канал: можем использовать мастер-мастер репликацию• Практически нет задержек для «американских» фотографий• Есть нюансы с запросами• Время на доставку события: 20с
  16. 16. Сортировка
  17. 17. Особенности• Не хотим каждый раз дёргать информацию о каждой фотографии/пользователе• Храним все нужные данные для отображения фото локально (в модерации)• Подписаны на 10+ различных событий об удалении пользователя/альбома/фото, перемещении, смены приватности и т.д.
  18. 18. Проблема №1• Записей больше, чем чтений: нет смысла кэшировать• Записей очень много: если всё в одной таблице, то начинаются тормоза при вставках, обновлениях, удалениях• Много индексов для разных случаев: приоритеты, даты, модераторы, типы, статусы и т.д.
  19. 19. Решение• Один источник записей - одна таблица• Нет проблем со вставками• Нет проблем с deadlock’ами
  20. 20. Простой случай
  21. 21. Проблема №2• Удалился пользователь/альбом/фото• Проблемы с сетью• Проблемы с фото-сервером
  22. 22. Решение: пропуски
  23. 23. Проблема №3• Разом пришло очень много фотографий• Модераторы разом перестали работать• Изменились требования и нужно перепроверить старые фото
  24. 24. Решение: отложенные
  25. 25. Автоматическая проверка• Подготавливаем массив «правильных» фотографий• Подмешиваем модераторам• Сравниваем результат• Быстро находим «читеров»• Но это не позволяет держать общее качество на высоте
  26. 26. Ручная проверка• Режим: доверяй, но проверяй• На одном экране выводим 50 фотографий с одним статусом• Группируем фотографии по полу• Одним нажатием фотография отправляется на повторную модерацию• Один модератор проверяет до 10000 фотографий в час
  27. 27. Ручная проверка
  28. 28. Интерфейс
  29. 29. Интерфейс• Простота: ничего лишнего• Подсказки от нас: лицо, пол анкеты• Решение применяется несколькими кнопками• Дополнительная статистика (скорость канала, тайминги загрузок и принятия решения, автоматический пропуск фотографий, которые не смогли загрузить)• Чтобы не создавать лишнюю нагрузку на сервер, отправляем результаты пачками, но не слишком большими
  30. 30. Применение решения
  31. 31. Применение решения• После модерации нужен физический доступ к фотографии: переместить/удалить/обрезать• События о модерации должен обрабатывать тот фото-сервер, где находится фотография• После получения события о модерации, перекладываем его в отдельную очередь на применение (с данными о фото-сервере)• Время на применение решения: 30с
  32. 32. Общая схема
  33. 33. Доверяй, но измеряй
  34. 34. Что измеряем• Скорость доставки событий• Скорость модерации• Размер каждой очереди• Стандартные показатели (Pinba)
  35. 35. Модераторы тоже люди• Работают в удобное для себя время (день по Москве)• Делают то, за что больше платят• Если записей мало - ждут, пока накопится и проверяют пачкой
  36. 36. Для нас важна скорость• Увеличенный тариф за работу в ночное время• Очередь кадрирования автоматически закрывается, если много фото в сортировке• Если модератор не проявляет активности - отключаем его• Повышенный приоритет для «важных» фото - достаются самым активным• Средняя скорость принятия решения - 10с для приоритетных фото, 30 секунд для обычных
  37. 37. Автоматическая модерация• Сложные правила - даже люди иногда путаются• Правила могут меняться• Низкая скорость анализа• В любом случае нужна ручная перепроверка
  38. 38. Знаменитости• Пользователи любят загружать чужие фото• Модераторы не знают всех знаменитостей...
  39. 39. Мы знаем, но рассказать не можем. Пока...
  40. 40. Спасибо! Вопросы?dron@corp.badoo.com

×