SlideShare a Scribd company logo
1 of 21
Download to read offline
Badoo Desktop:
оптимизация приложения на
миллион юзеров онлайн

        Аверин Сергей,
        Badoo
                   —  это:
• Социальная сеть для знакомств с новыми людьми
• В Top-200 Alexa c 2007 года
• 115 миллионов зарегистрированных пользователей
• 10 миллионов пользователей в день
• 1,5 миллиона фотографий загружаются ежедневно
                   —  это:
• 30 тыс. запросов/с к PHP backends
• MySQL, PHP, C/C++, Linux, nginx, PHP-FPM, memcached
• Много своего
Badoo  Desktop
• Бесплатная Win/Mac программа
• Поддерживает ваш онлайн-статус
• Уведомления о новых событиях
• Дает нам ваше местоположение
• Удобный доступ на сайт
Badoo  Desktop
• 1,7 миллиона юзеров в месяц
• 680 тыс. постоянных коннектов
• 17 тыс. запросов/с к PHP backends
Поиск тех, кто неподалеку
Сценарий работы

  Соединяемся с главным фронтендом
  Он отправляет нас на нужный фронтенд
  Создаем/восстанавливаем сессию
  Получаем настройки, перевод и меню
  Показываем уведомления
  Посылаем данные о wi-fi и скринсейвере
Набор команд

Из программы:
  • Создание/Восстановление сессии
  • Авторизация
  • Данные о wi-fi сетях, работе скрин-сейвера
В программу:
  • Ваш id сессии, язык и статус авторизации
  • Настройки, перевод, меню
  • Уведомления
Server-side архитектура
Принципы работы

Программы:
  • Протокол асинхронный
  • Не требует ответа на большинство команд
  • Как можно более простые протокол и логика программ
Server-side:
  • При ошибке не пытаемся восстановиться, а
    прерываем обработку команды
  • Нам не нужна 100% синхронность данных
Специфика приложения

• Маленький набор и размер команд
• Большое количество постоянных соединений
• Большой поток команд
• Обработка одной команды занимает мало времени
• Время ответа не так критично, как для веб-страниц
• Ошибки на серверной стороне программы сильно не
  расстраивают
Из беты в устойчивую систему
Оптимизации

Профилирование и поиск тормозов
• Top и профилирование мало результативны
• Можно улучшить, изменив логику работы
• Real-time профилирование (PINBA)
• PINBA: мониторинг приложения, а не железок
Оптимизации

Железно-площадочные оптимизации
• 4 сетевые карты
• Минимум конкуренции
• MemCacheDB -> Redis -> MySQL+HandlerSocket
• Жесткие тайм-ауты
• pconnect
Оптимизации

Борьба с положительной обратной связью
• Сам себе DDOS’ер
• Прогрессивные паузы между командами/реконнектами
• Реконнект на свой сервер
Оптимизации

Client-side кеширование и логика
• Программы отслеживают время обновления статуса
• Реже обновляют статус при скрин-сейвере
• Дружат с медленными соединениями
Оптимизации

Убираем лишнюю нагрузку
• Скешировали все, что можно
• Ввели rate-limiting обновления данных
• Не пишем, если не поменялось
Оптимизации

Пороговые срабатывания
• Порог на изменение сетевой среды
   – Для медленных изменений принудительно обновляем
     раз в 10 минут
• Порог на вычисление города по координатам
Оптимизации

Асинхронность и пост-обработка
• Ответ на команду как можно раньше
• Все сервисные задачи обрабатываем отдельно
• Синхронизация запуска сервисных задач
Заключение

• Мониторинг и профилирование
• Необходимы
• Если вы выпилили все медленые места в php-коде, вы
  сделали 1/7
• Меняем логику работы — улучшаем в 10 раз
• Предусмотрите все возможные проблемы заранее
• We build wheels while existing suck or don't exist
Спасибо!

        Вопросы?


        Контакты:
http://twitter.com/ryba_xek
        s@averin.ru
  http://averin.ru/slides/

More Related Content

What's hot

Історія декількох проектів та що в них пішло не так - UA Mobile 2019
Історія декількох проектів та що в них пішло не так - UA Mobile 2019Історія декількох проектів та що в них пішло не так - UA Mobile 2019
Історія декількох проектів та що в них пішло не так - UA Mobile 2019UA Mobile
 
SECON'2016. Аверин Сергей, Javascript-фреймворки:
 должен остаться только один
SECON'2016. Аверин Сергей, Javascript-фреймворки:
 должен остаться только одинSECON'2016. Аверин Сергей, Javascript-фреймворки:
 должен остаться только один
SECON'2016. Аверин Сергей, Javascript-фреймворки:
 должен остаться только одинSECON
 
Тестируем мобильное приложение в суровых реалиях Интернета
Тестируем мобильное приложение в суровых реалиях ИнтернетаТестируем мобильное приложение в суровых реалиях Интернета
Тестируем мобильное приложение в суровых реалиях ИнтернетаSQALab
 
Конструктор / Денис Паясь (Яндекс)
Конструктор / Денис Паясь (Яндекс)Конструктор / Денис Паясь (Яндекс)
Конструктор / Денис Паясь (Яндекс)Ontico
 
"Разрушаем .NET мифы" Сергей Калинец
"Разрушаем .NET мифы" Сергей Калинец"Разрушаем .NET мифы" Сергей Калинец
"Разрушаем .NET мифы" Сергей КалинецFwdays
 
LuaJIT как основа для сервера приложений - проблемы и решения / Игорь Эрлих (...
LuaJIT как основа для сервера приложений - проблемы и решения / Игорь Эрлих (...LuaJIT как основа для сервера приложений - проблемы и решения / Игорь Эрлих (...
LuaJIT как основа для сервера приложений - проблемы и решения / Игорь Эрлих (...Ontico
 
"Архитектурный шаблон Reflex - новый подход к разработке клиент-серверных при...
"Архитектурный шаблон Reflex - новый подход к разработке клиент-серверных при..."Архитектурный шаблон Reflex - новый подход к разработке клиент-серверных при...
"Архитектурный шаблон Reflex - новый подход к разработке клиент-серверных при...Fwdays
 
Пакетный менеджер CrossPM: упрощаем сложные зависимости | Александр Ковалев
Пакетный менеджер CrossPM: упрощаем сложные зависимости | Александр КовалевПакетный менеджер CrossPM: упрощаем сложные зависимости | Александр Ковалев
Пакетный менеджер CrossPM: упрощаем сложные зависимости | Александр КовалевPositive Hack Days
 
Как FB, Apple и Google разрушают традиции в компьютерном бизнесе, и почему эт...
Как FB, Apple и Google разрушают традиции в компьютерном бизнесе, и почему эт...Как FB, Apple и Google разрушают традиции в компьютерном бизнесе, и почему эт...
Как FB, Apple и Google разрушают традиции в компьютерном бизнесе, и почему эт...Ontico
 
Mind map для «Архитектура А/Б тестирования: сделай сам»
Mind map для «Архитектура А/Б тестирования: сделай сам»Mind map для «Архитектура А/Б тестирования: сделай сам»
Mind map для «Архитектура А/Б тестирования: сделай сам»Sergey Xek
 
Как мы данные готовили ORM и все-все-все в приложении Почта Mail.Ru / Кирилл ...
Как мы данные готовили ORM и все-все-все в приложении Почта Mail.Ru / Кирилл ...Как мы данные готовили ORM и все-все-все в приложении Почта Mail.Ru / Кирилл ...
Как мы данные готовили ORM и все-все-все в приложении Почта Mail.Ru / Кирилл ...Ontico
 
«Детские болезни live-чата» Ольга Сентемова, Тинькофф Банк
«Детские болезни live-чата» Ольга Сентемова, Тинькофф Банк«Детские болезни live-чата» Ольга Сентемова, Тинькофф Банк
«Детские болезни live-чата» Ольга Сентемова, Тинькофф Банкit-people
 
Быстрый рендеринг с DOM шаблонизаторами / Борис Каплуновский (aviasales.ru)
Быстрый рендеринг с DOM шаблонизаторами / Борис Каплуновский (aviasales.ru)Быстрый рендеринг с DOM шаблонизаторами / Борис Каплуновский (aviasales.ru)
Быстрый рендеринг с DOM шаблонизаторами / Борис Каплуновский (aviasales.ru)Ontico
 
Денис Паясь
Денис ПаясьДенис Паясь
Денис ПаясьCodeFest
 
Как мы делали оффлайн-карты под Windows Phone — Александр Волохин, 2ГИС
Как мы делали оффлайн-карты под Windows Phone — Александр Волохин, 2ГИСКак мы делали оффлайн-карты под Windows Phone — Александр Волохин, 2ГИС
Как мы делали оффлайн-карты под Windows Phone — Александр Волохин, 2ГИС2ГИС Технологии
 
SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура...
SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура...SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура...
SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура...SECON
 
Александр Афенов
Александр АфеновАлександр Афенов
Александр АфеновCodeFest
 
"Новые возможности MySQL 5.7"
"Новые возможности MySQL 5.7""Новые возможности MySQL 5.7"
"Новые возможности MySQL 5.7"Badoo Development
 
Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)
Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)
Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)Ontico
 

What's hot (19)

Історія декількох проектів та що в них пішло не так - UA Mobile 2019
Історія декількох проектів та що в них пішло не так - UA Mobile 2019Історія декількох проектів та що в них пішло не так - UA Mobile 2019
Історія декількох проектів та що в них пішло не так - UA Mobile 2019
 
SECON'2016. Аверин Сергей, Javascript-фреймворки:
 должен остаться только один
SECON'2016. Аверин Сергей, Javascript-фреймворки:
 должен остаться только одинSECON'2016. Аверин Сергей, Javascript-фреймворки:
 должен остаться только один
SECON'2016. Аверин Сергей, Javascript-фреймворки:
 должен остаться только один
 
Тестируем мобильное приложение в суровых реалиях Интернета
Тестируем мобильное приложение в суровых реалиях ИнтернетаТестируем мобильное приложение в суровых реалиях Интернета
Тестируем мобильное приложение в суровых реалиях Интернета
 
Конструктор / Денис Паясь (Яндекс)
Конструктор / Денис Паясь (Яндекс)Конструктор / Денис Паясь (Яндекс)
Конструктор / Денис Паясь (Яндекс)
 
"Разрушаем .NET мифы" Сергей Калинец
"Разрушаем .NET мифы" Сергей Калинец"Разрушаем .NET мифы" Сергей Калинец
"Разрушаем .NET мифы" Сергей Калинец
 
LuaJIT как основа для сервера приложений - проблемы и решения / Игорь Эрлих (...
LuaJIT как основа для сервера приложений - проблемы и решения / Игорь Эрлих (...LuaJIT как основа для сервера приложений - проблемы и решения / Игорь Эрлих (...
LuaJIT как основа для сервера приложений - проблемы и решения / Игорь Эрлих (...
 
"Архитектурный шаблон Reflex - новый подход к разработке клиент-серверных при...
"Архитектурный шаблон Reflex - новый подход к разработке клиент-серверных при..."Архитектурный шаблон Reflex - новый подход к разработке клиент-серверных при...
"Архитектурный шаблон Reflex - новый подход к разработке клиент-серверных при...
 
Пакетный менеджер CrossPM: упрощаем сложные зависимости | Александр Ковалев
Пакетный менеджер CrossPM: упрощаем сложные зависимости | Александр КовалевПакетный менеджер CrossPM: упрощаем сложные зависимости | Александр Ковалев
Пакетный менеджер CrossPM: упрощаем сложные зависимости | Александр Ковалев
 
Как FB, Apple и Google разрушают традиции в компьютерном бизнесе, и почему эт...
Как FB, Apple и Google разрушают традиции в компьютерном бизнесе, и почему эт...Как FB, Apple и Google разрушают традиции в компьютерном бизнесе, и почему эт...
Как FB, Apple и Google разрушают традиции в компьютерном бизнесе, и почему эт...
 
Mind map для «Архитектура А/Б тестирования: сделай сам»
Mind map для «Архитектура А/Б тестирования: сделай сам»Mind map для «Архитектура А/Б тестирования: сделай сам»
Mind map для «Архитектура А/Б тестирования: сделай сам»
 
Как мы данные готовили ORM и все-все-все в приложении Почта Mail.Ru / Кирилл ...
Как мы данные готовили ORM и все-все-все в приложении Почта Mail.Ru / Кирилл ...Как мы данные готовили ORM и все-все-все в приложении Почта Mail.Ru / Кирилл ...
Как мы данные готовили ORM и все-все-все в приложении Почта Mail.Ru / Кирилл ...
 
«Детские болезни live-чата» Ольга Сентемова, Тинькофф Банк
«Детские болезни live-чата» Ольга Сентемова, Тинькофф Банк«Детские болезни live-чата» Ольга Сентемова, Тинькофф Банк
«Детские болезни live-чата» Ольга Сентемова, Тинькофф Банк
 
Быстрый рендеринг с DOM шаблонизаторами / Борис Каплуновский (aviasales.ru)
Быстрый рендеринг с DOM шаблонизаторами / Борис Каплуновский (aviasales.ru)Быстрый рендеринг с DOM шаблонизаторами / Борис Каплуновский (aviasales.ru)
Быстрый рендеринг с DOM шаблонизаторами / Борис Каплуновский (aviasales.ru)
 
Денис Паясь
Денис ПаясьДенис Паясь
Денис Паясь
 
Как мы делали оффлайн-карты под Windows Phone — Александр Волохин, 2ГИС
Как мы делали оффлайн-карты под Windows Phone — Александр Волохин, 2ГИСКак мы делали оффлайн-карты под Windows Phone — Александр Волохин, 2ГИС
Как мы делали оффлайн-карты под Windows Phone — Александр Волохин, 2ГИС
 
SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура...
SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура...SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура...
SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура...
 
Александр Афенов
Александр АфеновАлександр Афенов
Александр Афенов
 
"Новые возможности MySQL 5.7"
"Новые возможности MySQL 5.7""Новые возможности MySQL 5.7"
"Новые возможности MySQL 5.7"
 
Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)
Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)
Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)
 

Viewers also liked

IM Club: Is Google+ a Facebook Killer
IM Club: Is Google+ a Facebook KillerIM Club: Is Google+ a Facebook Killer
IM Club: Is Google+ a Facebook KillerRather Inventive
 
TEATRO DE LA SENSACIÓN Hazte socia/o con ficha de inscripción
TEATRO DE LA SENSACIÓN Hazte socia/o con ficha de inscripciónTEATRO DE LA SENSACIÓN Hazte socia/o con ficha de inscripción
TEATRO DE LA SENSACIÓN Hazte socia/o con ficha de inscripciónMiguel Muñoz de Morales
 
Tourism English 15
Tourism English 15Tourism English 15
Tourism English 15Les Davy
 
Working progress preliminary task
Working progress preliminary taskWorking progress preliminary task
Working progress preliminary taskaq101824
 
The civil war, lincoln, lee
The civil war, lincoln, leeThe civil war, lincoln, lee
The civil war, lincoln, leems_faris
 
20087067 choi mun jung
20087067  choi mun jung20087067  choi mun jung
20087067 choi mun jung문정 최
 
Panorama economy 12 aprile 2012
Panorama economy 12 aprile 2012 Panorama economy 12 aprile 2012
Panorama economy 12 aprile 2012 MeMeEsposito
 
Lermontov
LermontovLermontov
LermontovArmine
 
Dallas 2012 analysis
Dallas 2012 analysisDallas 2012 analysis
Dallas 2012 analysisSammi Wilde
 
Android Self Service Solution
Android Self Service SolutionAndroid Self Service Solution
Android Self Service SolutionLITEDA
 
Counting Atoms Spring 2012
Counting Atoms   Spring 2012Counting Atoms   Spring 2012
Counting Atoms Spring 2012jmori1
 
Wk gets social_google+
Wk gets social_google+Wk gets social_google+
Wk gets social_google+floin1856
 
9 leadership development strategies
9 leadership development strategies9 leadership development strategies
9 leadership development strategiesAbhishek Saha
 
Electrons and Chemical Bonding 2012 Day 2
Electrons and Chemical Bonding 2012 Day 2Electrons and Chemical Bonding 2012 Day 2
Electrons and Chemical Bonding 2012 Day 2jmori1
 
Meltwater Buzz Service Overview
Meltwater Buzz Service OverviewMeltwater Buzz Service Overview
Meltwater Buzz Service Overviewammit0724
 

Viewers also liked (20)

IM Club: Is Google+ a Facebook Killer
IM Club: Is Google+ a Facebook KillerIM Club: Is Google+ a Facebook Killer
IM Club: Is Google+ a Facebook Killer
 
Destino 2010
Destino 2010Destino 2010
Destino 2010
 
TEATRO DE LA SENSACIÓN Hazte socia/o con ficha de inscripción
TEATRO DE LA SENSACIÓN Hazte socia/o con ficha de inscripciónTEATRO DE LA SENSACIÓN Hazte socia/o con ficha de inscripción
TEATRO DE LA SENSACIÓN Hazte socia/o con ficha de inscripción
 
Tourism English 15
Tourism English 15Tourism English 15
Tourism English 15
 
Working progress preliminary task
Working progress preliminary taskWorking progress preliminary task
Working progress preliminary task
 
The civil war, lincoln, lee
The civil war, lincoln, leeThe civil war, lincoln, lee
The civil war, lincoln, lee
 
20087067 choi mun jung
20087067  choi mun jung20087067  choi mun jung
20087067 choi mun jung
 
Panorama economy 12 aprile 2012
Panorama economy 12 aprile 2012 Panorama economy 12 aprile 2012
Panorama economy 12 aprile 2012
 
Causualconnnie1
Causualconnnie1Causualconnnie1
Causualconnnie1
 
소셜의 이해
소셜의 이해소셜의 이해
소셜의 이해
 
Lermontov
LermontovLermontov
Lermontov
 
Dallas 2012 analysis
Dallas 2012 analysisDallas 2012 analysis
Dallas 2012 analysis
 
Android Self Service Solution
Android Self Service SolutionAndroid Self Service Solution
Android Self Service Solution
 
Jewelk
JewelkJewelk
Jewelk
 
Counting Atoms Spring 2012
Counting Atoms   Spring 2012Counting Atoms   Spring 2012
Counting Atoms Spring 2012
 
Wk gets social_google+
Wk gets social_google+Wk gets social_google+
Wk gets social_google+
 
9 leadership development strategies
9 leadership development strategies9 leadership development strategies
9 leadership development strategies
 
Electrons and Chemical Bonding 2012 Day 2
Electrons and Chemical Bonding 2012 Day 2Electrons and Chemical Bonding 2012 Day 2
Electrons and Chemical Bonding 2012 Day 2
 
C 4
C 4C 4
C 4
 
Meltwater Buzz Service Overview
Meltwater Buzz Service OverviewMeltwater Buzz Service Overview
Meltwater Buzz Service Overview
 

Similar to Badoo Desktop: оптимизация приложения на миллион юзеров онлайн

Полмиллиона юзеров в онлайне без падений: оптимизация высоконагруженного se...
Полмиллиона юзеров в онлайне без падений: оптимизация высоконагруженного se...Полмиллиона юзеров в онлайне без падений: оптимизация высоконагруженного se...
Полмиллиона юзеров в онлайне без падений: оптимизация высоконагруженного se...Sergey Xek
 
полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...
полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...
полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...rit2011
 
полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...
полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...
полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...rit2011
 
Мониторинг веб приложений на PHP в режиме реального времени с помощью Pinba. ...
Мониторинг веб приложений на PHP в режиме реального времени с помощью Pinba. ...Мониторинг веб приложений на PHP в режиме реального времени с помощью Pinba. ...
Мониторинг веб приложений на PHP в режиме реального времени с помощью Pinba. ...Igor Miniailo
 
Павел Брылов, Skype
Павел Брылов, SkypeПавел Брылов, Skype
Павел Брылов, SkypeOntico
 
Клиентские приложения под нагрузкой, Андрей Смирнов
Клиентские приложения под нагрузкой, Андрей СмирновКлиентские приложения под нагрузкой, Андрей Смирнов
Клиентские приложения под нагрузкой, Андрей СмирновOntico
 
Клиентские приложения под нагрузкой (HighLoad 2014)
Клиентские приложения под нагрузкой (HighLoad 2014)Клиентские приложения под нагрузкой (HighLoad 2014)
Клиентские приложения под нагрузкой (HighLoad 2014)Andrey Smirnov
 
Mind map от «Полмиллиона юзеров в онлайне без падений: оптимизация высокона...
Mind map от «Полмиллиона юзеров в онлайне без падений: оптимизация высокона...Mind map от «Полмиллиона юзеров в онлайне без падений: оптимизация высокона...
Mind map от «Полмиллиона юзеров в онлайне без падений: оптимизация высокона...Sergey Xek
 
Чеклист по клиентской оптимизации - Лавлинский Николай, РИТ++ 2017
Чеклист по клиентской оптимизации - Лавлинский Николай, РИТ++ 2017Чеклист по клиентской оптимизации - Лавлинский Николай, РИТ++ 2017
Чеклист по клиентской оптимизации - Лавлинский Николай, РИТ++ 2017Николай Лавлинский
 
Чеклист по клиентской оптимизации / Николай Лавлинский (Метод Лаб)
Чеклист по клиентской оптимизации / Николай Лавлинский (Метод Лаб)Чеклист по клиентской оптимизации / Николай Лавлинский (Метод Лаб)
Чеклист по клиентской оптимизации / Николай Лавлинский (Метод Лаб)Ontico
 
Микросервисный фронтенд
Микросервисный фронтендМикросервисный фронтенд
Микросервисный фронтендViacheslav Slinko
 
Микросервисный фронтенд / Вячеслав Слинько (ЦИАН)
Микросервисный фронтенд / Вячеслав Слинько (ЦИАН)Микросервисный фронтенд / Вячеслав Слинько (ЦИАН)
Микросервисный фронтенд / Вячеслав Слинько (ЦИАН)Ontico
 
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...Anton Baranov
 
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...Ontico
 
Bykov monitoring mailru
Bykov monitoring mailruBykov monitoring mailru
Bykov monitoring mailrurit2010
 
Виртуальная ИТ-инфраструктура предприятия на базе свободного ПО "под ключ"
Виртуальная ИТ-инфраструктура предприятия на базе свободного ПО "под ключ"Виртуальная ИТ-инфраструктура предприятия на базе свободного ПО "под ключ"
Виртуальная ИТ-инфраструктура предприятия на базе свободного ПО "под ключ"St. Petersburg Foundation for SME Development
 
NoBigData - потоковая система аналитики clientside производительности, Сергей...
NoBigData - потоковая система аналитики clientside производительности, Сергей...NoBigData - потоковая система аналитики clientside производительности, Сергей...
NoBigData - потоковая система аналитики clientside производительности, Сергей...Ontico
 
Опыт эксплуатации большого проекта на Ruby
Опыт эксплуатации большого проекта на RubyОпыт эксплуатации большого проекта на Ruby
Опыт эксплуатации большого проекта на RubyAlex Chistyakov
 

Similar to Badoo Desktop: оптимизация приложения на миллион юзеров онлайн (20)

Полмиллиона юзеров в онлайне без падений: оптимизация высоконагруженного se...
Полмиллиона юзеров в онлайне без падений: оптимизация высоконагруженного se...Полмиллиона юзеров в онлайне без падений: оптимизация высоконагруженного se...
Полмиллиона юзеров в онлайне без падений: оптимизация высоконагруженного se...
 
полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...
полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...
полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...
 
полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...
полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...
полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...
 
Sivko
SivkoSivko
Sivko
 
Мониторинг веб приложений на PHP в режиме реального времени с помощью Pinba. ...
Мониторинг веб приложений на PHP в режиме реального времени с помощью Pinba. ...Мониторинг веб приложений на PHP в режиме реального времени с помощью Pinba. ...
Мониторинг веб приложений на PHP в режиме реального времени с помощью Pinba. ...
 
Павел Брылов, Skype
Павел Брылов, SkypeПавел Брылов, Skype
Павел Брылов, Skype
 
Клиентские приложения под нагрузкой, Андрей Смирнов
Клиентские приложения под нагрузкой, Андрей СмирновКлиентские приложения под нагрузкой, Андрей Смирнов
Клиентские приложения под нагрузкой, Андрей Смирнов
 
Клиентские приложения под нагрузкой (HighLoad 2014)
Клиентские приложения под нагрузкой (HighLoad 2014)Клиентские приложения под нагрузкой (HighLoad 2014)
Клиентские приложения под нагрузкой (HighLoad 2014)
 
Mind map от «Полмиллиона юзеров в онлайне без падений: оптимизация высокона...
Mind map от «Полмиллиона юзеров в онлайне без падений: оптимизация высокона...Mind map от «Полмиллиона юзеров в онлайне без падений: оптимизация высокона...
Mind map от «Полмиллиона юзеров в онлайне без падений: оптимизация высокона...
 
Errors Tracker
Errors TrackerErrors Tracker
Errors Tracker
 
Чеклист по клиентской оптимизации - Лавлинский Николай, РИТ++ 2017
Чеклист по клиентской оптимизации - Лавлинский Николай, РИТ++ 2017Чеклист по клиентской оптимизации - Лавлинский Николай, РИТ++ 2017
Чеклист по клиентской оптимизации - Лавлинский Николай, РИТ++ 2017
 
Чеклист по клиентской оптимизации / Николай Лавлинский (Метод Лаб)
Чеклист по клиентской оптимизации / Николай Лавлинский (Метод Лаб)Чеклист по клиентской оптимизации / Николай Лавлинский (Метод Лаб)
Чеклист по клиентской оптимизации / Николай Лавлинский (Метод Лаб)
 
Микросервисный фронтенд
Микросервисный фронтендМикросервисный фронтенд
Микросервисный фронтенд
 
Микросервисный фронтенд / Вячеслав Слинько (ЦИАН)
Микросервисный фронтенд / Вячеслав Слинько (ЦИАН)Микросервисный фронтенд / Вячеслав Слинько (ЦИАН)
Микросервисный фронтенд / Вячеслав Слинько (ЦИАН)
 
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
 
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
 
Bykov monitoring mailru
Bykov monitoring mailruBykov monitoring mailru
Bykov monitoring mailru
 
Виртуальная ИТ-инфраструктура предприятия на базе свободного ПО "под ключ"
Виртуальная ИТ-инфраструктура предприятия на базе свободного ПО "под ключ"Виртуальная ИТ-инфраструктура предприятия на базе свободного ПО "под ключ"
Виртуальная ИТ-инфраструктура предприятия на базе свободного ПО "под ключ"
 
NoBigData - потоковая система аналитики clientside производительности, Сергей...
NoBigData - потоковая система аналитики clientside производительности, Сергей...NoBigData - потоковая система аналитики clientside производительности, Сергей...
NoBigData - потоковая система аналитики clientside производительности, Сергей...
 
Опыт эксплуатации большого проекта на Ruby
Опыт эксплуатации большого проекта на RubyОпыт эксплуатации большого проекта на Ruby
Опыт эксплуатации большого проекта на Ruby
 

More from Sergey Xek

Формирование технической команды на старте
Формирование технической команды на старте Формирование технической команды на старте
Формирование технической команды на старте Sergey Xek
 
Путь к Go на конкретном примере
Путь к Go на конкретном примереПуть к Go на конкретном примере
Путь к Go на конкретном примереSergey Xek
 
Стартап: формирование технической команды
Стартап: формирование технической командыСтартап: формирование технической команды
Стартап: формирование технической командыSergey Xek
 
Ездим на батарейках
Ездим на батарейкахЕздим на батарейках
Ездим на батарейкахSergey Xek
 
Распространенные ошибки применения баз данных
Распространенные ошибки применения баз данныхРаспространенные ошибки применения баз данных
Распространенные ошибки применения баз данныхSergey Xek
 
То, что вы хотели знать о HandlerSocket, но не смогли нагуглить
 То, что вы хотели знать о HandlerSocket, но не смогли нагуглить То, что вы хотели знать о HandlerSocket, но не смогли нагуглить
То, что вы хотели знать о HandlerSocket, но не смогли нагуглитьSergey Xek
 
MySQL+HandlerSocket=NoSQL
MySQL+HandlerSocket=NoSQL MySQL+HandlerSocket=NoSQL
MySQL+HandlerSocket=NoSQL Sergey Xek
 
Mysql+handlersocket=nosql
Mysql+handlersocket=nosqlMysql+handlersocket=nosql
Mysql+handlersocket=nosqlSergey Xek
 
Не все базы данных одинаково полезны
Не все базы данных одинаково полезныНе все базы данных одинаково полезны
Не все базы данных одинаково полезныSergey Xek
 
Распространенные ошибки применения баз данных
Распространенные ошибки применения баз данныхРаспространенные ошибки применения баз данных
Распространенные ошибки применения баз данныхSergey Xek
 
Не все базы данных одинаково полезны
Не все базы данных одинаково полезныНе все базы данных одинаково полезны
Не все базы данных одинаково полезныSergey Xek
 
Badoo Desktop: оптимизация приложения на миллион юзеров онлайн
Badoo Desktop: оптимизация приложения на миллион юзеров онлайнBadoo Desktop: оптимизация приложения на миллион юзеров онлайн
Badoo Desktop: оптимизация приложения на миллион юзеров онлайнSergey Xek
 
Pconnect: граната в руках обезьяны
Pconnect: граната в руках обезьяныPconnect: граната в руках обезьяны
Pconnect: граната в руках обезьяныSergey Xek
 

More from Sergey Xek (13)

Формирование технической команды на старте
Формирование технической команды на старте Формирование технической команды на старте
Формирование технической команды на старте
 
Путь к Go на конкретном примере
Путь к Go на конкретном примереПуть к Go на конкретном примере
Путь к Go на конкретном примере
 
Стартап: формирование технической команды
Стартап: формирование технической командыСтартап: формирование технической команды
Стартап: формирование технической команды
 
Ездим на батарейках
Ездим на батарейкахЕздим на батарейках
Ездим на батарейках
 
Распространенные ошибки применения баз данных
Распространенные ошибки применения баз данныхРаспространенные ошибки применения баз данных
Распространенные ошибки применения баз данных
 
То, что вы хотели знать о HandlerSocket, но не смогли нагуглить
 То, что вы хотели знать о HandlerSocket, но не смогли нагуглить То, что вы хотели знать о HandlerSocket, но не смогли нагуглить
То, что вы хотели знать о HandlerSocket, но не смогли нагуглить
 
MySQL+HandlerSocket=NoSQL
MySQL+HandlerSocket=NoSQL MySQL+HandlerSocket=NoSQL
MySQL+HandlerSocket=NoSQL
 
Mysql+handlersocket=nosql
Mysql+handlersocket=nosqlMysql+handlersocket=nosql
Mysql+handlersocket=nosql
 
Не все базы данных одинаково полезны
Не все базы данных одинаково полезныНе все базы данных одинаково полезны
Не все базы данных одинаково полезны
 
Распространенные ошибки применения баз данных
Распространенные ошибки применения баз данныхРаспространенные ошибки применения баз данных
Распространенные ошибки применения баз данных
 
Не все базы данных одинаково полезны
Не все базы данных одинаково полезныНе все базы данных одинаково полезны
Не все базы данных одинаково полезны
 
Badoo Desktop: оптимизация приложения на миллион юзеров онлайн
Badoo Desktop: оптимизация приложения на миллион юзеров онлайнBadoo Desktop: оптимизация приложения на миллион юзеров онлайн
Badoo Desktop: оптимизация приложения на миллион юзеров онлайн
 
Pconnect: граната в руках обезьяны
Pconnect: граната в руках обезьяныPconnect: граната в руках обезьяны
Pconnect: граната в руках обезьяны
 

Badoo Desktop: оптимизация приложения на миллион юзеров онлайн

  • 1. Badoo Desktop: оптимизация приложения на миллион юзеров онлайн Аверин Сергей, Badoo
  • 2.                    —  это: • Социальная сеть для знакомств с новыми людьми • В Top-200 Alexa c 2007 года • 115 миллионов зарегистрированных пользователей • 10 миллионов пользователей в день • 1,5 миллиона фотографий загружаются ежедневно
  • 3.                    —  это: • 30 тыс. запросов/с к PHP backends • MySQL, PHP, C/C++, Linux, nginx, PHP-FPM, memcached • Много своего
  • 4. Badoo  Desktop • Бесплатная Win/Mac программа • Поддерживает ваш онлайн-статус • Уведомления о новых событиях • Дает нам ваше местоположение • Удобный доступ на сайт
  • 5. Badoo  Desktop • 1,7 миллиона юзеров в месяц • 680 тыс. постоянных коннектов • 17 тыс. запросов/с к PHP backends
  • 6. Поиск тех, кто неподалеку
  • 7. Сценарий работы Соединяемся с главным фронтендом Он отправляет нас на нужный фронтенд Создаем/восстанавливаем сессию Получаем настройки, перевод и меню Показываем уведомления Посылаем данные о wi-fi и скринсейвере
  • 8. Набор команд Из программы: • Создание/Восстановление сессии • Авторизация • Данные о wi-fi сетях, работе скрин-сейвера В программу: • Ваш id сессии, язык и статус авторизации • Настройки, перевод, меню • Уведомления
  • 10. Принципы работы Программы: • Протокол асинхронный • Не требует ответа на большинство команд • Как можно более простые протокол и логика программ Server-side: • При ошибке не пытаемся восстановиться, а прерываем обработку команды • Нам не нужна 100% синхронность данных
  • 11. Специфика приложения • Маленький набор и размер команд • Большое количество постоянных соединений • Большой поток команд • Обработка одной команды занимает мало времени • Время ответа не так критично, как для веб-страниц • Ошибки на серверной стороне программы сильно не расстраивают
  • 12. Из беты в устойчивую систему
  • 13. Оптимизации Профилирование и поиск тормозов • Top и профилирование мало результативны • Можно улучшить, изменив логику работы • Real-time профилирование (PINBA) • PINBA: мониторинг приложения, а не железок
  • 14. Оптимизации Железно-площадочные оптимизации • 4 сетевые карты • Минимум конкуренции • MemCacheDB -> Redis -> MySQL+HandlerSocket • Жесткие тайм-ауты • pconnect
  • 15. Оптимизации Борьба с положительной обратной связью • Сам себе DDOS’ер • Прогрессивные паузы между командами/реконнектами • Реконнект на свой сервер
  • 16. Оптимизации Client-side кеширование и логика • Программы отслеживают время обновления статуса • Реже обновляют статус при скрин-сейвере • Дружат с медленными соединениями
  • 17. Оптимизации Убираем лишнюю нагрузку • Скешировали все, что можно • Ввели rate-limiting обновления данных • Не пишем, если не поменялось
  • 18. Оптимизации Пороговые срабатывания • Порог на изменение сетевой среды – Для медленных изменений принудительно обновляем раз в 10 минут • Порог на вычисление города по координатам
  • 19. Оптимизации Асинхронность и пост-обработка • Ответ на команду как можно раньше • Все сервисные задачи обрабатываем отдельно • Синхронизация запуска сервисных задач
  • 20. Заключение • Мониторинг и профилирование • Необходимы • Если вы выпилили все медленые места в php-коде, вы сделали 1/7 • Меняем логику работы — улучшаем в 10 раз • Предусмотрите все возможные проблемы заранее • We build wheels while existing suck or don't exist
  • 21. Спасибо! Вопросы? Контакты: http://twitter.com/ryba_xek s@averin.ru http://averin.ru/slides/