82
Как мы заставили Druid работать в Одноклассниках Юрий Невиницин

Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)

  • Upload
    ontico

  • View
    130

  • Download
    5

Embed Size (px)

Citation preview

Page 1: Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)

Как мы заставили Druid

работать в Одноклассниках

Юрий Невиницин

Page 2: Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)

ЗАЧЕМ?

Статистика

Менеджеры

Разработчики

Администраторы

• Цели

• Аномалии

• Мониторинг

• Эксперименты

• Запуски

• Без неё никак

Page 3: Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Page 4: Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Page 5: Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Page 6: Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Page 7: Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)

Немного цифр

• 350 таблиц

• 50TB

• 12 млрд событий в сутки

• Отставание на полчаса

• 6 секунд

• Цена в миллионы долларов

Page 8: Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)

Постановка задачи

Page 9: Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)

Постановка задачи

• Быстро

• 24x7x365 ( -1 ЦОД )

• Масштабируемо

• Open-source (Java)

Page 10: Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)

Druid

• Быстро

• 24x7x365 ( -1 ЦОД )

• Масштабируемо

• Open-source (Java)

• Предагрегация

• Timeseries, TopN, GroupBy

Page 11: Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)

Альтернативы

• PostgreSQL

• Influx

• Prometheus

• OpenTSDB

• ClickHouse

Page 12: Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)

• Все довольны

• Сэкономили миллионы долларов

• 1 человек

Druid

Page 13: Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)

Событий/сек

Кластер 500 000

Нода 50 000

Таблица 10 000

Druid

Page 14: Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)

Событий/сек

Кластер 500 000 2 300 000

Нода 50 000 275 000

Таблица 10 000 90 000

Druid

MAX

Page 15: Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)

Внешние компоненты

• Storage (Amazon, HDFS, local)

• Metadata DB (MySQL, Postgres, Derby)

• ZooKeeper

• Cache (memcache, local)

Page 16: Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)

Собственные компоненты

• Realtime

• Historical

• Broker

• Coordinator

• Indexing service

Page 17: Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)

DATA

Realtime Segment

StorageMeta

Coordinator Historical

Page 18: Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)

Historical

QUERY

Broker

subquery1 subquery2 subquery3 subquery4

Historical HistoricalRealtime

Page 19: Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)

Отказ MySQL

• Данные копятся в Realtime-нодах

• Пока не кончатся ресурсы

= предсказуемый запас времени

Page 20: Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)

Отказ MySQL

Storage, Coordinator

• Данные копятся в Realtime-нодах

• Пока не кончатся ресурсы

= предсказуемый запас времени

• Cassandra-based DB

• Свежие данные всегда доступны

Page 21: Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)

Отказ ZooKeeper

• Маленький таймаут

• Много данных

• Лавина трафика

• «Нет данных»

Что делать?

Page 22: Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)

Отказ ZooKeeper

• Удалить данные ZK

• Иметь запас памяти в ZK

• Корректно завершать Historical

• Стартовать Historical с паузой

• Убрать ненужные чтения

• Убрать ненужные данные

Что делать?

Page 23: Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)

Загрузка данных

Page 24: Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)

Realtime

• sssMMAP MMAP

Page 25: Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)

Искажение данных

PersistedData

SourcePosition

Загрузка в Realtime

PersistedData

SourcePosition

Потеря

Дубль

Page 26: Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)

Деградация чтения

Загрузка данных

Page 27: Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)

Time Calls Host

10:45 123 web1

10:45 132 web2

10:45 345 api1

10:45 354 api2

10:50 120 web1

10:50 128 web2

10:50 342 api1

10:50 333 api2

Page 28: Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)

Time Calls Host

10:45 123 web1

10:45 132 web2

10:45 345 api1

10:45 354 api2

10:50 120 web1

10:50 128 web2

10:50 342 api1

10:50 333 api2

long[] long[]api1 api2 web1 web2

Page 29: Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)

Time Calls Host

10:45 123 2

10:45 132 3

10:45 345 0

10:45 354 1

10:50 120 2

10:50 128 3

10:50 342 0

10:50 333 1

long[] long[]api1 api2 web1 web2

int[]

Page 30: Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)

Time Calls Host

10:45 123 2

10:45 132 3

10:45 345 0

10:45 354 1

10:50 120 2

10:50 128 3

10:50 342 0

10:50 333 1

long[] long[]api1 api2 web1 web2

0 0 1 0

0 0 0 1

1 0 0 0

0 1 0 0

0 0 1 0

0 0 0 1

1 0 0 0

0 1 0 0

int[]

Page 31: Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)

Time Calls Host

10:45 123 2

10:45 132 3

10:45 345 0

10:45 354 1

10:50 120 2

10:50 128 3

10:50 342 0

10:50 333 1

long[] long[]api1 api2 web1 web2

0 0 1 0

0 0 0 1

1 0 0 0

0 1 0 0

0 0 1 0

0 0 0 1

1 0 0 0

0 1 0 0

int[]

Page 32: Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)

Time Calls Host

10:45 123 2

10:45 132 3

10:45 345 0

10:45 354 1

10:50 120 2

10:50 128 3

10:50 342 0

10:50 333 1

long[] long[]api1 api2 web1 web2

0 0 1 0

0 0 0 1

1 0 0 0

0 1 0 0

0 0 1 0

0 0 0 1

1 0 0 0

0 1 0 0

int[]

Page 33: Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)

Time Calls Host

10:45 123 2

10:45 132 3

10:45 345 0

10:45 354 1

10:50 120 2

10:50 128 3

10:50 342 0

10:50 333 1

long[] long[]api1 api2 web1 web2

0 0 1 0

0 0 0 1

1 0 0 0

0 1 0 0

0 0 1 0

0 0 0 1

1 0 0 0

0 1 0 0

int[]

Page 34: Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)

Time Calls Host

10:45 123 2

10:45 132 3

10:45 345 0

10:45 354 1

10:50 120 2

10:50 128 3

10:50 342 0

10:50 333 1

long[] long[]api1 api2 web1 web2

0 0 1 0

0 0 0 1

1 0 0 0

0 1 0 0

0 0 1 0

0 0 0 1

1 0 0 0

0 1 0 0

int[]

Page 35: Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)

Time Calls Host

10:45 123 2

10:45 132 3

10:45 345 0

10:45 354 1

10:50 120 2

10:50 128 3

10:50 342 0

10:50 333 1

long[] long[]api1 api2 web1 web2

0 0 1 0

0 0 0 1

1 0 0 0

0 1 0 0

0 0 1 0

0 0 0 1

1 0 0 0

0 1 0 0

int[]

1

1

0

0

1

1

0

0

Page 36: Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)

Time Calls Host

10:45 123 2

10:45 132 3

10:45 345 0

10:45 354 1

10:50 120 2

10:50 128 3

10:50 342 0

10:50 333 1

long[] long[]api1 api2 web1 web2

0 0 1 0

0 0 0 1

1 0 0 0

0 1 0 0

0 0 1 0

0 0 0 1

1 0 0 0

0 1 0 0

int[]

1

1

0

0

1

1

0

0

Page 37: Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)

Time Calls Host

10:45 123 2

10:45 132 3

10:45 345 0

10:45 354 1

10:50 120 2

10:50 128 3

10:50 342 0

10:50 333 1

long[] long[]

api1 api2 web1 web2

0 0 1 0

0 0 0 1

1 0 0 0

0 1 0 0

0 0 1 0

0 0 0 1

1 0 0 0

0 1 0 0

int[]

SUM(calls) host = web%, mob%, music%, video%

Page 38: Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)

Time Calls Host

10:45 123 2

10:45 132 3

10:45 345 0

10:45 354 1

10:50 120 2

10:50 128 3

10:50 342 0

10:50 333 1

long[] long[]

api1 api2 web1 web2

0 0 1 0

0 0 0 1

1 0 0 0

0 1 0 0

0 0 1 0

0 0 0 1

1 0 0 0

0 1 0 0

int[]

SUM(calls) host = web%, mob%, music%, video%

Page 39: Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)

Time Calls Host

10:45 123 2

10:45 132 3

10:45 345 0

10:45 354 1

10:50 120 2

10:50 128 3

10:50 342 0

10:50 333 1

long[] long[]

api1 api2 web1 web2

0 0 1 0

0 0 0 1

1 0 0 0

0 1 0 0

0 0 1 0

0 0 0 1

1 0 0 0

0 1 0 0

int[]

SUM(calls) host = web%, mob%, music%, video%

Page 40: Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)

Time Calls Host

10:45 123 2

10:45 132 3

10:45 345 0

10:45 354 1

10:50 120 2

10:50 128 3

10:50 342 0

10:50 333 1

long[] long[]

api1 api2 web1 web2

0 0 1 0

0 0 0 1

1 0 0 0

0 1 0 0

0 0 1 0

0 0 0 1

1 0 0 0

0 1 0 0

int[]

SUM(calls) host = web%, mob%, music%, video%

1

1

0

0

1

1

0

0

bitmap1

Page 41: Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)

Time Calls Host

10:45 123 2

10:45 132 3

10:45 345 0

10:45 354 1

10:50 120 2

10:50 128 3

10:50 342 0

10:50 333 1

long[] long[]

api1 api2 web1 web2

0 0 1 0

0 0 0 1

1 0 0 0

0 1 0 0

0 0 1 0

0 0 0 1

1 0 0 0

0 1 0 0

int[]

SUM(calls) host = web%, mob%, music%, video%

bitmap1bitmap2

Page 42: Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)

Time Calls Host

10:45 123 2

10:45 132 3

10:45 345 0

10:45 354 1

10:50 120 2

10:50 128 3

10:50 342 0

10:50 333 1

long[] long[]

api1 api2 web1 web2

0 0 1 0

0 0 0 1

1 0 0 0

0 1 0 0

0 0 1 0

0 0 0 1

1 0 0 0

0 1 0 0

int[]

SUM(calls) host = web%, mob%, music%, video%

bitmap1bitmap2bitmap3bitmap4

Page 43: Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)

Time Calls Host

10:45 123 2

10:45 132 3

10:45 345 0

10:45 354 1

10:50 120 2

10:50 128 3

10:50 342 0

10:50 333 1

long[] long[]

api1 api2 web1 web2

0 0 1 0

0 0 0 1

1 0 0 0

0 1 0 0

0 0 1 0

0 0 0 1

1 0 0 0

0 1 0 0

int[]

SUM(calls) host = web%, mob%, music%, video%

1

1

0

0

1

1

0

0

Page 44: Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)

Time Calls Host

10:45 123 2

10:45 132 3

10:45 345 0

10:45 354 1

10:50 120 2

10:50 128 3

10:50 342 0

10:50 333 1

long[] long[]

api1 api2 web1 web2

0 0 1 0

0 0 0 1

1 0 0 0

0 1 0 0

0 0 1 0

0 0 0 1

1 0 0 0

0 1 0 0

int[]

SUM(calls) host = web%, mob%, music%, video%

1

1

0

0

1

1

0

0

Page 45: Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)

Time Calls Host

10:45 123 2

10:45 132 3

10:45 345 0

10:45 354 1

10:50 120 2

10:50 128 3

10:50 342 0

10:50 333 1

long[] long[]

api1 api2 web1 web2

0 0 1 0

0 0 0 1

1 0 0 0

0 1 0 0

0 0 1 0

0 0 0 1

1 0 0 0

0 1 0 0

int[]

SUM(calls) host = web%, mob%, music%, video%

1

1

0

0

1

1

0

0

5 95

Page 46: Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)

Time Calls Host

10:45 123 2

10:45 132 3

10:45 345 0

10:45 354 1

10:50 120 2

10:50 128 3

10:50 342 0

10:50 333 1

long[] long[]

api1 api2 web1 web2

0 0 1 0

0 0 0 1

1 0 0 0

0 1 0 0

0 0 1 0

0 0 0 1

1 0 0 0

0 1 0 0

int[]

Загрузка данных

Page 47: Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)

Time Calls Host

10:45 123 2

10:45 132 3

10:45 345 0

10:45 354 1

api1 api2 web1 web2

0 0 1 0

0 0 0 1

1 0 0 0

0 1 0 0

Time Calls Host

10:50 123 2

10:50 132 3

10:50 345 0

10:50 354 1

api1 api2 web1 web2

0 0 1 0

0 0 0 1

1 0 0 0

0 1 0 0

Time Calls Host

10:55 123 2

… … …

api1 api2 web1 web2

0 0 1 0

… … … …

Page 48: Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)

Time Calls Host

10:45 123 2

10:45 132 3

10:45 345 0

10:45 354 1

api1 api2 web1 web2

0 0 1 0

0 0 0 1

1 0 0 0

0 1 0 0

Time Calls Host

10:50 123 2

10:50 132 3

10:50 345 0

10:50 354 1

api1 api2 web1 web2

0 0 1 0

0 0 0 1

1 0 0 0

0 1 0 0

Time Calls Host

10:55 123 2

… … …

api1 api2 web1 web2

0 0 1 0

… … … …

Page 49: Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)

Time Calls Host

10:45 123 2

10:45 132 3

10:45 345 0

10:45 354 1

api1 api2 web1 web2

0 0 1 0

0 0 0 1

1 0 0 0

0 1 0 0

Time Calls Host

10:50 123 2

10:50 132 3

10:50 345 0

10:50 354 1

api1 api2 web1 web2

0 0 1 0

0 0 0 1

1 0 0 0

0 1 0 0

Time Calls Host

10:55 123 2

… … …

api1 api2 web1 web2

0 0 1 0

… … … …

Page 50: Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)

Деградация чтения

Загрузка данных

• Размер сегмента• Частота сброса на диск

• Использовать Selector

Page 51: Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)

like.photo.main

Page 52: Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)

like.photo.main.favorites

Page 53: Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)

like.photo.main.favorites.widget

Page 54: Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)

like.photo.main.favorites.widget.banner125

Page 55: Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)

like.photo.mainlike.photo.albumlike.photo.grouplike.video.mainlike.video.albumlike.video.grouplike.music.mainlike.music.albumlike.music.group

share.photo.mainshare.photo.albumshare.photo.groupshare.video.mainshare.video.albumshare.video.groupshare.music.mainshare.music.albumshare.music.group

comment.photo.maincomment.photo.albumcomment.photo.groupcomment.video.maincomment.video.albumcomment.video.groupcomment.music.maincomment.music.albumcomment.music.group

SUM(calls) Event = like.%

Page 56: Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)

like.photo.mainlike.photo.albumlike.photo.grouplike.video.mainlike.video.albumlike.video.grouplike.music.mainlike.music.albumlike.music.group

share.photo.mainshare.photo.albumshare.photo.groupshare.video.mainshare.video.albumshare.video.groupshare.music.mainshare.music.albumshare.music.group

comment.photo.maincomment.photo.albumcomment.photo.groupcomment.video.maincomment.video.albumcomment.video.groupcomment.music.maincomment.music.albumcomment.music.group

SUM(calls) Event = like.%

Page 57: Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)

Action

LikeShareComment

Object

PhotoVideoMusic

Place

MainAlbumGroup

SUM(calls) Action = like

Page 58: Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)

Action

LikeShareComment

Object

PhotoVideoMusic

Place

MainAlbumGroup

SUM(calls) Action = like

Page 59: Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)

Time Calls Host

10:45 123 2

10:45 132 3

10:45 345 0

10:45 354 1

10:50 120 2

10:50 128 3

10:50 342 0

10:50 333 1

long[] long[]

api1 api2 web1 web2

0 0 1 0

0 0 0 1

1 0 0 0

0 1 0 0

0 0 1 0

0 0 0 1

1 0 0 0

0 1 0 0

int[]

1

1

0

0

1

1

0

0

5 95

SUM(calls) Action = like

5 11

100 = +

16 = +

Page 60: Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)

Истинно тяжелый запрос

• 2TB• 74 секунды

• Приоритеты• Надо выставлять в запросе• Работают на уровне очереди

Page 61: Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)

• Отказ MySQL предсказуем• Для ZooKeeper: запас памяти, корректно

завершать Historical, а стартовать с паузой• Realtime не гарантирует exactly-once• Подбор размера сегмента и частоты сброса на

диск• Использовать Selector• Разбивать большое измерение на мелкие• Приоритеты на уровне очереди

Page 62: Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)

Юрий Невиницин[email protected]

Page 63: Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)

Юрий Невиницин[email protected]

Page 64: Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)

Юрий Невиницин[email protected]

Page 65: Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)

Юрий Невиницин[email protected]

Page 66: Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)

Деградация чтения

Загрузка данных

t

N rowsHistorical

Realtime N parts = 1

Page 67: Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)

Деградация чтения

Загрузка данных

t

N rowsHistorical

Realtime N parts = 2

Page 68: Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)

Деградация чтения

Загрузка данных

t

N rowsHistorical

Realtime N parts = 3

Page 69: Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)

Деградация чтения

Загрузка данных

t

N rowsHistorical

Realtime N parts = 30

Page 70: Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)

1 | Область названия раздела

Page 71: Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)

Данные: название источника данных, 2016

74 Слайд с текстом

Подзаголовок

• Далтон Трамбо, один из самых успешных голливудских сценаристов, автор

«Римских каникул» и «Спартака», не подозревал, что черный список

«Hollywood 10» реально существует, пока сам не попал туда и не был навсегда

выкинут из жизни фабрики грез;

• Премьера «Трамбо» состоялась в программе «специальный показ» на

кинофестивале в Торонто в сентябре 2015 года. Выход картины в широкий

прокат состоялся 6 ноября 2015 года.

Page 72: Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)

Данные: название источника данных, 2016

75 Слайд с цифрой

63Подпись

в две строчки

%

Page 73: Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)

Данные: название источника данных, 2016

76 Слайд с двумя цифрами

63Подпись

в две строчки

% 27Подпись

в две строчки

млн

Page 74: Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)

Данные: название источника данных, 2016

77 Изображение с комментарием

Стиль изображений

Зайдите в Quick Styles.

Выберите стиль с тенью

Page 75: Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)

Данные: название источника данных, 2016

78 Вертикальный скриншот Android с комментарием

Скриншот на экране

мобильного телефона

на платформе Android

Вставьте свой скриншот в черное

поле мобильного устройства

Page 76: Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)

Данные: название источника данных, 2016

79 Вертикальный скриншот iOS с комментарием

Скриншот на экране

мобильного телефона

на платформе iOs

Вставьте свой скриншот в черное

поле мобильного устройства

Page 77: Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)

Данные: название источника данных, 2016

80 Горизонтальный скриншот iOS

Page 78: Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)

Данные: название источника данных, 2016

81 Горизонтальный скриншот Android

Page 79: Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)

Данные: название источника данных, 2016

82 Скриншот на экране ноутбука

Скриншот

на экране ноутбука

Вставьте свой скриншот

в черное поле ноутбука

Page 80: Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)

Данные: название источника данных, 2016

83 Таблица

Размещения CRM (руб.) Значение

Промо-баннер (ТГБ под аватаркой) 10000 10000 показов

Промо-посты c охватом на свою группу 10000 23000 показов

Оповещения для вступления в группу 10000 8000 показов

Услуги

Промо-баннер (ТГБ под аватаркой) 10000 16000 показов

Промо-посты c охватом на свою группу 10000 28000 показов

Оповещения для вступления в группу 10000 14000 показов

Промо-баннер (ТГБ под аватаркой) 10000 23000 показов

Промо-посты c охватом на свою группу 10000 1 пост

Оповещения для вступления в группу 10000 23000 показов

Промо-баннер (ТГБ под аватаркой) 10000 Бонус

Page 81: Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)

84 Контакты и полезная информация

Поддержка

партнеров

[email protected]

Отдел

продаж

[email protected]

Блог ОК с информацией

о запусках, событиях и др.

insideok.ru

Лучшие кейсы на базе ОК

за последние годы

awards.insideok.ru

Продуктовые

обновления

ok.ru/gruppa

Официальная

группа ОК

ok.ru/ok

Page 82: Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)