SlideShare una empresa de Scribd logo
1 de 30
Descargar para leer sin conexión
Решаем проблемы
по мере их поступления
Роман Павлушко




Ульяновск, 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

Más contenido relacionado

La actualidad más candente

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

La actualidad más candente (19)

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

Destacado

Архитектура поиска в Avito / Андрей Смирнов (Avito)
Архитектура поиска в Avito / Андрей Смирнов (Avito)Архитектура поиска в Avito / Андрей Смирнов (Avito)
Архитектура поиска в Avito / Андрей Смирнов (Avito)Ontico
 
Agile — это не то, что ты думаешь
Agile — это не то, что ты думаешьAgile — это не то, что ты думаешь
Agile — это не то, что ты думаешьVasiliy Cheptsov
 
Avito usage of_data_in_media_campaigns_olga_ky
Avito usage of_data_in_media_campaigns_olga_kyAvito usage of_data_in_media_campaigns_olga_ky
Avito usage of_data_in_media_campaigns_olga_kyiabrussiaprez
 
Максим Савельев, 2ГИС: "Точки контакта с аудиторией. Секреты рекламы, которые...
Максим Савельев, 2ГИС: "Точки контакта с аудиторией. Секреты рекламы, которые...Максим Савельев, 2ГИС: "Точки контакта с аудиторией. Секреты рекламы, которые...
Максим Савельев, 2ГИС: "Точки контакта с аудиторией. Секреты рекламы, которые...web2win
 
Developing highload servers with Java
Developing highload servers with JavaDeveloping highload servers with Java
Developing highload servers with JavaAndrei Pangin
 
Идеальный питч
Идеальный питчИдеальный питч
Идеальный питчbufferbay
 
Инструментируй это
Инструментируй этоИнструментируй это
Инструментируй этоRoman Dvornov
 
pgconf.ru 2015.avito postgresql recovery
pgconf.ru 2015.avito postgresql recoverypgconf.ru 2015.avito postgresql recovery
pgconf.ru 2015.avito postgresql recoveryМихаил Тюрин
 
Онлайн-взаимодействие: вовлечение, исследование и обучение сотрудников
Онлайн-взаимодействие: вовлечение, исследование и обучение сотрудниковОнлайн-взаимодействие: вовлечение, исследование и обучение сотрудников
Онлайн-взаимодействие: вовлечение, исследование и обучение сотрудниковDiana Dymolazova
 
Виктор Яковлев, "Yandex": "О дивный новый-старый мир контекстной рекламы"
Виктор Яковлев, "Yandex": "О дивный новый-старый мир контекстной рекламы"Виктор Яковлев, "Yandex": "О дивный новый-старый мир контекстной рекламы"
Виктор Яковлев, "Yandex": "О дивный новый-старый мир контекстной рекламы"iProspect Russia
 
Аналитика приложений конкурентов
Аналитика приложений конкурентовАналитика приложений конкурентов
Аналитика приложений конкурентовAnatoly Sharifulin
 
Инструменты разные нужны, инструменты разные важны
Инструменты разные нужны, инструменты разные важныИнструменты разные нужны, инструменты разные важны
Инструменты разные нужны, инструменты разные важныCodeFest
 
Олеся Кащеева, Ostrovok.ru
Олеся Кащеева, Ostrovok.ruОлеся Кащеева, Ostrovok.ru
Олеся Кащеева, Ostrovok.ruDiana Dymolazova
 
Ускоряем исследования с помощью конкурсов как их готовить и выигрывать / Иван...
Ускоряем исследования с помощью конкурсов как их готовить и выигрывать / Иван...Ускоряем исследования с помощью конкурсов как их готовить и выигрывать / Иван...
Ускоряем исследования с помощью конкурсов как их готовить и выигрывать / Иван...Ontico
 
SPA инструменты
SPA инструментыSPA инструменты
SPA инструментыRoman Dvornov
 
«Как перейти от веб-аналитики к аналитике мобильных приложений» Д. Школьник...
«Как перейти от веб-аналитики к аналитике мобильных приложений» Д. Школьник...«Как перейти от веб-аналитики к аналитике мобильных приложений» Д. Школьник...
«Как перейти от веб-аналитики к аналитике мобильных приложений» Д. Школьник...it-people
 
Avito iab1502 olga ky
Avito iab1502 olga kyAvito iab1502 olga ky
Avito iab1502 olga kyIABRu
 

Destacado (20)

Архитектура поиска в Avito / Андрей Смирнов (Avito)
Архитектура поиска в Avito / Андрей Смирнов (Avito)Архитектура поиска в Avito / Андрей Смирнов (Avito)
Архитектура поиска в Avito / Андрей Смирнов (Avito)
 
Agile — это не то, что ты думаешь
Agile — это не то, что ты думаешьAgile — это не то, что ты думаешь
Agile — это не то, что ты думаешь
 
Avito usage of_data_in_media_campaigns_olga_ky
Avito usage of_data_in_media_campaigns_olga_kyAvito usage of_data_in_media_campaigns_olga_ky
Avito usage of_data_in_media_campaigns_olga_ky
 
Максим Савельев, 2ГИС: "Точки контакта с аудиторией. Секреты рекламы, которые...
Максим Савельев, 2ГИС: "Точки контакта с аудиторией. Секреты рекламы, которые...Максим Савельев, 2ГИС: "Точки контакта с аудиторией. Секреты рекламы, которые...
Максим Савельев, 2ГИС: "Точки контакта с аудиторией. Секреты рекламы, которые...
 
Developing highload servers with Java
Developing highload servers with JavaDeveloping highload servers with Java
Developing highload servers with Java
 
Идеальный питч
Идеальный питчИдеальный питч
Идеальный питч
 
Инструментируй это
Инструментируй этоИнструментируй это
Инструментируй это
 
pgconf.ru 2015.avito postgresql recovery
pgconf.ru 2015.avito postgresql recoverypgconf.ru 2015.avito postgresql recovery
pgconf.ru 2015.avito postgresql recovery
 
Онлайн-взаимодействие: вовлечение, исследование и обучение сотрудников
Онлайн-взаимодействие: вовлечение, исследование и обучение сотрудниковОнлайн-взаимодействие: вовлечение, исследование и обучение сотрудников
Онлайн-взаимодействие: вовлечение, исследование и обучение сотрудников
 
Виктор Яковлев, "Yandex": "О дивный новый-старый мир контекстной рекламы"
Виктор Яковлев, "Yandex": "О дивный новый-старый мир контекстной рекламы"Виктор Яковлев, "Yandex": "О дивный новый-старый мир контекстной рекламы"
Виктор Яковлев, "Yandex": "О дивный новый-старый мир контекстной рекламы"
 
Аналитика приложений конкурентов
Аналитика приложений конкурентовАналитика приложений конкурентов
Аналитика приложений конкурентов
 
Инструменты разные нужны, инструменты разные важны
Инструменты разные нужны, инструменты разные важныИнструменты разные нужны, инструменты разные важны
Инструменты разные нужны, инструменты разные важны
 
Clearing hurdles
Clearing hurdlesClearing hurdles
Clearing hurdles
 
Олеся Кащеева, Ostrovok.ru
Олеся Кащеева, Ostrovok.ruОлеся Кащеева, Ostrovok.ru
Олеся Кащеева, Ostrovok.ru
 
Experiment Prototyping
Experiment PrototypingExperiment Prototyping
Experiment Prototyping
 
Ускоряем исследования с помощью конкурсов как их готовить и выигрывать / Иван...
Ускоряем исследования с помощью конкурсов как их готовить и выигрывать / Иван...Ускоряем исследования с помощью конкурсов как их готовить и выигрывать / Иван...
Ускоряем исследования с помощью конкурсов как их готовить и выигрывать / Иван...
 
SPA инструменты
SPA инструментыSPA инструменты
SPA инструменты
 
Bezier curves
Bezier curvesBezier curves
Bezier curves
 
«Как перейти от веб-аналитики к аналитике мобильных приложений» Д. Школьник...
«Как перейти от веб-аналитики к аналитике мобильных приложений» Д. Школьник...«Как перейти от веб-аналитики к аналитике мобильных приложений» Д. Школьник...
«Как перейти от веб-аналитики к аналитике мобильных приложений» Д. Школьник...
 
Avito iab1502 olga ky
Avito iab1502 olga kyAvito iab1502 olga ky
Avito iab1502 olga ky
 

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

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
 
Прогрессивный рендеринг и Catberry.js / Михаил Реенко (2GIS / Flamp)
Прогрессивный рендеринг и Catberry.js / Михаил Реенко (2GIS / Flamp)Прогрессивный рендеринг и Catberry.js / Михаил Реенко (2GIS / Flamp)
Прогрессивный рендеринг и Catberry.js / Михаил Реенко (2GIS / Flamp)Ontico
 
PG Day'14 Russia, PostgreSQL в avito.ru, Михаил Тюрин
PG Day'14 Russia, PostgreSQL в avito.ru, Михаил ТюринPG Day'14 Russia, PostgreSQL в avito.ru, Михаил Тюрин
PG Day'14 Russia, PostgreSQL в avito.ru, Михаил Тюринpgdayrussia
 
FT & HA Rails приложений приложений — это просто
FT & HA Rails приложений приложений — это простоFT & HA Rails приложений приложений — это просто
FT & HA Rails приложений приложений — это простоАлександр Ежов
 
Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центр
Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центрМониторинг веб-проектов: штаб оперативного реагирования и аналитический центр
Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центрsportgid
 
NoBigData - потоковая система аналитики clientside производительности, Сергей...
NoBigData - потоковая система аналитики clientside производительности, Сергей...NoBigData - потоковая система аналитики clientside производительности, Сергей...
NoBigData - потоковая система аналитики clientside производительности, Сергей...Ontico
 
Node.js Меньше сложности, больше надежности Holy.js 2021
Node.js Меньше сложности, больше надежности Holy.js 2021Node.js Меньше сложности, больше надежности Holy.js 2021
Node.js Меньше сложности, больше надежности Holy.js 2021Timur Shemsedinov
 
Марат Мавлютов - Современный веб как сложная система
Марат Мавлютов - Современный веб как сложная системаМарат Мавлютов - Современный веб как сложная система
Марат Мавлютов - Современный веб как сложная системаYandex
 
Гетерогенные сервисы для highload-проектов на примере Imhonet.ru и 4talk.im, ...
Гетерогенные сервисы для highload-проектов на примере Imhonet.ru и 4talk.im, ...Гетерогенные сервисы для highload-проектов на примере Imhonet.ru и 4talk.im, ...
Гетерогенные сервисы для highload-проектов на примере Imhonet.ru и 4talk.im, ...Ontico
 
Переезжаем с Zabbix на Prometheus / Василий Озеров (fevlake)
Переезжаем с Zabbix на Prometheus / Василий Озеров (fevlake)Переезжаем с Zabbix на Prometheus / Василий Озеров (fevlake)
Переезжаем с Zabbix на Prometheus / Василий Озеров (fevlake)Ontico
 
Как сделать сложное простым. История создания Проект1917 / Сергей Спорышев (I...
Как сделать сложное простым. История создания Проект1917 / Сергей Спорышев (I...Как сделать сложное простым. История создания Проект1917 / Сергей Спорышев (I...
Как сделать сложное простым. История создания Проект1917 / Сергей Спорышев (I...Ontico
 
Вадим Мадисон "Опыт разработки через микросервисы"
Вадим Мадисон "Опыт разработки через микросервисы"Вадим Мадисон "Опыт разработки через микросервисы"
Вадим Мадисон "Опыт разработки через микросервисы"Tanya Denisyuk
 
Электронная коммерция: от Hadoop к Spark Scala
Электронная коммерция: от Hadoop к Spark ScalaЭлектронная коммерция: от Hadoop к Spark Scala
Электронная коммерция: от Hadoop к Spark ScalaRoman Zykov
 
Pinboard + pinba / Как организовать мониторинг сотни PHP-проектов (Devconf 2014)
Pinboard + pinba / Как организовать мониторинг сотни PHP-проектов (Devconf 2014)Pinboard + pinba / Как организовать мониторинг сотни PHP-проектов (Devconf 2014)
Pinboard + pinba / Как организовать мониторинг сотни PHP-проектов (Devconf 2014)Ilyas Salikhov
 
мониторинг производительности приложения на PINBA
мониторинг производительности приложения на PINBAмониторинг производительности приложения на PINBA
мониторинг производительности приложения на PINBASlach
 
Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)
Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)
Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)Ontico
 
Фронтенд в Яндексе
Фронтенд в ЯндексеФронтенд в Яндексе
Фронтенд в ЯндексеYandex
 

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

Tech Talks @NSU: Что такое Highload? Секреты высокой нагрузки.
Tech Talks @NSU: Что такое Highload? Секреты высокой нагрузки.Tech Talks @NSU: Что такое Highload? Секреты высокой нагрузки.
Tech Talks @NSU: Что такое Highload? Секреты высокой нагрузки.
 
Что такое Highload? Секреты высокой нагрузки
Что такое Highload? Секреты высокой нагрузкиЧто такое Highload? Секреты высокой нагрузки
Что такое Highload? Секреты высокой нагрузки
 
Прогрессивный рендеринг и Catberry.js / Михаил Реенко (2GIS / Flamp)
Прогрессивный рендеринг и Catberry.js / Михаил Реенко (2GIS / Flamp)Прогрессивный рендеринг и Catberry.js / Михаил Реенко (2GIS / Flamp)
Прогрессивный рендеринг и Catberry.js / Михаил Реенко (2GIS / Flamp)
 
Errors Tracker
Errors TrackerErrors Tracker
Errors Tracker
 
PG Day'14 Russia, PostgreSQL в avito.ru, Михаил Тюрин
PG Day'14 Russia, PostgreSQL в avito.ru, Михаил ТюринPG Day'14 Russia, PostgreSQL в avito.ru, Михаил Тюрин
PG Day'14 Russia, PostgreSQL в avito.ru, Михаил Тюрин
 
Migrate!
Migrate!Migrate!
Migrate!
 
FT & HA Rails приложений приложений — это просто
FT & HA Rails приложений приложений — это простоFT & HA Rails приложений приложений — это просто
FT & HA Rails приложений приложений — это просто
 
Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центр
Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центрМониторинг веб-проектов: штаб оперативного реагирования и аналитический центр
Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центр
 
NoBigData - потоковая система аналитики clientside производительности, Сергей...
NoBigData - потоковая система аналитики clientside производительности, Сергей...NoBigData - потоковая система аналитики clientside производительности, Сергей...
NoBigData - потоковая система аналитики clientside производительности, Сергей...
 
Node.js Меньше сложности, больше надежности Holy.js 2021
Node.js Меньше сложности, больше надежности Holy.js 2021Node.js Меньше сложности, больше надежности Holy.js 2021
Node.js Меньше сложности, больше надежности Holy.js 2021
 
Марат Мавлютов - Современный веб как сложная система
Марат Мавлютов - Современный веб как сложная системаМарат Мавлютов - Современный веб как сложная система
Марат Мавлютов - Современный веб как сложная система
 
Гетерогенные сервисы для highload-проектов на примере Imhonet.ru и 4talk.im, ...
Гетерогенные сервисы для highload-проектов на примере Imhonet.ru и 4talk.im, ...Гетерогенные сервисы для highload-проектов на примере Imhonet.ru и 4talk.im, ...
Гетерогенные сервисы для highload-проектов на примере Imhonet.ru и 4talk.im, ...
 
Переезжаем с Zabbix на Prometheus / Василий Озеров (fevlake)
Переезжаем с Zabbix на Prometheus / Василий Озеров (fevlake)Переезжаем с Zabbix на Prometheus / Василий Озеров (fevlake)
Переезжаем с Zabbix на Prometheus / Василий Озеров (fevlake)
 
Как сделать сложное простым. История создания Проект1917 / Сергей Спорышев (I...
Как сделать сложное простым. История создания Проект1917 / Сергей Спорышев (I...Как сделать сложное простым. История создания Проект1917 / Сергей Спорышев (I...
Как сделать сложное простым. История создания Проект1917 / Сергей Спорышев (I...
 
Вадим Мадисон "Опыт разработки через микросервисы"
Вадим Мадисон "Опыт разработки через микросервисы"Вадим Мадисон "Опыт разработки через микросервисы"
Вадим Мадисон "Опыт разработки через микросервисы"
 
Электронная коммерция: от Hadoop к Spark Scala
Электронная коммерция: от Hadoop к Spark ScalaЭлектронная коммерция: от Hadoop к Spark Scala
Электронная коммерция: от Hadoop к Spark Scala
 
Pinboard + pinba / Как организовать мониторинг сотни PHP-проектов (Devconf 2014)
Pinboard + pinba / Как организовать мониторинг сотни PHP-проектов (Devconf 2014)Pinboard + pinba / Как организовать мониторинг сотни PHP-проектов (Devconf 2014)
Pinboard + pinba / Как организовать мониторинг сотни PHP-проектов (Devconf 2014)
 
мониторинг производительности приложения на PINBA
мониторинг производительности приложения на PINBAмониторинг производительности приложения на PINBA
мониторинг производительности приложения на PINBA
 
Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)
Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)
Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)
 
Фронтенд в Яндексе
Фронтенд в ЯндексеФронтенд в Яндексе
Фронтенд в Яндексе
 

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. Спасибо! Вопросы? Роман Павлушко rpavlushko@avito.ru slideshare.net/pavlushko pavlushko_roman @pavlushko