SlideShare a Scribd company logo
1 of 42
Как показывать 200 миллионов
баннеров ежедневно и быть
готовым показать миллиард.
Евгений Коковихин, руководитель отдела разработки Wapstart.
Разработчик баннерной сети http://plus1.wapstart.ru/.
О компании WapStart
WapStart – владелец крупнейшей в России мобильной рекламной сети
Plus1 WapStart и наиболее полного и популярного в России каталога
мобильных сайтов Top WapStart.
Компания оказывает услуги тысячам издателей мобильных сайтов и
приложений. Ежемесячная рекламная емкость WapStart – свыше 4,2
млрд. показов, число уникальных посетителей – более 25 миллионов.
Компания WapStart владеет передовыми
технологиями таргетинга и анализа аудитории,
позволяющими проводить рекламные кампании
в мобильной среде с высокой рентабельностью
инвестиций.
Marketing is so marketing
0
500
1000
1500
2000
2500
3000
3500
4000
4500
Millions
Задача
•  Будьте готовы показать миллиард. //это примерно 13-15K rps.
Год назад у нас было так
front1
farm1 farm2 farm3 farm4 … farmN
front2
Master-db
Slave-db
Cache 1 Cache 2 Cache 3
Идеи
•  Все должно быть локально.
Идеи
•  Пользователь должен всегда попадать на один и тот же бекенд
(так как у нас все локально).
Идеи
•  Ротатор (баннерная крутилка / php-fpm) не должен ходить в
базу.
Идеи
•  Нужна какая-то умная штука для синхронизации.
Реализация.
Задача: сделать так
front1
farm1
cache1
farm2
cache2
farm3
cache3
farm4
cache4
…
…
farmN
cacheN
front2
Master-db
Slave-db
queue
filler
Реализация:
•  Для nginx есть модуль persistent upstream
https://github.com/replay/ngx_http_consistent_hash
•  Мы его доработали
https://github.com/WapStart/ngx_http_consistent_hash
Пользователи должны попадать в один и тот же
upstream
include /usr/local/etc/nginx/fastcgi_params;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param CONSISTENT_HASH $consistentHash;
fastcgi_param GEOIP_COUNTRY_CODE $geoip_country_code;
fastcgi_pass consistent-upstream;
Реализация:
•  Выпиливаем из конфигов подключение к СУБД и отлаживаем.
Безбазье
Реализация:
•  Все апстримы ходят исключительно в локальный кеш.
•  Делаем центр, из которого будут наполняться кеши на разных
серверах.
•  Интерфейс неизменный. При этом читаем всегда из локального
кеша, а пишем во все.
•  Пишем только из центра.
Преднаполняторы кеша
Реализация:
Клики
Реализация:
Клики; теория перекрутов
•  Показы продолжались после окончания лимитов.
•  Пользователь что-то изменил, но это подействовало не сразу.
•  Показали до окончания лимитов, но кликнули после.
Реализация:
Клики; теория перекрутов
•  Среднюю величину перекрутов любого рода можно предсказать.
•  Время реакции тоже предсказуемо.
//Осталось лишь согласовать с бизнесом )
Реализация:
Клики; обработка в фоне
•  Было: Event -> database.
•  Стало: Event -> file queue -> logAnalyzer -> database.
•  Цепочка стала более длинной, время реакции увеличилось.
Решение:
•  Предсказываем события.
Масштабирование на уровне дата-центров
Задача. Сделать так:
Центр
Primary
DNS
СУБД
Синхрони-
затор
Управлятор
трафиком
Монито-
ринг
Internet
Дата-
центр 1
Дата-
центр 2
Дата-
центр 3
Дата-
центр 4
В пределах дата-центра
front1
farm1
cache1
farm2
cache2
farm3
cache3
…
…
farmN
cacheN
центр
VPNСинхрони-
затор
Масштабирование на уровне дата-центров
Можно выбрать дорогой дата-центр, а можно быть
готовым к его падению
•  Пишем LowCost, подразумеваем Hetzner.
•  На один рубль обрабатываем в три раза больше трафика!
•  Не забывайте про VAT (еще дешевле).
•  Пока стандартная конфигурация вас устраивает – все очень
дешево.
Масштабирование на уровне дата-центров
Hetzner: проблемы и ограничения
Масштабирование на уровне дата-центров
•  Не более 6 серверов в «кластере».
•  Техподдержка не на вашей стороне.
•  Иногда теряются пакеты.
•  Иногда «утекает» база паролей и кредиток :)
•  Возникают спонтанные проблемы с сетью.
•  Не совсем «серверное» железо.
Решение
•  Приложение должно быть готовым к кратковременному
отсутствию связи.
•  Если упадет «датацентр» целиком, мы должны продолжить
работу.
Hetzner: проблемы и ограничения
Масштабирование на уровне дата-центров.
Мониторинг.
Масштабирование на уровне дата-центров
Мониторинг
•  Трафик/логи.
Масштабирование на уровне дата-центров
Мониторинг
•  CPU load.
Масштабирование на уровне дата-центров
Мониторинг должен быть распределенным
•  Что будет, если упадет сервер с мониторингом?
•  Каждый «узел» должен наблюдаться как минимум из двух мест.
•  Особо критичные триггеры должны отправляться по смс.
Масштабирование на уровне дата-центров
Как делить трафик?
Масштабирование на уровне дата-центров
Как делить трафик: DNS
•  Измеряем трафик по подсетям или странам.
•  Создаем view в bind (google://named views).
•  Ждем.
Ограничения
•  Иногда dns сервер клиента находится за пределами его сети.
•  DNS рассасывается не моментально.
•  Порции трафика выделяются по подсетям => иногда они
слишком большие, а иногда – маленькие.
Масштабирование на уровне дата-центров
Как делить трафик: http permanent rewrites
•  Находим какой-нибудь критерий деления (площадка, user-
agent, etc).
•  В nginx rewrite … permanent.
•  Изменения вступают в силу сразу.
Ограничения
•  Применимо только client-to-server подключений.
•  Лишняя нагрузка на фронт-«делитель».
•  Повышенное время ответа клиенту.
Масштабирование на уровне дата-центров
Как делить трафик: поддомены для крупных
партнеров
•  Для крупных server-to-server партнеров можно завести
отдельный субдомен partnerName.ro.plus1.wapstart.ru и
заставить гнать траффик на него.
•  Изменяем dns и ждем.
Ограничения
•  Применимо только для крупных партнеров.
•  Время реакции DNS.
Масштабирование на уровне дата-центров
Оставшиеся проблемы
VS
Масштабирование на уровне дата-центров
Очереди
•  Списки баннеров доставляются шарманкой, но «срочные
изменения» мы пока доставлять не умеем.
•  Аггрегаторы кликов ходят в базу напрямую.
Решение
•  Нужен AMQP.
Масштабирование на уровне дата-центров
Смерть / потеря связи
•  Дата-центр некоторое время может жить без связи с «центром».
•  Деньги не обсчитываются => возможны перекруты.
•  Показывать можно не все баннеры.
•  Дата-центр может умереть навсегда.
Масштабирование на уровне дата-центров
Плюсы
Масштабирование на уровне дата-центров
Плюсы
•  Легкое масштабирование.
•  Возможность разместить сервера ближе к пользователю (aka
CDN).
•  Возможность менять конфигурацию/расположение серверов
без существенных проблем.
Переезд
Задача – из-за форс-мажора надо оперативно
поменять основной дата-центр
•  Едем ночью.
•  Трафик к крутилке может работать без субд и линейно
масштабирутся.
•  Админку перевозим с минутным даунтаймом.
Спасибо!
Контакты.
•  https://wapstart.ru/
•  https://github.com/WapStart
•  dev@co.wapstart.ru
•  https://www.facebook.com/WapStart
•  dovg@dovg.ru
•  https://github.com/dovg
•  https://vk.com/ekokovikhin
Специальный 42ой слайд.

More Related Content

What's hot

хостинг
хостингхостинг
хостингtufelka
 
Бигдата — как добывать золото из данных / Александр Сербул (1С-Битрикс)
Бигдата — как добывать золото из данных / Александр Сербул (1С-Битрикс)Бигдата — как добывать золото из данных / Александр Сербул (1С-Битрикс)
Бигдата — как добывать золото из данных / Александр Сербул (1С-Битрикс)Ontico
 
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"Technopark
 
Методика определения неиспользуемых ресурсов виртуальных машин и автоматизаци...
Методика определения неиспользуемых ресурсов виртуальных машин и автоматизаци...Методика определения неиспользуемых ресурсов виртуальных машин и автоматизаци...
Методика определения неиспользуемых ресурсов виртуальных машин и автоматизаци...Positive Hack Days
 
Синхронная репликацтя БД: какая от неё польза? (Алексей Юрченко)
Синхронная репликацтя БД: какая от неё польза? (Алексей Юрченко)Синхронная репликацтя БД: какая от неё польза? (Алексей Юрченко)
Синхронная репликацтя БД: какая от неё польза? (Алексей Юрченко)Ontico
 
FT & HA Rails приложений приложений — это просто
FT & HA Rails приложений приложений — это простоFT & HA Rails приложений приложений — это просто
FT & HA Rails приложений приложений — это простоАлександр Ежов
 
Какие бывают провайдеры услуг дата-центров и как выбрать оптимальный? / Игорь...
Какие бывают провайдеры услуг дата-центров и как выбрать оптимальный? / Игорь...Какие бывают провайдеры услуг дата-центров и как выбрать оптимальный? / Игорь...
Какие бывают провайдеры услуг дата-центров и как выбрать оптимальный? / Игорь...Ontico
 
Extreme Cloud Storage on FreeBSD, Андрей Пантюхин
Extreme Cloud Storage on FreeBSD, Андрей ПантюхинExtreme Cloud Storage on FreeBSD, Андрей Пантюхин
Extreme Cloud Storage on FreeBSD, Андрей ПантюхинFuenteovejuna
 
Лекция 14. Hadoop в Поиске Mail.Ru
Лекция 14. Hadoop в Поиске Mail.RuЛекция 14. Hadoop в Поиске Mail.Ru
Лекция 14. Hadoop в Поиске Mail.RuTechnopark
 
Самые частые проблемы и пути решения при росте нагрузки и масштабировании про...
Самые частые проблемы и пути решения при росте нагрузки и масштабировании про...Самые частые проблемы и пути решения при росте нагрузки и масштабировании про...
Самые частые проблемы и пути решения при росте нагрузки и масштабировании про...Колёса Крыша Маркет
 
Взаимодействие сервисов через Advanced Message
 Queuing Protocol
Взаимодействие сервисов через Advanced Message
 Queuing ProtocolВзаимодействие сервисов через Advanced Message
 Queuing Protocol
Взаимодействие сервисов через Advanced Message
 Queuing ProtocolElena Grahovac
 
Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"
Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"
Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"Alexey Zinoviev
 
Как мы строили аналитическую платформу на несколько миллиардов событии в месяц
Как мы строили аналитическую платформу на несколько миллиардов событии в месяцКак мы строили аналитическую платформу на несколько миллиардов событии в месяц
Как мы строили аналитическую платформу на несколько миллиардов событии в месяцMikhail Tabunov
 
Александр Крижановский (NatSys Lab)
Александр Крижановский (NatSys Lab)Александр Крижановский (NatSys Lab)
Александр Крижановский (NatSys Lab)Ontico
 
Cеминар: Работа с технологиями - Основы хостинга сайтов
Cеминар: Работа с технологиями - Основы хостинга сайтовCеминар: Работа с технологиями - Основы хостинга сайтов
Cеминар: Работа с технологиями - Основы хостинга сайтовMDIF
 
Лекция 3. Распределённая файловая система HDFS
Лекция 3. Распределённая файловая система HDFSЛекция 3. Распределённая файловая система HDFS
Лекция 3. Распределённая файловая система HDFSTechnopark
 
Использование AMQP в основе архитектуры бэкенда для мобильного приложения
Использование AMQP в основе архитектуры бэкенда для мобильного приложенияИспользование AMQP в основе архитектуры бэкенда для мобильного приложения
Использование AMQP в основе архитектуры бэкенда для мобильного приложенияphpdevby
 
Mafiozi Performance2 1
Mafiozi Performance2 1Mafiozi Performance2 1
Mafiozi Performance2 1Rashad Aliyev
 

What's hot (18)

хостинг
хостингхостинг
хостинг
 
Бигдата — как добывать золото из данных / Александр Сербул (1С-Битрикс)
Бигдата — как добывать золото из данных / Александр Сербул (1С-Битрикс)Бигдата — как добывать золото из данных / Александр Сербул (1С-Битрикс)
Бигдата — как добывать золото из данных / Александр Сербул (1С-Битрикс)
 
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
 
Методика определения неиспользуемых ресурсов виртуальных машин и автоматизаци...
Методика определения неиспользуемых ресурсов виртуальных машин и автоматизаци...Методика определения неиспользуемых ресурсов виртуальных машин и автоматизаци...
Методика определения неиспользуемых ресурсов виртуальных машин и автоматизаци...
 
Синхронная репликацтя БД: какая от неё польза? (Алексей Юрченко)
Синхронная репликацтя БД: какая от неё польза? (Алексей Юрченко)Синхронная репликацтя БД: какая от неё польза? (Алексей Юрченко)
Синхронная репликацтя БД: какая от неё польза? (Алексей Юрченко)
 
FT & HA Rails приложений приложений — это просто
FT & HA Rails приложений приложений — это простоFT & HA Rails приложений приложений — это просто
FT & HA Rails приложений приложений — это просто
 
Какие бывают провайдеры услуг дата-центров и как выбрать оптимальный? / Игорь...
Какие бывают провайдеры услуг дата-центров и как выбрать оптимальный? / Игорь...Какие бывают провайдеры услуг дата-центров и как выбрать оптимальный? / Игорь...
Какие бывают провайдеры услуг дата-центров и как выбрать оптимальный? / Игорь...
 
Extreme Cloud Storage on FreeBSD, Андрей Пантюхин
Extreme Cloud Storage on FreeBSD, Андрей ПантюхинExtreme Cloud Storage on FreeBSD, Андрей Пантюхин
Extreme Cloud Storage on FreeBSD, Андрей Пантюхин
 
Лекция 14. Hadoop в Поиске Mail.Ru
Лекция 14. Hadoop в Поиске Mail.RuЛекция 14. Hadoop в Поиске Mail.Ru
Лекция 14. Hadoop в Поиске Mail.Ru
 
Самые частые проблемы и пути решения при росте нагрузки и масштабировании про...
Самые частые проблемы и пути решения при росте нагрузки и масштабировании про...Самые частые проблемы и пути решения при росте нагрузки и масштабировании про...
Самые частые проблемы и пути решения при росте нагрузки и масштабировании про...
 
Взаимодействие сервисов через Advanced Message
 Queuing Protocol
Взаимодействие сервисов через Advanced Message
 Queuing ProtocolВзаимодействие сервисов через Advanced Message
 Queuing Protocol
Взаимодействие сервисов через Advanced Message
 Queuing Protocol
 
Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"
Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"
Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"
 
Как мы строили аналитическую платформу на несколько миллиардов событии в месяц
Как мы строили аналитическую платформу на несколько миллиардов событии в месяцКак мы строили аналитическую платформу на несколько миллиардов событии в месяц
Как мы строили аналитическую платформу на несколько миллиардов событии в месяц
 
Александр Крижановский (NatSys Lab)
Александр Крижановский (NatSys Lab)Александр Крижановский (NatSys Lab)
Александр Крижановский (NatSys Lab)
 
Cеминар: Работа с технологиями - Основы хостинга сайтов
Cеминар: Работа с технологиями - Основы хостинга сайтовCеминар: Работа с технологиями - Основы хостинга сайтов
Cеминар: Работа с технологиями - Основы хостинга сайтов
 
Лекция 3. Распределённая файловая система HDFS
Лекция 3. Распределённая файловая система HDFSЛекция 3. Распределённая файловая система HDFS
Лекция 3. Распределённая файловая система HDFS
 
Использование AMQP в основе архитектуры бэкенда для мобильного приложения
Использование AMQP в основе архитектуры бэкенда для мобильного приложенияИспользование AMQP в основе архитектуры бэкенда для мобильного приложения
Использование AMQP в основе архитектуры бэкенда для мобильного приложения
 
Mafiozi Performance2 1
Mafiozi Performance2 1Mafiozi Performance2 1
Mafiozi Performance2 1
 

Similar to WapStart: Как показывать 200 миллионов баннеров ежедневно и быть готовым показать миллиард.

«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co
«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co
«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Coit-people
 
Highload++2013: TopGun - архитектура терабитной платформы DPI
Highload++2013: TopGun - архитектура терабитной платформы DPIHighload++2013: TopGun - архитектура терабитной платформы DPI
Highload++2013: TopGun - архитектура терабитной платформы DPILeonid Yuriev
 
Дмитрий Куликовский, Алексей Лавренюк - Построение кластеров, нагрузочное тес...
Дмитрий Куликовский, Алексей Лавренюк - Построение кластеров, нагрузочное тес...Дмитрий Куликовский, Алексей Лавренюк - Построение кластеров, нагрузочное тес...
Дмитрий Куликовский, Алексей Лавренюк - Построение кластеров, нагрузочное тес...Yandex
 
Дмитрий Куликовский - Построение кластеров, нагрузочное тестирование, capacit...
Дмитрий Куликовский - Построение кластеров, нагрузочное тестирование, capacit...Дмитрий Куликовский - Построение кластеров, нагрузочное тестирование, capacit...
Дмитрий Куликовский - Построение кластеров, нагрузочное тестирование, capacit...Yandex
 
Разбор реального кейса построения гибридного облака.
Разбор реального кейса построения гибридного облака.Разбор реального кейса построения гибридного облака.
Разбор реального кейса построения гибридного облака.Максим Захаренко
 
Tech Talks @NSU: Что такое Highload? Секреты высокой нагрузки.
Tech Talks @NSU: Что такое Highload? Секреты высокой нагрузки.Tech Talks @NSU: Что такое Highload? Секреты высокой нагрузки.
Tech Talks @NSU: Что такое Highload? Секреты высокой нагрузки.Tech Talks @NSU
 
Что такое Highload? Секреты высокой нагрузки
Что такое Highload? Секреты высокой нагрузкиЧто такое Highload? Секреты высокой нагрузки
Что такое Highload? Секреты высокой нагрузкиTech Talks @NSU
 
Software craftsmanship 12 online highload systems
Software craftsmanship 12 online highload systemsSoftware craftsmanship 12 online highload systems
Software craftsmanship 12 online highload systemsPavel Veinik
 
Как жить в облаке почти без админов: мониторинг и эксплуатация сотен виртуаль...
Как жить в облаке почти без админов: мониторинг и эксплуатация сотен виртуаль...Как жить в облаке почти без админов: мониторинг и эксплуатация сотен виртуаль...
Как жить в облаке почти без админов: мониторинг и эксплуатация сотен виртуаль...Uptime Community
 
Как жить в облаке почти без админов: мониторинг и эксплуатация сотен виртуаль...
Как жить в облаке почти без админов: мониторинг и эксплуатация сотен виртуаль...Как жить в облаке почти без админов: мониторинг и эксплуатация сотен виртуаль...
Как жить в облаке почти без админов: мониторинг и эксплуатация сотен виртуаль...Uptime community
 
доклад на вмк 15.10.2015
доклад на вмк 15.10.2015доклад на вмк 15.10.2015
доклад на вмк 15.10.2015Alexandr Petrov
 
Как превратить Openstack Swift в хранилище для высоких нагрузок разных типов,...
Как превратить Openstack Swift в хранилище для высоких нагрузок разных типов,...Как превратить Openstack Swift в хранилище для высоких нагрузок разных типов,...
Как превратить Openstack Swift в хранилище для высоких нагрузок разных типов,...Ontico
 
Dmytro Nemesh "Building the perfect infrastructure with Kubernetes"
Dmytro Nemesh "Building the perfect infrastructure with Kubernetes"Dmytro Nemesh "Building the perfect infrastructure with Kubernetes"
Dmytro Nemesh "Building the perfect infrastructure with Kubernetes"Fwdays
 
Обзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий НасретдиновОбзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий НасретдиновOntico
 
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...Anton Baranov
 
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...Ontico
 
10 HappyDev-lite'14 Иван Погудин, Анатолий Никулин. Решение задач, связанных...
10 HappyDev-lite'14 Иван Погудин, Анатолий Никулин. Решение задач, связанных...10 HappyDev-lite'14 Иван Погудин, Анатолий Никулин. Решение задач, связанных...
10 HappyDev-lite'14 Иван Погудин, Анатолий Никулин. Решение задач, связанных...HappyDev
 
AVITO. Решаем проблемы по мере их поступления. Стачка 2013
AVITO. Решаем проблемы по мере их поступления. Стачка 2013AVITO. Решаем проблемы по мере их поступления. Стачка 2013
AVITO. Решаем проблемы по мере их поступления. Стачка 2013Roman Pavlushko
 

Similar to WapStart: Как показывать 200 миллионов баннеров ежедневно и быть готовым показать миллиард. (20)

«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co
«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co
«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co
 
Highload++2013: TopGun - архитектура терабитной платформы DPI
Highload++2013: TopGun - архитектура терабитной платформы DPIHighload++2013: TopGun - архитектура терабитной платформы DPI
Highload++2013: TopGun - архитектура терабитной платформы DPI
 
Дмитрий Куликовский, Алексей Лавренюк - Построение кластеров, нагрузочное тес...
Дмитрий Куликовский, Алексей Лавренюк - Построение кластеров, нагрузочное тес...Дмитрий Куликовский, Алексей Лавренюк - Построение кластеров, нагрузочное тес...
Дмитрий Куликовский, Алексей Лавренюк - Построение кластеров, нагрузочное тес...
 
Дмитрий Куликовский - Построение кластеров, нагрузочное тестирование, capacit...
Дмитрий Куликовский - Построение кластеров, нагрузочное тестирование, capacit...Дмитрий Куликовский - Построение кластеров, нагрузочное тестирование, capacit...
Дмитрий Куликовский - Построение кластеров, нагрузочное тестирование, capacit...
 
Разбор реального кейса построения гибридного облака.
Разбор реального кейса построения гибридного облака.Разбор реального кейса построения гибридного облака.
Разбор реального кейса построения гибридного облака.
 
Tech Talks @NSU: Что такое Highload? Секреты высокой нагрузки.
Tech Talks @NSU: Что такое Highload? Секреты высокой нагрузки.Tech Talks @NSU: Что такое Highload? Секреты высокой нагрузки.
Tech Talks @NSU: Что такое Highload? Секреты высокой нагрузки.
 
Что такое Highload? Секреты высокой нагрузки
Что такое Highload? Секреты высокой нагрузкиЧто такое Highload? Секреты высокой нагрузки
Что такое Highload? Секреты высокой нагрузки
 
Software craftsmanship 12 online highload systems
Software craftsmanship 12 online highload systemsSoftware craftsmanship 12 online highload systems
Software craftsmanship 12 online highload systems
 
Как жить в облаке почти без админов: мониторинг и эксплуатация сотен виртуаль...
Как жить в облаке почти без админов: мониторинг и эксплуатация сотен виртуаль...Как жить в облаке почти без админов: мониторинг и эксплуатация сотен виртуаль...
Как жить в облаке почти без админов: мониторинг и эксплуатация сотен виртуаль...
 
Как жить в облаке почти без админов: мониторинг и эксплуатация сотен виртуаль...
Как жить в облаке почти без админов: мониторинг и эксплуатация сотен виртуаль...Как жить в облаке почти без админов: мониторинг и эксплуатация сотен виртуаль...
Как жить в облаке почти без админов: мониторинг и эксплуатация сотен виртуаль...
 
доклад на вмк 15.10.2015
доклад на вмк 15.10.2015доклад на вмк 15.10.2015
доклад на вмк 15.10.2015
 
Как превратить Openstack Swift в хранилище для высоких нагрузок разных типов,...
Как превратить Openstack Swift в хранилище для высоких нагрузок разных типов,...Как превратить Openstack Swift в хранилище для высоких нагрузок разных типов,...
Как превратить Openstack Swift в хранилище для высоких нагрузок разных типов,...
 
Dmytro Nemesh "Building the perfect infrastructure with Kubernetes"
Dmytro Nemesh "Building the perfect infrastructure with Kubernetes"Dmytro Nemesh "Building the perfect infrastructure with Kubernetes"
Dmytro Nemesh "Building the perfect infrastructure with Kubernetes"
 
Обзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий НасретдиновОбзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий Насретдинов
 
D do s survival guide
D do s survival guideD do s survival guide
D do s survival guide
 
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
 
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
 
10 HappyDev-lite'14 Иван Погудин, Анатолий Никулин. Решение задач, связанных...
10 HappyDev-lite'14 Иван Погудин, Анатолий Никулин. Решение задач, связанных...10 HappyDev-lite'14 Иван Погудин, Анатолий Никулин. Решение задач, связанных...
10 HappyDev-lite'14 Иван Погудин, Анатолий Никулин. Решение задач, связанных...
 
Highload 2011-demona
Highload 2011-demonaHighload 2011-demona
Highload 2011-demona
 
AVITO. Решаем проблемы по мере их поступления. Стачка 2013
AVITO. Решаем проблемы по мере их поступления. Стачка 2013AVITO. Решаем проблемы по мере их поступления. Стачка 2013
AVITO. Решаем проблемы по мере их поступления. Стачка 2013
 

More from Procontent.Ru Magazine

MoCO 2013: Мобильное государство, - Дмитрий Сатин, Минкомсвязь РФ
MoCO 2013: Мобильное государство, - Дмитрий Сатин, Минкомсвязь РФMoCO 2013: Мобильное государство, - Дмитрий Сатин, Минкомсвязь РФ
MoCO 2013: Мобильное государство, - Дмитрий Сатин, Минкомсвязь РФProcontent.Ru Magazine
 
MoCO 2013: "Потребности рынка VAS в новых бизнес-моделях. Проблемы и решения"...
MoCO 2013: "Потребности рынка VAS в новых бизнес-моделях. Проблемы и решения"...MoCO 2013: "Потребности рынка VAS в новых бизнес-моделях. Проблемы и решения"...
MoCO 2013: "Потребности рынка VAS в новых бизнес-моделях. Проблемы и решения"...Procontent.Ru Magazine
 
MoCO 2013: Рынок VAS в России: взгляд аналитика - Оксана Панкратова, AC&M
MoCO 2013: Рынок VAS в России: взгляд аналитика - Оксана Панкратова, AC&MMoCO 2013: Рынок VAS в России: взгляд аналитика - Оксана Панкратова, AC&M
MoCO 2013: Рынок VAS в России: взгляд аналитика - Оксана Панкратова, AC&MProcontent.Ru Magazine
 
российский рынок смартфонов и телефонов в 1 q 2013
российский рынок смартфонов и телефонов в 1 q 2013российский рынок смартфонов и телефонов в 1 q 2013
российский рынок смартфонов и телефонов в 1 q 2013Procontent.Ru Magazine
 
Рынок мобильных приложений в России и мире
Рынок мобильных приложений в России и миреРынок мобильных приложений в России и мире
Рынок мобильных приложений в России и миреProcontent.Ru Magazine
 
МТС: Российский рынок смартфонов и телефонов в 2012 году
МТС: Российский рынок смартфонов и телефонов в 2012 годуМТС: Российский рынок смартфонов и телефонов в 2012 году
МТС: Российский рынок смартфонов и телефонов в 2012 годуProcontent.Ru Magazine
 
Российский рынок портативной электроники - оценки Евросети
Российский рынок портативной электроники - оценки ЕвросетиРоссийский рынок портативной электроники - оценки Евросети
Российский рынок портативной электроники - оценки ЕвросетиProcontent.Ru Magazine
 
J'son&Partners: Российский рынок дистанционных финансовых сервисов
J'son&Partners: Российский рынок дистанционных финансовых сервисовJ'son&Partners: Российский рынок дистанционных финансовых сервисов
J'son&Partners: Российский рынок дистанционных финансовых сервисовProcontent.Ru Magazine
 
J'son&Partners: российский рынок мобильного интернет-доступа по итогам 2012 года
J'son&Partners: российский рынок мобильного интернет-доступа по итогам 2012 годаJ'son&Partners: российский рынок мобильного интернет-доступа по итогам 2012 года
J'son&Partners: российский рынок мобильного интернет-доступа по итогам 2012 годаProcontent.Ru Magazine
 
"Мировой и российский рынки инфраструктуры 4G" - аналитический отчет J'son&Pa...
"Мировой и российский рынки инфраструктуры 4G" - аналитический отчет J'son&Pa..."Мировой и российский рынки инфраструктуры 4G" - аналитический отчет J'son&Pa...
"Мировой и российский рынки инфраструктуры 4G" - аналитический отчет J'son&Pa...Procontent.Ru Magazine
 
«Sprinlke - how to float in an ocean of games» - Mediocre's presentation at ...
 «Sprinlke - how to float in an ocean of games» - Mediocre's presentation at ... «Sprinlke - how to float in an ocean of games» - Mediocre's presentation at ...
«Sprinlke - how to float in an ocean of games» - Mediocre's presentation at ...Procontent.Ru Magazine
 
Тенденции мобильного рынка: think global, act local - Дарья Трушкина, вице-пр...
Тенденции мобильного рынка: think global, act local - Дарья Трушкина, вице-пр...Тенденции мобильного рынка: think global, act local - Дарья Трушкина, вице-пр...
Тенденции мобильного рынка: think global, act local - Дарья Трушкина, вице-пр...Procontent.Ru Magazine
 
Подводные камни» сертификации Windows Phone и Windows 8 приложений - Александ...
Подводные камни» сертификации Windows Phone и Windows 8 приложений - Александ...Подводные камни» сертификации Windows Phone и Windows 8 приложений - Александ...
Подводные камни» сертификации Windows Phone и Windows 8 приложений - Александ...Procontent.Ru Magazine
 
Особенности быстрого тестирования мобильных интерфейсов - Антон Алябьев, UI D...
Особенности быстрого тестирования мобильных интерфейсов - Антон Алябьев, UI D...Особенности быстрого тестирования мобильных интерфейсов - Антон Алябьев, UI D...
Особенности быстрого тестирования мобильных интерфейсов - Антон Алябьев, UI D...Procontent.Ru Magazine
 
Недвусмысленные намеки на Second Screen - Александр Вяткин, Account Director,...
Недвусмысленные намеки на Second Screen - Александр Вяткин, Account Director,...Недвусмысленные намеки на Second Screen - Александр Вяткин, Account Director,...
Недвусмысленные намеки на Second Screen - Александр Вяткин, Account Director,...Procontent.Ru Magazine
 
Типовые ошибки в iOS приложениях. Классификация ошибок в iOS приложении. - Дм...
Типовые ошибки в iOS приложениях. Классификация ошибок в iOS приложении. - Дм...Типовые ошибки в iOS приложениях. Классификация ошибок в iOS приложении. - Дм...
Типовые ошибки в iOS приложениях. Классификация ошибок в iOS приложении. - Дм...Procontent.Ru Magazine
 
"Каким должен быть контент для современных мобильных устройств?" - Александр…
"Каким должен быть контент для современных мобильных устройств?" - Александр…"Каким должен быть контент для современных мобильных устройств?" - Александр…
"Каким должен быть контент для современных мобильных устройств?" - Александр…Procontent.Ru Magazine
 

More from Procontent.Ru Magazine (20)

Android fragmentation 2013
Android fragmentation 2013Android fragmentation 2013
Android fragmentation 2013
 
MoCO 2013: Мобильное государство, - Дмитрий Сатин, Минкомсвязь РФ
MoCO 2013: Мобильное государство, - Дмитрий Сатин, Минкомсвязь РФMoCO 2013: Мобильное государство, - Дмитрий Сатин, Минкомсвязь РФ
MoCO 2013: Мобильное государство, - Дмитрий Сатин, Минкомсвязь РФ
 
MoCO 2013: "Потребности рынка VAS в новых бизнес-моделях. Проблемы и решения"...
MoCO 2013: "Потребности рынка VAS в новых бизнес-моделях. Проблемы и решения"...MoCO 2013: "Потребности рынка VAS в новых бизнес-моделях. Проблемы и решения"...
MoCO 2013: "Потребности рынка VAS в новых бизнес-моделях. Проблемы и решения"...
 
MoCO 2013: Рынок VAS в России: взгляд аналитика - Оксана Панкратова, AC&M
MoCO 2013: Рынок VAS в России: взгляд аналитика - Оксана Панкратова, AC&MMoCO 2013: Рынок VAS в России: взгляд аналитика - Оксана Панкратова, AC&M
MoCO 2013: Рынок VAS в России: взгляд аналитика - Оксана Панкратова, AC&M
 
российский рынок смартфонов и телефонов в 1 q 2013
российский рынок смартфонов и телефонов в 1 q 2013российский рынок смартфонов и телефонов в 1 q 2013
российский рынок смартфонов и телефонов в 1 q 2013
 
Рынок мобильных приложений в России и мире
Рынок мобильных приложений в России и миреРынок мобильных приложений в России и мире
Рынок мобильных приложений в России и мире
 
МТС: Российский рынок смартфонов и телефонов в 2012 году
МТС: Российский рынок смартфонов и телефонов в 2012 годуМТС: Российский рынок смартфонов и телефонов в 2012 году
МТС: Российский рынок смартфонов и телефонов в 2012 году
 
Российский рынок портативной электроники - оценки Евросети
Российский рынок портативной электроники - оценки ЕвросетиРоссийский рынок портативной электроники - оценки Евросети
Российский рынок портативной электроники - оценки Евросети
 
Ac&m 4 q12_stat_eng-ukraine
Ac&m 4 q12_stat_eng-ukraineAc&m 4 q12_stat_eng-ukraine
Ac&m 4 q12_stat_eng-ukraine
 
Ac&m 4 q12_stat_eng
Ac&m 4 q12_stat_engAc&m 4 q12_stat_eng
Ac&m 4 q12_stat_eng
 
J'son&Partners: Российский рынок дистанционных финансовых сервисов
J'son&Partners: Российский рынок дистанционных финансовых сервисовJ'son&Partners: Российский рынок дистанционных финансовых сервисов
J'son&Partners: Российский рынок дистанционных финансовых сервисов
 
J'son&Partners: российский рынок мобильного интернет-доступа по итогам 2012 года
J'son&Partners: российский рынок мобильного интернет-доступа по итогам 2012 годаJ'son&Partners: российский рынок мобильного интернет-доступа по итогам 2012 года
J'son&Partners: российский рынок мобильного интернет-доступа по итогам 2012 года
 
"Мировой и российский рынки инфраструктуры 4G" - аналитический отчет J'son&Pa...
"Мировой и российский рынки инфраструктуры 4G" - аналитический отчет J'son&Pa..."Мировой и российский рынки инфраструктуры 4G" - аналитический отчет J'son&Pa...
"Мировой и российский рынки инфраструктуры 4G" - аналитический отчет J'son&Pa...
 
«Sprinlke - how to float in an ocean of games» - Mediocre's presentation at ...
 «Sprinlke - how to float in an ocean of games» - Mediocre's presentation at ... «Sprinlke - how to float in an ocean of games» - Mediocre's presentation at ...
«Sprinlke - how to float in an ocean of games» - Mediocre's presentation at ...
 
Тенденции мобильного рынка: think global, act local - Дарья Трушкина, вице-пр...
Тенденции мобильного рынка: think global, act local - Дарья Трушкина, вице-пр...Тенденции мобильного рынка: think global, act local - Дарья Трушкина, вице-пр...
Тенденции мобильного рынка: think global, act local - Дарья Трушкина, вице-пр...
 
Подводные камни» сертификации Windows Phone и Windows 8 приложений - Александ...
Подводные камни» сертификации Windows Phone и Windows 8 приложений - Александ...Подводные камни» сертификации Windows Phone и Windows 8 приложений - Александ...
Подводные камни» сертификации Windows Phone и Windows 8 приложений - Александ...
 
Особенности быстрого тестирования мобильных интерфейсов - Антон Алябьев, UI D...
Особенности быстрого тестирования мобильных интерфейсов - Антон Алябьев, UI D...Особенности быстрого тестирования мобильных интерфейсов - Антон Алябьев, UI D...
Особенности быстрого тестирования мобильных интерфейсов - Антон Алябьев, UI D...
 
Недвусмысленные намеки на Second Screen - Александр Вяткин, Account Director,...
Недвусмысленные намеки на Second Screen - Александр Вяткин, Account Director,...Недвусмысленные намеки на Second Screen - Александр Вяткин, Account Director,...
Недвусмысленные намеки на Second Screen - Александр Вяткин, Account Director,...
 
Типовые ошибки в iOS приложениях. Классификация ошибок в iOS приложении. - Дм...
Типовые ошибки в iOS приложениях. Классификация ошибок в iOS приложении. - Дм...Типовые ошибки в iOS приложениях. Классификация ошибок в iOS приложении. - Дм...
Типовые ошибки в iOS приложениях. Классификация ошибок в iOS приложении. - Дм...
 
"Каким должен быть контент для современных мобильных устройств?" - Александр…
"Каким должен быть контент для современных мобильных устройств?" - Александр…"Каким должен быть контент для современных мобильных устройств?" - Александр…
"Каким должен быть контент для современных мобильных устройств?" - Александр…
 

WapStart: Как показывать 200 миллионов баннеров ежедневно и быть готовым показать миллиард.

  • 1. Как показывать 200 миллионов баннеров ежедневно и быть готовым показать миллиард. Евгений Коковихин, руководитель отдела разработки Wapstart. Разработчик баннерной сети http://plus1.wapstart.ru/.
  • 2. О компании WapStart WapStart – владелец крупнейшей в России мобильной рекламной сети Plus1 WapStart и наиболее полного и популярного в России каталога мобильных сайтов Top WapStart. Компания оказывает услуги тысячам издателей мобильных сайтов и приложений. Ежемесячная рекламная емкость WapStart – свыше 4,2 млрд. показов, число уникальных посетителей – более 25 миллионов. Компания WapStart владеет передовыми технологиями таргетинга и анализа аудитории, позволяющими проводить рекламные кампании в мобильной среде с высокой рентабельностью инвестиций.
  • 3. Marketing is so marketing
  • 5. Задача •  Будьте готовы показать миллиард. //это примерно 13-15K rps.
  • 6. Год назад у нас было так front1 farm1 farm2 farm3 farm4 … farmN front2 Master-db Slave-db Cache 1 Cache 2 Cache 3
  • 7. Идеи •  Все должно быть локально.
  • 8. Идеи •  Пользователь должен всегда попадать на один и тот же бекенд (так как у нас все локально).
  • 9. Идеи •  Ротатор (баннерная крутилка / php-fpm) не должен ходить в базу.
  • 10. Идеи •  Нужна какая-то умная штука для синхронизации.
  • 13. Реализация: •  Для nginx есть модуль persistent upstream https://github.com/replay/ngx_http_consistent_hash •  Мы его доработали https://github.com/WapStart/ngx_http_consistent_hash Пользователи должны попадать в один и тот же upstream include /usr/local/etc/nginx/fastcgi_params; fastcgi_param PATH_TRANSLATED $document_root$fastcgi_script_name; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param CONSISTENT_HASH $consistentHash; fastcgi_param GEOIP_COUNTRY_CODE $geoip_country_code; fastcgi_pass consistent-upstream;
  • 14. Реализация: •  Выпиливаем из конфигов подключение к СУБД и отлаживаем. Безбазье
  • 15. Реализация: •  Все апстримы ходят исключительно в локальный кеш. •  Делаем центр, из которого будут наполняться кеши на разных серверах. •  Интерфейс неизменный. При этом читаем всегда из локального кеша, а пишем во все. •  Пишем только из центра. Преднаполняторы кеша
  • 17. Реализация: Клики; теория перекрутов •  Показы продолжались после окончания лимитов. •  Пользователь что-то изменил, но это подействовало не сразу. •  Показали до окончания лимитов, но кликнули после.
  • 18. Реализация: Клики; теория перекрутов •  Среднюю величину перекрутов любого рода можно предсказать. •  Время реакции тоже предсказуемо. //Осталось лишь согласовать с бизнесом )
  • 19. Реализация: Клики; обработка в фоне •  Было: Event -> database. •  Стало: Event -> file queue -> logAnalyzer -> database. •  Цепочка стала более длинной, время реакции увеличилось. Решение: •  Предсказываем события.
  • 23. Масштабирование на уровне дата-центров Можно выбрать дорогой дата-центр, а можно быть готовым к его падению •  Пишем LowCost, подразумеваем Hetzner. •  На один рубль обрабатываем в три раза больше трафика! •  Не забывайте про VAT (еще дешевле). •  Пока стандартная конфигурация вас устраивает – все очень дешево.
  • 24. Масштабирование на уровне дата-центров Hetzner: проблемы и ограничения
  • 25. Масштабирование на уровне дата-центров •  Не более 6 серверов в «кластере». •  Техподдержка не на вашей стороне. •  Иногда теряются пакеты. •  Иногда «утекает» база паролей и кредиток :) •  Возникают спонтанные проблемы с сетью. •  Не совсем «серверное» железо. Решение •  Приложение должно быть готовым к кратковременному отсутствию связи. •  Если упадет «датацентр» целиком, мы должны продолжить работу. Hetzner: проблемы и ограничения
  • 26. Масштабирование на уровне дата-центров. Мониторинг.
  • 27. Масштабирование на уровне дата-центров Мониторинг •  Трафик/логи.
  • 28. Масштабирование на уровне дата-центров Мониторинг •  CPU load.
  • 29. Масштабирование на уровне дата-центров Мониторинг должен быть распределенным •  Что будет, если упадет сервер с мониторингом? •  Каждый «узел» должен наблюдаться как минимум из двух мест. •  Особо критичные триггеры должны отправляться по смс.
  • 30. Масштабирование на уровне дата-центров Как делить трафик?
  • 31. Масштабирование на уровне дата-центров Как делить трафик: DNS •  Измеряем трафик по подсетям или странам. •  Создаем view в bind (google://named views). •  Ждем. Ограничения •  Иногда dns сервер клиента находится за пределами его сети. •  DNS рассасывается не моментально. •  Порции трафика выделяются по подсетям => иногда они слишком большие, а иногда – маленькие.
  • 32. Масштабирование на уровне дата-центров Как делить трафик: http permanent rewrites •  Находим какой-нибудь критерий деления (площадка, user- agent, etc). •  В nginx rewrite … permanent. •  Изменения вступают в силу сразу. Ограничения •  Применимо только client-to-server подключений. •  Лишняя нагрузка на фронт-«делитель». •  Повышенное время ответа клиенту.
  • 33. Масштабирование на уровне дата-центров Как делить трафик: поддомены для крупных партнеров •  Для крупных server-to-server партнеров можно завести отдельный субдомен partnerName.ro.plus1.wapstart.ru и заставить гнать траффик на него. •  Изменяем dns и ждем. Ограничения •  Применимо только для крупных партнеров. •  Время реакции DNS.
  • 34. Масштабирование на уровне дата-центров Оставшиеся проблемы VS
  • 35. Масштабирование на уровне дата-центров Очереди •  Списки баннеров доставляются шарманкой, но «срочные изменения» мы пока доставлять не умеем. •  Аггрегаторы кликов ходят в базу напрямую. Решение •  Нужен AMQP.
  • 36. Масштабирование на уровне дата-центров Смерть / потеря связи •  Дата-центр некоторое время может жить без связи с «центром». •  Деньги не обсчитываются => возможны перекруты. •  Показывать можно не все баннеры. •  Дата-центр может умереть навсегда.
  • 37. Масштабирование на уровне дата-центров Плюсы
  • 38. Масштабирование на уровне дата-центров Плюсы •  Легкое масштабирование. •  Возможность разместить сервера ближе к пользователю (aka CDN). •  Возможность менять конфигурацию/расположение серверов без существенных проблем.
  • 39. Переезд Задача – из-за форс-мажора надо оперативно поменять основной дата-центр •  Едем ночью. •  Трафик к крутилке может работать без субд и линейно масштабирутся. •  Админку перевозим с минутным даунтаймом.
  • 41. Контакты. •  https://wapstart.ru/ •  https://github.com/WapStart •  dev@co.wapstart.ru •  https://www.facebook.com/WapStart •  dovg@dovg.ru •  https://github.com/dovg •  https://vk.com/ekokovikhin