mfilippovich

26 сентября 2016, San Francisco, CA

# Понедельник 33 твита

Всем привет! На этой неделе с вами @mfilippovich – CTO at hyperadx.com

11:31

hyperadx.com – это мобильная рекламная сеть, в основном мы позиционируемся на native advertising и видео (скоро!)

11:33

Планирую рассказать как мы боремся маленькой командой из 3х человек на бэкенде с жёсткими требованиями рекламной отрасли:

11:43

@backendsecret нельзя быть медленным и сервис всегда должен работать

11:46

Что используем: ruby, docker, terraform и AWS, всё что связано с отдачей рекламы крутится на jruby в регионах: США/Европа

11:53

Из волнующих тем про docker и сборку логов – кто как решает эту проблему?

12:23

Мы пришли к тому, что пишем из контейнера в unix socket в fluentd.org который каждую секунду флашит всё в ноды агрегаторы

12:25
@backendsecret на хосте сислог, который прокидывает все в логстеш, на основн мета информации либо парсится в json, либо как текст.
12:37
@dcromster в секунду на 2х 8 ядерных виртуальных амазоновских инстансах

попугаи в виде ставок на рекламу twitter.com/backendsecret/…

13:45
@backendsecret Как дела с DMP? где берете, если не секрет?

Мы не пользуемся, по настоящему ценными данными никто не будет делиться так twitter.com/dm_halai/statu…

13:56
@backendsecret А как быстро отрабатывает весь flow (от клика до показа) c RTB?

Если мы не хотим делать ставку (ненужный формат, гео) – отклоняем за < 1мсек, если решаем подбирать кампанию – 4мсе… twitter.com/i/web/status/7…

14:12
Если мы не хотим делать ставку (ненужный формат, гео) – отклоняем за < 1мсек, если решаем подбирать кампанию – 4мсе… twitter.com/i/web/status/7…

К этому нужно добавить ещё время сети twitter.com/backendsecret/…

14:17
К этому нужно добавить ещё время сети twitter.com/backendsecret/…

Если запрос идёт с устройства, на всё может уйти и 200-500мсек включая сеть, если она плохая twitter.com/backendsecret/…

14:20
@backendsecret А что используйте для OLAP-а? Делаете ли какую-то оптимизацию на основе прошлых компаний, рекуррентности?

Раньше был mysql, но ушли на колоночную БД от яндекса – ClickHouse, на бэкенде да, оптимизируем кампании, строим ве… twitter.com/i/web/status/7…

14:35
@backendsecret и кто скажет что ruby медленный )

Главное чтобы большая часть библиотек была на java :) twitter.com/ajieks/status/…

14:36
@backendsecret ruby? Ну опять неделя мимо.

Да руби говно, но оно работает, плавает вроде twitter.com/mr_apt/status/…

14:39
@backendsecret а у вас запросы по http идут?

да, обычный http, netty очень хорошо справляется twitter.com/alexgorkunov/s…

15:20
@backendsecret c чем больше воюете: aws, docker .. whatever?

Больше всего воюем с ECS он как-то первое время плохо собирал старые контейнеры, а мы часто деплоимся и в результат… twitter.com/i/web/status/7…

15:22
@backendsecret воу воу, кликхаус, рассказывай!

Большой респект яндексу за такую БД, кому надо что-то для OLAP – очень хороший выбор twitter.com/OhTheAnguish/s…

15:28
@backendsecret если не руби, то что?;) кто выбрал его как основной язык?)

Если бы у нас был конкурс на самый оригинальный стэк, мы бы тогда clojure выбрали? :) twitter.com/lisovskyvlad/s…

15:29
@backendsecret у вас сколько на биддере активных кампаний в среднем? Вы используете статический предикт или у вас есть ML-модели?

Активных кампаний несколько сотен, объявлений – больше тысячи. cqengine очень быстро ищет по индексам в памяти на д… twitter.com/i/web/status/7…

15:33
@backendsecret у вас сколько на биддере активных кампаний в среднем? Вы используете статический предикт или у вас есть ML-модели?

ML мы пока не используем, мы вообще с весны запустились :) twitter.com/qwwdfsad/statu…

15:33
@backendsecret ну без ML и профилей пользователя из базы 4 мс это относительно много.
Поздравляю с запуском :)

А тут уже виноват jruby – надо профилировать, но нас это пока устраивает twitter.com/qwwdfsad/statu…

15:42
@backendsecret ну без ML и профилей пользователя из базы 4 мс это относительно много.
Поздравляю с запуском :)

Профили будем хранить обязательно и поэтому динамично таргетироваться на cqengine очень удобно – ищем мы быстрее 4м… twitter.com/i/web/status/7…

15:43
@backendsecret ну без ML и профилей пользователя из базы 4 мс это относительно много.
Поздравляю с запуском :)

> Поздравляю с запуском :)
Спасибо :) А вы тоже с рекламой связаны? twitter.com/qwwdfsad/statu…

15:44
@backendsecret ага, работаю в rutarget/segmento

У вас, наверное, scala/spark? twitter.com/qwwdfsad/statu…

15:49
@backendsecret а как поможет cqengine с профилями? Про 4 мс: возможно это просто gc: ...

Он упростит сложные таргетинги, например, профиль наполняется данными от приложения, которые мы хотим использовать… twitter.com/i/web/status/7…

16:00
@backendsecret а как поможет cqengine с профилями? Про 4 мс: возможно это просто gc: ...

и мы сможем сматчить кампании, которые, например, идут на пользователя в конкретном приложении с конкретным уровнем… twitter.com/i/web/status/7…

16:01
@backendsecret имхо throughput >latency в RTB, потому что таймаута в 100/50/75 мс хватает за глаза, а вот железо само себя не купит...

Да, главное чтобы эти 100/50/75 мсек были ожидания сети, а не цпу, а то на 1 ядро выйдет мало RPS, а у вас своё жел… twitter.com/i/web/status/7…

16:03
@backendsecret ну без ML и профилей пользователя из базы 4 мс это относительно много.
Поздравляю с запуском :)

А какого рода у вас ML? Это какую-то реальную пользу приносит? twitter.com/qwwdfsad/statu…

16:04
@backendsecret боюсь это NDA, но его много разного (больше четырех разных моделей). Экономит много денег, дает много business-value

насчёт look a like – согласен, полезно 100% twitter.com/qwwdfsad/statu…

16:14
Из волнующих тем про docker и сборку логов – кто как решает эту проблему?

Ни у кого нет никакой экзотики? :) twitter.com/backendsecret/…

20:42

Всем спасибо и хорошей недели!

0:51

# Вторник 20 твитов

Всем доброго утра! Многие из вас уже используют docker – предлагаю обменяться опытом о нём

10:26
Всем доброго утра! Многие из вас уже используют docker – предлагаю обменяться опытом о нём

Что используете для запуска контейнеров? AWS ECS, kubernetes, cloud66, deis, flynn, mesos? Или что-то ещё? twitter.com/backendsecret/…

10:28
@backendsecret запоздалый вопрос по JRuby - какую используете, 9000? Как она в проде, достаточно стабильна? Не пробовали Truffle + Graal?

Мы используем 9.1.2.0 twitter.com/flex0id/status…

10:30
@backendsecret не вызвало неудобств отсутствие update'ов?

У нас только immutable данные – мы статистику не изменяем, только добавляем новые данные twitter.com/artsabirov/sta…

10:32
Чаще оркестрация контейнеров не нужна. Ну то есть это полезная штука, но это не главное в контейнерах и надо понима… twitter.com/i/web/status/7…

А почему не нужна? twitter.com/ctrlok/status/…

10:52
@backendsecret неужели в каждом приложении необходим мгновенный перезапуск на любой ноде кластера?

Не то чтобы перезапуск: удобно иметь нормальный рестарт, с выводом из балансировщика, поддержка N% живых контейнеро… twitter.com/i/web/status/7…

11:46
Не то чтобы перезапуск: удобно иметь нормальный рестарт, с выводом из балансировщика, поддержка N% живых контейнеро… twitter.com/i/web/status/7…

Всё это можно сделать руками, но это время и поддержка twitter.com/backendsecret/…

11:47
да есть же куча утилит которые это умеют :) не бином же ньютона и делалось ещё до контейнеров. twitter.com/backendsecret/…

ну так никто не спорит, что делалось :) а зачем делать что-то если можно не делать? twitter.com/ctrlok/status/…

11:54
@backendsecret ECS, но не очень им доволен

Да, мы тоже его используем, надеюсь его доведут до ума :) twitter.com/Dgtl_philosoph…

12:01
@backendsecret расскажите, как вы его в прод возите

Мы используем AWS ECS, удобно когда у нас к вечеру в 2 раза вырастает нагрузка и мы подключаем новые ноды и запуска… twitter.com/i/web/status/7…

12:03
ну то есть я понимаю месос что б менеджить консьюмеры кафки или какие-то другие штуки. Но чаще всего это лишний сло… twitter.com/i/web/status/7…

Тут вопрос компромисов – для нас лучше заплатить за лишний слой, но не делать какую-то лишнюю работу, для кого это… twitter.com/i/web/status/7…

12:05
заплатить это не только деньги. Это время и сложность поддержки и дебага. twitter.com/backendsecret/…

Вот мы и сэкономили время :) Компромис на то и компромис, что это удобное решение в конкретной ситуации, нас больше… twitter.com/i/web/status/7…

12:08
заплатить это не только деньги. Это время и сложность поддержки и дебага. twitter.com/backendsecret/…

Вы не наталкивались на залипания докера – github.com/docker/docker/… twitter.com/ctrlok/status/…

12:10
@dmitry_kalachov @backendsecret 1/2 Нет нормальной дистриьюции между AZ -- она работает только когда деплоишь, но не при изменении стэка.
14:52
@dmitry_kalachov @backendsecret Когда выключаешь агент, ecs это видит, но не делает ребалансинг. Нет API для проверки exit-codов контейнеров
14:52
@backendsecret Docker Cloud (бывший Tutum). Очень limited, но более или менее все есть и очень lightweight.

Насколько я помню он работал поверх какого-то хостинга? по сравнению с ECS как оцениваете? twitter.com/mkuleshov/stat…

15:39
@backendsecret у нас свое решение stups.io

У вас, наверное, большая команда инфраструктурой занимается? А как всё происходило до stups, если не секрет? twitter.com/meln1k/status/…

16:13
@backendsecret mesos, сильных глюков на небольшом деплойменте не замечали
22:26
@artsabirov @backendsecret призываю всех контрибьютить в #clickhouse, особенно кто использует. документация, репорты
22:27
@artsabirov @backendsecret ага, тоже внедрили #clickhouse. Updates можно сделать, если не часто

А где используете? Тоже для аналитики? twitter.com/f1yegor/status…

22:29

# Среда 11 твитов

Всем хорошего дня! Я тут заметил, что многих заинтересовало использование ClickHouse, предлагаю поговорить о нём ну и о других колоночных БД

11:47
Всем хорошего дня! Я тут заметил, что многих заинтересовало использование ClickHouse, предлагаю поговорить о нём ну и о других колоночных БД

Мы его использовали из-за скорости, хорошего сжатия и стабильности. Также из-за различных Engine, например… twitter.com/i/web/status/7…

11:54
Мы его использовали из-за скорости, хорошего сжатия и стабильности. Также из-за различных Engine, например… twitter.com/i/web/status/7…

Но есть минусы – для работы кластера нужен zookeeper twitter.com/backendsecret/…

12:06
@backendsecret а для тех, кто слушает подкасты, есть 45-й выпуск bit.ly/2a4SSwT про ClickHouse
12:06
@backendsecret зукипер настолько удобная штука, что
а) Используется в куче продуктов, поэтому обычно все равно есть
...

Да, штука полезная, но мы её просто до этого не использовали нигде, если бы была kafka, то zookepeer уже бы стоял :) twitter.com/qwwdfsad/statu…

12:12

Если кто не следит: MariaDB взялись на разработку своего Column Store, на базе InfiniDB – mariadb.com/kb/en/mariadb/…

12:14
Если кто не следит: MariaDB взялись на разработку своего Column Store, на базе InfiniDB – mariadb.com/kb/en/mariadb/…

Сначала года делают (насколько я помню) в рассылке регулярно предлагают тестировать Alpha, релиза пока не было twitter.com/backendsecret/…

12:19
@backendsecret а хадупа для аналитики у вас нет? :)

Пока не возникало нужды, у нас всё достаточно просто – а чем проще, тем лучше :) twitter.com/qwwdfsad/statu…

12:23
@backendsecret а хадупа для аналитики у вас нет? :)

А вы используете? twitter.com/qwwdfsad/statu…

12:23
Если кто не следит: MariaDB взялись на разработку своего Column Store, на базе InfiniDB – mariadb.com/kb/en/mariadb/…

Показательно, что на базе MySQL нет успешных продуктов для аналитики: infinidb, Infobright twitter.com/backendsecret/…

12:57
Показательно, что на базе MySQL нет успешных продуктов для аналитики: infinidb, Infobright twitter.com/backendsecret/…

Когда на базе PostgreSQL: citusdb, paraccel, greenplum... twitter.com/backendsecret/…

12:58

# Пятница 2 твита

Всем пятницы! Это время для хороших холиваров – можно устроить срач на тему какой стэк надо было выбрать для рекламной сети – кто за?

11:59
@backendsecret в чем холивар? И так понятно что elixir

Вот и порешили :) twitter.com/Shiroginne/sta…

17:15

# Суббота 4 твита

@backendsecret упомянул бы кто на чем клепать всякие дашборды, чарты для пользователей (фронт для стека).

Мы шли неинтересным путём – использовали что идёт в бутстрап теме и дорабатывали под свои нужды twitter.com/nick_jastix/st…

13:02
@backendsecret упомянул бы кто на чем клепать всякие дашборды, чарты для пользователей (фронт для стека).

Но если говорить о фронтенде мне больше всего импонирует подход clojurescript – немного пробовал и только положител… twitter.com/i/web/status/7…

13:03

@backendsecret Особенно если использовать figwheel – youtube.com/watch?v=j-kj2q…

13:04

@backendsecret И лидер у clojure очень интересный youtube.com/results?search…

13:09

# Воскресенье 5 твитов

@backendsecret вы рекламная сеть, как вы боритесь с фродом (накрутки показов, кликов и т.д.)?

Самые основные методы – это определение аномальной активности в приложении: распределение запросов по пользователям… twitter.com/i/web/status/7…

11:49
Самые основные методы – это определение аномальной активности в приложении: распределение запросов по пользователям… twitter.com/i/web/status/7…

Распределения по городам/ос/версиям, похожие юзерагенты, инструменты типа forensiq.com twitter.com/backendsecret/…

11:50
Распределения по городам/ос/версиям, похожие юзерагенты, инструменты типа forensiq.com twitter.com/backendsecret/…

Но лучше всего помогает оценка от рекламодателя – реклама покупается чаще всего для установок моб. приложений и ест… twitter.com/i/web/status/7…

11:53
Но лучше всего помогает оценка от рекламодателя – реклама покупается чаще всего для установок моб. приложений и ест… twitter.com/i/web/status/7…

Некоторые системы аналитики тоже стараются помогать в этом вопросе – appsflyer.com/devicerank/ twitter.com/backendsecret/…

11:55
@backendsecret ну без ML и профилей пользователя из базы 4 мс это относительно много.
Поздравляю с запуском :)

Ради интереса, а какое у вас железо? Большая часть времени у нас уходит на github.com/google/openrtb twitter.com/qwwdfsad/statu…

12:26

other


@hotsyk
@tmshv