Cоциальный граф "Одноклассников" в myTargetOleg Tsarev
Задача выглядит обманчиво простой — рядом с баннером игры из Одноклассников показывать текстовый тизер «эту игру играет Кот Матроскин и ещё 5 твоих друзей» (имя и количество берутся из друзей пользователя на Одноклассниках).
Как обрабатывать граф друзей проекта Одноклассники для этой задачи?
На этот простой вопрос дают разные ответы:
- взять графовую базу данных
- использовать матрицу инцидентности
- использовать список смежных вершин.
Если уточнить, что сырые данные занимают полтора терабайта, в графе 200 миллионов вершин и 13 миллиардов связей, то ручные решения сразу отметаются.
«Графовая база данных!» Стоит озвучить нагрузку в десятки тысяч запросов секунду и требования отвечать за миллисекунды (тысячные доли секунды!) как графовые базы сразу оказываются за бортом — типичное время ответа на простые запросы — единицы секунд.
Экс-разработчик MySQL и SciDB, ныне ведущий разработчик myTarget Олег Царёв расскажет, как решалась эта непростая задача в рамках проекта.
We looked at the data. Here’s a breakdown of some key statistics about the nation’s incoming presidents’ addresses, how long they spoke, how well, and more.
This document discusses how emojis, emoticons, and text speak can be used to teach students. It provides background on the origins of emoticons in 1982 as ways to convey tone and feelings in text communications. It then suggests that with text speak and emojis, students can translate, decode, summarize, play with language, and add emotion to language. A number of websites and apps that can be used for emoji-related activities, lessons, and discussions are also listed.
Artificial intelligence (AI) is everywhere, promising self-driving cars, medical breakthroughs, and new ways of working. But how do you separate hype from reality? How can your company apply AI to solve real business problems?
Here’s what AI learnings your business should keep in mind for 2017.
Study: The Future of VR, AR and Self-Driving CarsLinkedIn
We asked LinkedIn members worldwide about their levels of interest in the latest wave of technology: whether they’re using wearables, and whether they intend to buy self-driving cars and VR headsets as they become available. We asked them too about their attitudes to technology and to the growing role of Artificial Intelligence (AI) in the devices that they use. The answers were fascinating – and in many cases, surprising.
This SlideShare explores the full results of this study, including detailed market-by-market breakdowns of intention levels for each technology – and how attitudes change with age, location and seniority level. If you’re marketing a tech brand – or planning to use VR and wearables to reach a professional audience – then these are insights you won’t want to miss.
13 октября, DEV {web} - конференция о Highload веб-разработке. "Грабли при ма...IT-Portfolio
13 октября, DEV {web} - конференция о Highload веб-разработке. «Грабли при масштабировании веб-приложения, на которые очень легко наступить», Евгений Коковихин (системный архитектор WapStart)
Аннотация
Что происходит при росте приложения с 1М до 50М хитов в сутки. С какими проблемами можно столкнуться, когда серверов становится больше одного. О чем важно помнить при проектировании приложения, способного масштабироваться.
Подробно
Когда мы сделали первую публичную версию plus1.wapstart.ru, она помещалась на один сервер и была соответствующим образом спроектирована. Потом нагрузка начала расти, а мы начинали наступать на грабли. В докладе будет рассказано о наиболее типичных "граблях", что возможно позволит избежать их другими разработчиками при проектировании приложения.
О чем пойдет речь (кратко):
* балансировка нагрузки;
* кеширование данных и прогрев кешей;
* работа с сетью;
* сессии;
* файлы, загружаемые пользователями;
* работа с СУБД.
Мы пишем на PHP, используем фреймворк OnPHP, СУБД Postgres.
Биография
Родился в несуществующем городе несуществующей страны. Первый мобильный телефон увидел в 1997 году. С детства любил программировать, последние 4 года посвятил развитию рекламы в мобильном веб. Своими глазами видел эволюцию мобильных устройств и предпочтений рекламодателей.
Cоциальный граф "Одноклассников" в myTargetOleg Tsarev
Задача выглядит обманчиво простой — рядом с баннером игры из Одноклассников показывать текстовый тизер «эту игру играет Кот Матроскин и ещё 5 твоих друзей» (имя и количество берутся из друзей пользователя на Одноклассниках).
Как обрабатывать граф друзей проекта Одноклассники для этой задачи?
На этот простой вопрос дают разные ответы:
- взять графовую базу данных
- использовать матрицу инцидентности
- использовать список смежных вершин.
Если уточнить, что сырые данные занимают полтора терабайта, в графе 200 миллионов вершин и 13 миллиардов связей, то ручные решения сразу отметаются.
«Графовая база данных!» Стоит озвучить нагрузку в десятки тысяч запросов секунду и требования отвечать за миллисекунды (тысячные доли секунды!) как графовые базы сразу оказываются за бортом — типичное время ответа на простые запросы — единицы секунд.
Экс-разработчик MySQL и SciDB, ныне ведущий разработчик myTarget Олег Царёв расскажет, как решалась эта непростая задача в рамках проекта.
We looked at the data. Here’s a breakdown of some key statistics about the nation’s incoming presidents’ addresses, how long they spoke, how well, and more.
This document discusses how emojis, emoticons, and text speak can be used to teach students. It provides background on the origins of emoticons in 1982 as ways to convey tone and feelings in text communications. It then suggests that with text speak and emojis, students can translate, decode, summarize, play with language, and add emotion to language. A number of websites and apps that can be used for emoji-related activities, lessons, and discussions are also listed.
Artificial intelligence (AI) is everywhere, promising self-driving cars, medical breakthroughs, and new ways of working. But how do you separate hype from reality? How can your company apply AI to solve real business problems?
Here’s what AI learnings your business should keep in mind for 2017.
Study: The Future of VR, AR and Self-Driving CarsLinkedIn
We asked LinkedIn members worldwide about their levels of interest in the latest wave of technology: whether they’re using wearables, and whether they intend to buy self-driving cars and VR headsets as they become available. We asked them too about their attitudes to technology and to the growing role of Artificial Intelligence (AI) in the devices that they use. The answers were fascinating – and in many cases, surprising.
This SlideShare explores the full results of this study, including detailed market-by-market breakdowns of intention levels for each technology – and how attitudes change with age, location and seniority level. If you’re marketing a tech brand – or planning to use VR and wearables to reach a professional audience – then these are insights you won’t want to miss.
13 октября, DEV {web} - конференция о Highload веб-разработке. "Грабли при ма...IT-Portfolio
13 октября, DEV {web} - конференция о Highload веб-разработке. «Грабли при масштабировании веб-приложения, на которые очень легко наступить», Евгений Коковихин (системный архитектор WapStart)
Аннотация
Что происходит при росте приложения с 1М до 50М хитов в сутки. С какими проблемами можно столкнуться, когда серверов становится больше одного. О чем важно помнить при проектировании приложения, способного масштабироваться.
Подробно
Когда мы сделали первую публичную версию plus1.wapstart.ru, она помещалась на один сервер и была соответствующим образом спроектирована. Потом нагрузка начала расти, а мы начинали наступать на грабли. В докладе будет рассказано о наиболее типичных "граблях", что возможно позволит избежать их другими разработчиками при проектировании приложения.
О чем пойдет речь (кратко):
* балансировка нагрузки;
* кеширование данных и прогрев кешей;
* работа с сетью;
* сессии;
* файлы, загружаемые пользователями;
* работа с СУБД.
Мы пишем на PHP, используем фреймворк OnPHP, СУБД Postgres.
Биография
Родился в несуществующем городе несуществующей страны. Первый мобильный телефон увидел в 1997 году. С детства любил программировать, последние 4 года посвятил развитию рекламы в мобильном веб. Своими глазами видел эволюцию мобильных устройств и предпочтений рекламодателей.
В «Одноклассниках» логируются любые действия пользователей, любой вызов классов и методов, любые взаимодействия компонентов системы. Через несколько минут эти данные уже видны на графиках системы статистики. Данные собирает, хранит и обрабатывет хранилище данных, построенное на базе MS SQL Server.
Для адмистраторов, разработчиков и менеджеров построены универсальные интерактивные графики. Эти графики можно настроить так, чтобы они показывали любую подвыборку данных, агрегированных по периодам, начиная с 5 минут и заканчивая годом. Из графиков составлены тематические страницы (дэшборды), которые наглядно показывают состояние всего сайта или его отдельного компонента.
В докладе будут рассмотрены архитектура, основные компоненты и примененные алгоритмы обработки данных.
Михаил Корепанов "Скорость рендеринга страниц: исследования, замеры, автомати...Yandex
28 мая 2011, Я.Субботник в Киеве
Михаил Корепанов "Скорость рендеринга страниц: исследования, замеры, автоматизация"
О докладе:
В докладе подробно разобрано, что влияет на скорость отрисовки страниц, как ее измерить и как оптимизировать, включая вопрос автоматизации процесса тестирования скорости отрисовки в разных браузерах.
Действительно ли нужно уделять время оптимизации скорости рендеринга страниц или достаточно оптимизировать только скорость загрузки? Что такое reflow и repaint и как это влияет на время отрисовки страниц? Что использовать для измерения времени reflow и repaint? Как автоматизировать процесс тестирования скорости рендеринга страниц в большом количестве браузеров?
Оптимизация производительности фронтенда / Игорь Алексеенко (HTML Academy)Ontico
РИТ++ 2017, Frontend Сonf
Зал Дели + Калькутта, 6 июня, 14:00
Тезисы:
http://frontendconf.ru/2017/abstracts/2524.html
В этом докладе я покажу на примерах, в каких случаях нужно делать ставку на кэширование, а в каких можно довериться процессору, и как это может помочь оптимизировать производительность сложного фронтенд-приложения.
Жизнь проекта на production советы по эксплуатации / Николай Сивко (okmeter.io)Ontico
Ваш сайт или другой проект приносит деньги только тогда, когда он работает.
Нельзя просто выложить код на серверы, залить схему в базу данных и делегировать домен.
Будем говорить о планировании отказоустойчивости и мониторинге проектов:
- оцениваем риски отказа различных компонентов;
- какие-то из вероятных проблем просто мониторим и планируем действия при сбоях;
- проблемы, которых можно избежать легко и дешево, закрываем сразу.
Расскажу на примерах о том, что всё всегда ломается, но с этим можно жить.
Эксплуатация container-based-инфраструктур / Николай Сивко (okmeter.io)Ontico
HighLoad++ 2017
Зал «Мумбай», 7 ноября, 10:00
Тезисы:
http://www.highload.ru/2017/abstracts/2899.html
На каждой конференции мы слушаем интереснейшие доклады про CI/CD, service discovery, docker, kubernetes и т.д. Практически все эти доклады рассказывают нам о "разработческой" стороне проблемы: как собрать образ контейнера, быстро его протестировать и задеплоить, как контейнеры друг о друге узнают, как добавится новый upstream в конфиг nginx и т.д.
Но никто нам не рассказал, как потом с этим "облачным" счастьем жить (тем более под нагрузкой).
...
В «Одноклассниках» логируются любые действия пользователей, любой вызов классов и методов, любые взаимодействия компонентов системы. Через несколько минут эти данные уже видны на графиках системы статистики. Данные собирает, хранит и обрабатывет хранилище данных, построенное на базе MS SQL Server.
Для адмистраторов, разработчиков и менеджеров построены универсальные интерактивные графики. Эти графики можно настроить так, чтобы они показывали любую подвыборку данных, агрегированных по периодам, начиная с 5 минут и заканчивая годом. Из графиков составлены тематические страницы (дэшборды), которые наглядно показывают состояние всего сайта или его отдельного компонента.
В докладе будут рассмотрены архитектура, основные компоненты и примененные алгоритмы обработки данных.
Михаил Корепанов "Скорость рендеринга страниц: исследования, замеры, автомати...Yandex
28 мая 2011, Я.Субботник в Киеве
Михаил Корепанов "Скорость рендеринга страниц: исследования, замеры, автоматизация"
О докладе:
В докладе подробно разобрано, что влияет на скорость отрисовки страниц, как ее измерить и как оптимизировать, включая вопрос автоматизации процесса тестирования скорости отрисовки в разных браузерах.
Действительно ли нужно уделять время оптимизации скорости рендеринга страниц или достаточно оптимизировать только скорость загрузки? Что такое reflow и repaint и как это влияет на время отрисовки страниц? Что использовать для измерения времени reflow и repaint? Как автоматизировать процесс тестирования скорости рендеринга страниц в большом количестве браузеров?
Оптимизация производительности фронтенда / Игорь Алексеенко (HTML Academy)Ontico
РИТ++ 2017, Frontend Сonf
Зал Дели + Калькутта, 6 июня, 14:00
Тезисы:
http://frontendconf.ru/2017/abstracts/2524.html
В этом докладе я покажу на примерах, в каких случаях нужно делать ставку на кэширование, а в каких можно довериться процессору, и как это может помочь оптимизировать производительность сложного фронтенд-приложения.
Жизнь проекта на production советы по эксплуатации / Николай Сивко (okmeter.io)Ontico
Ваш сайт или другой проект приносит деньги только тогда, когда он работает.
Нельзя просто выложить код на серверы, залить схему в базу данных и делегировать домен.
Будем говорить о планировании отказоустойчивости и мониторинге проектов:
- оцениваем риски отказа различных компонентов;
- какие-то из вероятных проблем просто мониторим и планируем действия при сбоях;
- проблемы, которых можно избежать легко и дешево, закрываем сразу.
Расскажу на примерах о том, что всё всегда ломается, но с этим можно жить.
Эксплуатация container-based-инфраструктур / Николай Сивко (okmeter.io)Ontico
HighLoad++ 2017
Зал «Мумбай», 7 ноября, 10:00
Тезисы:
http://www.highload.ru/2017/abstracts/2899.html
На каждой конференции мы слушаем интереснейшие доклады про CI/CD, service discovery, docker, kubernetes и т.д. Практически все эти доклады рассказывают нам о "разработческой" стороне проблемы: как собрать образ контейнера, быстро его протестировать и задеплоить, как контейнеры друг о друге узнают, как добавится новый upstream в конфиг nginx и т.д.
Но никто нам не рассказал, как потом с этим "облачным" счастьем жить (тем более под нагрузкой).
...
1. «Грабли» при масштабировании
веб-приложения
или «что происходит при росте с 1М до 50М хитов в сутки».
Евгений Коковихин, ведущий разработчик Wapstart.
(в конце доклада вам покажут 1000 слонов!)
5. Задачи, которые решает plus1.wapstart.ru
• Поиск подходящих баннеров для пользователя.
• Сортировка баннеров по релевантности и стоимости.
• Подсчет денег.
• Администрирование баннеров и рекламных площадок.
• Сбор и анализ статистики.
6. ПО, которое используются
в plus1.wapstart.ru
• PHP 5.3 / php-fpm
• postgresql 9.1
• nginx
• memcache
• Freebsd (fronts)
• Debian (farms)
7. Конфигурация железа: было
Хорошо: мир
• Хорошо работает при
небольшой нагрузке;
• Все очень просто.
front-server
admin gui
Плохо: db-server
• Разные требования
к железу у разных
ролей; farm1
• Сложно отлавливать
баги и искать узкие farm2
места из-за влияния
других подсистем.
8. Конфигурация железа: стало
мир Хорошо:
• все еще просто;
• легко добавлять и
front1 front1 убирать железо;
• железо разделено по
farm-adm farm1 farmN ролям.
db-master Проблемы: Плохо:
• сессии; • Вывод железа из
db-slave продакшена
• картинки /
пользовательские файлы; в случае отказа
не автоматизирован.
• sql запросы,
модифицирующие данные
9. Статистика (1)
событие Хорошо: Плохо:
• выборки очень просты; • медленно;
DB (raw) • все понятно; • сложно удалять старые
сырые данные;
аггрегатор • сложно
масштабировать.
hourly tables daily tables
Проблемы:
• Однажды мы начали
интерфейсы писать быстрее, чем
смогли обрабатывать;
• Внешние ключи не
только полезны, но и
вредны.
10. Статистика (2)
событие
Хорошо:
файл • выборки очень просты;
• все понятно;
аккумулятор Плохо:
• Временные таблицы надо чистить;
temp tables
аггрегатор
hourly tables daily tables
интерфейсы
11. Статистика (3)
событие
Хорошо:
файл • Аггрегация работает
годно;
аккумулятор
Плохо:
temp hourly • Данные в дневные таблицы попадают не
tables одновременно с часовыми (переживем).
Аггрегатор /
удалятор
hourly tables daily tables
интерфейсы
12. Биллинг: было
Утро: Вечер:
Рекламодатель Рекламодатель
100 рублей 50 рублей
Владелец сайта Владелец сайта
100 рублей 120 рублей
Рекламодатель Рекламодатель
150 рублей 70 рублей
Владелец сайта Владелец сайта
10 рублей 12 рублей
Рекламодатель Рекламодатель
180 рублей 100 рублей
Владелец сайта Владелец сайта
20 рублей 30 рублей
13. Биллинг: стало
Счет сумма Счет сумма
User 1 1 000 User 1 1 100
User 2 100 User 2 200
User 3 100 User 3 500
System 150 System 3 000
… … … …
… … … …
time Credit_bill_id Debet_bill_id Amount comment
… User_1 User_2 100 за клики
… … … … …
14. Мониторим всё
1. Состояние логов
2. Аггрегация ошибок и отправка их почтой
3. Цветные графики
4. Особо критичные триггеры по sms.
15. Борьба за быстродействие:
• клиенты хотят получать баннер быстро;
• клиенты получают баннеры синхронно;
• аренда оборудования - это дорого.
16. Борьба за быстродействие: было
Запрос
Плохо:
пользователя onPHP cache
(memcache) • Иногда ходим в базу;
Разбор • Используем родные объекты
onPHP – медленная сборка.
Формирование
DB (Postgres)
запроса
Проблема:
Получения
• Однажды оно перестало
списков помещаться в кеш.
баннеров по
запросу
Проверки в Отрисовка и
реальном отдача
времени пользователю
17. Борьба за быстродействие: как хотели.
Запрос
пользователя get model_id=42&gateway_id=1®ion_id=199
VALUE model_id=42&gateway_id=1®ion_id=199 0 256
Преднаполнение a:2:{i:0;O:11:"PlainBanner":13:{s:15:"PlainBannerid";i:31
Разбор кеша ;s:17:"PlainBannername";N;s:18:"PlainBannertitle";N;s:20:
"PlainBannercontent";N;s:30:"PlainBannersingleLineContent
";N;s:17:"PlainBannerlink";N;s:20:"PlainBannerstateId";N;
s:23:"PlainBannercampaignId";N;s:19:"PlainBannertypeId";N
;s:21:"PlainBannerpictures";a:0:{}s:25:"PlainBannerfakePi
Формирование ctures";a:0:{}s:17:"PlainBannerfake";b:0;s:32:"PlainBanne
запроса Мemcache rshowOnlyWithGraphic";N;}i:1;O:11:"PlainBanner":13:{s:15:
"PlainBannerid";i:42;s:17:"PlainBannername";N;s:18:"Plain
Bannertitle";N;s:20:"PlainBannercontent";N;s:30:"PlainBan
nersingleLineContent";N;s:17:"PlainBannerlink";N;s:20:"Pl
Получение ainBannerstateId";N;s:23:"PlainBannercampaignId";N;s:19:"
PlainBannertypeId";N;s:21:"PlainBannerpictures";a:0:{}s:2
списков 5:"PlainBannerfakePictures";a:0:{}s:17:"PlainBannerfake";
баннеров по b:0;s:32:"PlainBannershowOnlyWithGraphic";N;}}
запросу END
Отрисовка и Не взлетело :(
отдача
пользователю
18. Борьба за быстродействие:
Запрос
как получилось
пользователя
Преднаполнение
Вот так
Разбор кеша работает!
Формирование Проблемы:
запроса на каждую
сущность таргетинга Мemcache • Разбиратель запроса все еще
может попасть в базу;
Получение и
объединение
• Редкий траффик идет в базу
списков баннеров целиком;
по запросу
• За преднаполненным кешем
надо следить.
Отрисовка и
отдача
пользователю
19. Мониторинг (2)
и как мы раньше жили без pinba?
• Меряем именно то, что происходит на проде;
• Меряем все, что происходит на проде;
• Можем измерять бизнес-метрики;
• Красивые графики.
20. Резюме:
• Разработка – процесс итеративный.
• Ошибки бывают, не бойтесь ошибаться.
• Не надо думать на 3 года вперед, все равно все изменится.
• Мониторинг – наше всё.
• Сила в простых вещах. Когда все просто – это легко поддерживать
и модифицировать.