SlideShare a Scribd company logo
Решаем проблемы
по мере их поступления
Роман Павлушко




Ульяновск, 2013
#nastachku
О докладе

  Большое кол-во тем


    Поверхностно


Подробности в вопросах
О проекте



                              Текст




http://www.avito.ru/company
О проекте
              Цифры

• Месячная аудитория 40 млн человек
• 150 млн просмотров в день
• 400+ тыс. новых объявлений в день
• 10+ разработчиков
• 120 серверов
О проекте
                         Динамика роста
150 000 000


135 000 000


120 000 000


105 000 000


 90 000 000


75 000 000


60 000 000


45 000 000


30 000 000


15 000 000


           0

  Окт 10       Янв 11   Апр 11   Июл 11    Окт 11   Янв 12   Апр 12   Июл 12   Окт 12   Янв 13   Апр 13
О проблемах
О проблемах
    Нежданно-негаданно


• Железо
• DDoS
• Спамеры
• Спец-проекты
...и из-за мелочей


• Небольшая недоработка
• Уникальный пользователь
• Погода
  а эффект домино или трафик может
  довести проблему до критической
О проблемах
Стоимость

 стоимость устранения
 прямые потери от проблемы
 недополученная выгода
 репутационные потери
О проблемах
            Решения


• Самостоятельное решение
• Поиск и анализ сторонних решений
• Советы опытных людей
• Отложить проблему до проявления
Темная сторона
  популярности
Темная сторона
      Спам и мошенники

• Спам в сообщениях
• Спам в объявлениях
• SMS-cпам
• «Конкуренты»
• Нигирийцы
• Продавцы краденого
Темная сторона
Дубликаты


     • Мешают продавцам
     • Мешают пользователям
     • Усложняют аналитику
Проблемы роста
Проблемы роста
     Поддержка проекта


• Модерация контента
• Поддержка клиентов
• Технический долг
Проблемы роста
   Частая смена архитектуры


• Эффективное использование ресурсов
• Расщепление приложения на сервисы
• Повышение порога вхождения
• Упрощение разработки
Проблемы роста
     Накладные расходы


• Запас производительности
• Отказоустойчивость
• Мониторинг по всем фронтам
• Детальный анализ A/B-тестов
Проблемы роста
            Приложение

• Рост нагрузки: кеширование, зеркала
• Качество кода: code style, tests, etc.
• Объем кода: подпроекты
• Отказоустойчивость: nginx
Проблемы роста
 Приложение – конфигурация

Проблема
Внешние сервисы ненадежны
                                 set

  App0          App1          AppN

                                 get
                                       Redis0 Master
 Redis0        Redis1         RedisN   RedisN Slaves
          Redis Replication
Проблемы роста
Приложение – время отклика

• все сетевые соединения через pools
• оптимизация запросов к базе и поиску
• при сборке проекта прекешируем данные
Проблемы роста
   Приложение – технологии
• nginx (http://nginx.org/)
• PHP-fpm (http://php-fpm.org/)
• Phing (http://www.phing.info/)
• PHP CodeSniffer (http://pear.php.net/)
• PHP CPD (https://github.com/sebastianbergmann/phpcpd)
• Selemium (http://seleniumhq.org/)
Проблемы роста
         Интернет-трафик

• Отдельный хост для отдачи (.avito.st)
• Удаление метаданных картинок
• Правильно настроенный web-сервер
                 Expires, Last-Modified, Cache-control, gzip


• Минимизация и склейка js и css файлов
• Lazy load для картинок
Проблемы роста
               Поиск
• Нагрузка: репликация (5000 rps)
• Размеры индексов: шардинг, оптимизации
• Ошибки: словари, триграммы
• Усложнение запросов: индексы
• Кеширование
Проблемы роста
                               Поиск – архитектура
                      Pg MV Repl                 1. Построение снапшота в реплике
                     indexer                     2. Индексация в N потоков (xargs)
     master




                               uftp + rsync
                                                 3. Деплой индексов на слейвы (uftp)
                                                 4. Синхронизация индексов (rsync)
              full                category

x8
                                                 5. Ротация индексов (-hup)
                                         x38


                       HA
                                                 6. Сброс кеша
                        HA
                         HA
                      App
                       App
                        App
Проблемы роста
       Поиск – технологии

• Sphinx (http://sphinxsearch.com/)
• PostgreSQL (http://www.postgresql.org/)
• SkyTools (http://pgfoundry.org/projects/skytools/)
• uftp (http://www.tcnj.edu/~bush/uftp.html)
• HAProxy (http://haproxy.1wt.eu/)
Проблемы роста
              Данные

• PostgreSQL
 • оптимизации запросов
 • репликация MV
 • шардинг
• Redis для горячих данных
Проблемы роста
      Данные – технологии
• PostgreSQL (http://www.postgresql.org/)
• SkyTools (http://pgfoundry.org/projects/skytools/)
• PgBouncer (http://pgfoundry.org/projects/pgbouncer/)
• Memcached (http://memcached.org/)
• memagent (https://code.google.com/p/memagent/)
• Redis (http://redis.io/)
Проблемы роста
             Статика

• Объем: ~15TB (миллиард картинок)
• 100 нод на ~33 серверах
• Модуль nginx_upload
• $node.img.avito.st для отдачи
Проблемы роста
Ищем клевых разработчиков
Спасибо!
       Вопросы?
      Роман Павлушко
       rpavlushko@avito.ru
      slideshare.net/pavlushko


pavlushko_roman          @pavlushko

More Related Content

PDF
AVITO. Решардинг Redis без даунтайма. DevConf 2012
Roman Pavlushko
 
PDF
SphinxSearch Meetup - Tips&tricks
Roman Pavlushko
 
PDF
Avito Stachka 2012
Roman Pavlushko
 
PDF
pgconf.ru 2015 avito postgresql
Михаил Тюрин
 
PDF
Нагруженный поиск на Sphinx
Roman Pavlushko
 
PDF
Near-realtime аналитика событий в высоконагруженном проекте
Alexandr Krasheninnikov
 
PDF
Где живут Ваши объявления / Тюрин Михаил (Avito)
Ontico
 
PDF
Мониторинг и отладка MySQL: максимум информации при минимальных потерях
Sveta Smirnova
 
AVITO. Решардинг Redis без даунтайма. DevConf 2012
Roman Pavlushko
 
SphinxSearch Meetup - Tips&tricks
Roman Pavlushko
 
Avito Stachka 2012
Roman Pavlushko
 
pgconf.ru 2015 avito postgresql
Михаил Тюрин
 
Нагруженный поиск на Sphinx
Roman Pavlushko
 
Near-realtime аналитика событий в высоконагруженном проекте
Alexandr Krasheninnikov
 
Где живут Ваши объявления / Тюрин Михаил (Avito)
Ontico
 
Мониторинг и отладка MySQL: максимум информации при минимальных потерях
Sveta Smirnova
 

What's hot (19)

PDF
С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo).
Badoo Development
 
PPTX
Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...
Ontico
 
PDF
2014.09.24 история небольшого успеха с PostgreSQL (Yandex)
Nikolay Samokhvalov
 
PDF
Барнаул15
Михаил Тюрин
 
PDF
Эволюция процесса деплоя в проекте / Денис Яковлев (2ГИС)
Ontico
 
PPTX
Как ускорить MySQL Handler Socket в 9 раз / Александр Яковлев (Мамба)
Ontico
 
PPTX
Alexandr Serbul "The Rust language for a high-load network service - a quick ...
Fwdays
 
PDF
Оптимизация программ для современных процессоров и Linux, Александр Крижановс...
Ontico
 
PPTX
Погружение в виртуальную память и большие страницы / Константин Новаковский (...
Ontico
 
PPTX
Спасение 6 миллионов файлов в условиях полного Хецнера
Daniel Podolsky
 
PDF
Обзор перспективных баз данных для highload / Юрий Насретдинов
Ontico
 
PDF
Горизонтальное масштабирование: что, зачем, когда и как /Александр Макаров (Y...
Ontico
 
PDF
Как считать и анализировать сотни гигабит трафика в секунду, Станислав Николо...
Ontico
 
PDF
Веб-разработка без наркотиков с помощью PostgreSQL, Nginx и c2h5oh / Миша Кир...
Ontico
 
PDF
Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...
Ontico
 
PDF
Кэширование данных в web приложениях. Использование memcached / Юрий Красноще...
Ontico
 
PDF
Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambl...
Ontico
 
PPTX
За счет чего Tarantool такой оптимальный / Денис Аникин (Mail.Ru)
Ontico
 
С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo).
Badoo Development
 
Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...
Ontico
 
2014.09.24 история небольшого успеха с PostgreSQL (Yandex)
Nikolay Samokhvalov
 
Барнаул15
Михаил Тюрин
 
Эволюция процесса деплоя в проекте / Денис Яковлев (2ГИС)
Ontico
 
Как ускорить MySQL Handler Socket в 9 раз / Александр Яковлев (Мамба)
Ontico
 
Alexandr Serbul "The Rust language for a high-load network service - a quick ...
Fwdays
 
Оптимизация программ для современных процессоров и Linux, Александр Крижановс...
Ontico
 
Погружение в виртуальную память и большие страницы / Константин Новаковский (...
Ontico
 
Спасение 6 миллионов файлов в условиях полного Хецнера
Daniel Podolsky
 
Обзор перспективных баз данных для highload / Юрий Насретдинов
Ontico
 
Горизонтальное масштабирование: что, зачем, когда и как /Александр Макаров (Y...
Ontico
 
Как считать и анализировать сотни гигабит трафика в секунду, Станислав Николо...
Ontico
 
Веб-разработка без наркотиков с помощью PostgreSQL, Nginx и c2h5oh / Миша Кир...
Ontico
 
Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...
Ontico
 
Кэширование данных в web приложениях. Использование memcached / Юрий Красноще...
Ontico
 
Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambl...
Ontico
 
За счет чего Tarantool такой оптимальный / Денис Аникин (Mail.Ru)
Ontico
 
Ad

Viewers also liked (20)

PDF
Архитектура поиска в Avito / Андрей Смирнов (Avito)
Ontico
 
PPSX
Agile — это не то, что ты думаешь
Vasiliy Cheptsov
 
PPTX
Avito usage of_data_in_media_campaigns_olga_ky
iabrussiaprez
 
PDF
Максим Савельев, 2ГИС: "Точки контакта с аудиторией. Секреты рекламы, которые...
web2win
 
PPTX
Developing highload servers with Java
Andrei Pangin
 
PDF
Идеальный питч
bufferbay
 
PDF
Инструментируй это
Roman Dvornov
 
PDF
pgconf.ru 2015.avito postgresql recovery
Михаил Тюрин
 
PDF
Онлайн-взаимодействие: вовлечение, исследование и обучение сотрудников
Diana Dymolazova
 
PDF
Виктор Яковлев, "Yandex": "О дивный новый-старый мир контекстной рекламы"
iProspect Russia
 
PDF
Аналитика приложений конкурентов
Anatoly Sharifulin
 
PDF
Инструменты разные нужны, инструменты разные важны
CodeFest
 
PPT
Clearing hurdles
Alexey Kulakov
 
PPTX
Олеся Кащеева, Ostrovok.ru
Diana Dymolazova
 
PDF
Experiment Prototyping
Nikolay Yaremko
 
PPTX
Ускоряем исследования с помощью конкурсов как их готовить и выигрывать / Иван...
Ontico
 
PDF
SPA инструменты
Roman Dvornov
 
PDF
Bezier curves
Nikolay Yaremko
 
PDF
«Как перейти от веб-аналитики к аналитике мобильных приложений» Д. Школьник...
it-people
 
PPTX
Avito iab1502 olga ky
IABRu
 
Архитектура поиска в Avito / Андрей Смирнов (Avito)
Ontico
 
Agile — это не то, что ты думаешь
Vasiliy Cheptsov
 
Avito usage of_data_in_media_campaigns_olga_ky
iabrussiaprez
 
Максим Савельев, 2ГИС: "Точки контакта с аудиторией. Секреты рекламы, которые...
web2win
 
Developing highload servers with Java
Andrei Pangin
 
Идеальный питч
bufferbay
 
Инструментируй это
Roman Dvornov
 
pgconf.ru 2015.avito postgresql recovery
Михаил Тюрин
 
Онлайн-взаимодействие: вовлечение, исследование и обучение сотрудников
Diana Dymolazova
 
Виктор Яковлев, "Yandex": "О дивный новый-старый мир контекстной рекламы"
iProspect Russia
 
Аналитика приложений конкурентов
Anatoly Sharifulin
 
Инструменты разные нужны, инструменты разные важны
CodeFest
 
Clearing hurdles
Alexey Kulakov
 
Олеся Кащеева, Ostrovok.ru
Diana Dymolazova
 
Experiment Prototyping
Nikolay Yaremko
 
Ускоряем исследования с помощью конкурсов как их готовить и выигрывать / Иван...
Ontico
 
SPA инструменты
Roman Dvornov
 
Bezier curves
Nikolay Yaremko
 
«Как перейти от веб-аналитики к аналитике мобильных приложений» Д. Школьник...
it-people
 
Avito iab1502 olga ky
IABRu
 
Ad

Similar to AVITO. Решаем проблемы по мере их поступления. Стачка 2013 (20)

PPTX
Highload: проблемы и решения
Олег Шерыхалин
 
PPTX
UFADevCom'13#1 Шерыхалин Олег
UFADevCom
 
PDF
Разработка веб-сервисов осень 2013 лекция 11
Technopark
 
PDF
High load2007 scaling-web-applications-rus
Vladd Ev
 
PDF
Самые частые проблемы и пути решения при росте нагрузки и масштабировании про...
Колёса Крыша Маркет
 
PDF
Самые частые проблемы и пути решения при росте нагрузки и масштабировании про...
Mad Devs
 
PPT
13 октября, DEV {web} - конференция о Highload веб-разработке. "Грабли при ма...
IT-Portfolio
 
PPTX
Проектирование высоконагруженного масштабируемого веб-сервиса в облаке на при...
Ontico
 
PPTX
Andrew Aksyonoff "Архитектура вокруг поиска"
Fwdays
 
PPTX
от авгиевых конюшен к звездам
Lev Goncharov
 
PPT
Самые частые проблемы и пути решения при росте нагрузки и масштабировании про...
Andrew Minkin
 
PPT
Самые частые проблемы и пути решения при росте нагрузки и масштабировании про...
Mad Devs
 
PDF
Распространенные ошибки применения баз данных
Sergey Xek
 
PDF
Распространенные ошибки применения баз данных (Сергей Аверин)
Ontico
 
PPTX
Little Service in 2h
Alexei Yuzhakov
 
PDF
DUMP-2015 «Микросервисная архитектура в теории и на практике» Иван Бурмистров...
it-people
 
PDF
Учебный день конференции HighLoad++ 2013
Ontico
 
PPTX
Преждевременная оптимизация архитектуры / Евгений Потапов, Антон Баранов (ITS...
Ontico
 
PPTX
Учебный день конференции HighLoad++ 2013
Ontico
 
PPTX
Оптимизация производительности нагруженных веб-систем на Java
Alex Chistyakov
 
Highload: проблемы и решения
Олег Шерыхалин
 
UFADevCom'13#1 Шерыхалин Олег
UFADevCom
 
Разработка веб-сервисов осень 2013 лекция 11
Technopark
 
High load2007 scaling-web-applications-rus
Vladd Ev
 
Самые частые проблемы и пути решения при росте нагрузки и масштабировании про...
Колёса Крыша Маркет
 
Самые частые проблемы и пути решения при росте нагрузки и масштабировании про...
Mad Devs
 
13 октября, DEV {web} - конференция о Highload веб-разработке. "Грабли при ма...
IT-Portfolio
 
Проектирование высоконагруженного масштабируемого веб-сервиса в облаке на при...
Ontico
 
Andrew Aksyonoff "Архитектура вокруг поиска"
Fwdays
 
от авгиевых конюшен к звездам
Lev Goncharov
 
Самые частые проблемы и пути решения при росте нагрузки и масштабировании про...
Andrew Minkin
 
Самые частые проблемы и пути решения при росте нагрузки и масштабировании про...
Mad Devs
 
Распространенные ошибки применения баз данных
Sergey Xek
 
Распространенные ошибки применения баз данных (Сергей Аверин)
Ontico
 
Little Service in 2h
Alexei Yuzhakov
 
DUMP-2015 «Микросервисная архитектура в теории и на практике» Иван Бурмистров...
it-people
 
Учебный день конференции HighLoad++ 2013
Ontico
 
Преждевременная оптимизация архитектуры / Евгений Потапов, Антон Баранов (ITS...
Ontico
 
Учебный день конференции HighLoad++ 2013
Ontico
 
Оптимизация производительности нагруженных веб-систем на Java
Alex Chistyakov
 

AVITO. Решаем проблемы по мере их поступления. Стачка 2013

  • 1. Решаем проблемы по мере их поступления Роман Павлушко Ульяновск, 2013 #nastachku
  • 2. О докладе Большое кол-во тем Поверхностно Подробности в вопросах
  • 3. О проекте Текст http://www.avito.ru/company
  • 4. О проекте Цифры • Месячная аудитория 40 млн человек • 150 млн просмотров в день • 400+ тыс. новых объявлений в день • 10+ разработчиков • 120 серверов
  • 5. О проекте Динамика роста 150 000 000 135 000 000 120 000 000 105 000 000 90 000 000 75 000 000 60 000 000 45 000 000 30 000 000 15 000 000 0 Окт 10 Янв 11 Апр 11 Июл 11 Окт 11 Янв 12 Апр 12 Июл 12 Окт 12 Янв 13 Апр 13
  • 7. О проблемах Нежданно-негаданно • Железо • DDoS • Спамеры • Спец-проекты
  • 8. ...и из-за мелочей • Небольшая недоработка • Уникальный пользователь • Погода а эффект домино или трафик может довести проблему до критической
  • 9. О проблемах Стоимость стоимость устранения прямые потери от проблемы недополученная выгода репутационные потери
  • 10. О проблемах Решения • Самостоятельное решение • Поиск и анализ сторонних решений • Советы опытных людей • Отложить проблему до проявления
  • 11. Темная сторона популярности
  • 12. Темная сторона Спам и мошенники • Спам в сообщениях • Спам в объявлениях • SMS-cпам • «Конкуренты» • Нигирийцы • Продавцы краденого
  • 13. Темная сторона Дубликаты • Мешают продавцам • Мешают пользователям • Усложняют аналитику
  • 15. Проблемы роста Поддержка проекта • Модерация контента • Поддержка клиентов • Технический долг
  • 16. Проблемы роста Частая смена архитектуры • Эффективное использование ресурсов • Расщепление приложения на сервисы • Повышение порога вхождения • Упрощение разработки
  • 17. Проблемы роста Накладные расходы • Запас производительности • Отказоустойчивость • Мониторинг по всем фронтам • Детальный анализ A/B-тестов
  • 18. Проблемы роста Приложение • Рост нагрузки: кеширование, зеркала • Качество кода: code style, tests, etc. • Объем кода: подпроекты • Отказоустойчивость: nginx
  • 19. Проблемы роста Приложение – конфигурация Проблема Внешние сервисы ненадежны set App0 App1 AppN get Redis0 Master Redis0 Redis1 RedisN RedisN Slaves Redis Replication
  • 20. Проблемы роста Приложение – время отклика • все сетевые соединения через pools • оптимизация запросов к базе и поиску • при сборке проекта прекешируем данные
  • 21. Проблемы роста Приложение – технологии • nginx (http://nginx.org/) • PHP-fpm (http://php-fpm.org/) • Phing (http://www.phing.info/) • PHP CodeSniffer (http://pear.php.net/) • PHP CPD (https://github.com/sebastianbergmann/phpcpd) • Selemium (http://seleniumhq.org/)
  • 22. Проблемы роста Интернет-трафик • Отдельный хост для отдачи (.avito.st) • Удаление метаданных картинок • Правильно настроенный web-сервер Expires, Last-Modified, Cache-control, gzip • Минимизация и склейка js и css файлов • Lazy load для картинок
  • 23. Проблемы роста Поиск • Нагрузка: репликация (5000 rps) • Размеры индексов: шардинг, оптимизации • Ошибки: словари, триграммы • Усложнение запросов: индексы • Кеширование
  • 24. Проблемы роста Поиск – архитектура Pg MV Repl 1. Построение снапшота в реплике indexer 2. Индексация в N потоков (xargs) master uftp + rsync 3. Деплой индексов на слейвы (uftp) 4. Синхронизация индексов (rsync) full category x8 5. Ротация индексов (-hup) x38 HA 6. Сброс кеша HA HA App App App
  • 25. Проблемы роста Поиск – технологии • Sphinx (http://sphinxsearch.com/) • PostgreSQL (http://www.postgresql.org/) • SkyTools (http://pgfoundry.org/projects/skytools/) • uftp (http://www.tcnj.edu/~bush/uftp.html) • HAProxy (http://haproxy.1wt.eu/)
  • 26. Проблемы роста Данные • PostgreSQL • оптимизации запросов • репликация MV • шардинг • Redis для горячих данных
  • 27. Проблемы роста Данные – технологии • PostgreSQL (http://www.postgresql.org/) • SkyTools (http://pgfoundry.org/projects/skytools/) • PgBouncer (http://pgfoundry.org/projects/pgbouncer/) • Memcached (http://memcached.org/) • memagent (https://code.google.com/p/memagent/) • Redis (http://redis.io/)
  • 28. Проблемы роста Статика • Объем: ~15TB (миллиард картинок) • 100 нод на ~33 серверах • Модуль nginx_upload • $node.img.avito.st для отдачи
  • 30. Спасибо! Вопросы? Роман Павлушко [email protected] slideshare.net/pavlushko pavlushko_roman @pavlushko