AVITO. Решаем проблемы по мере их поступления. Стачка 2013
-
Upload
roman-pavlushko -
Category
Technology
-
view
2.155 -
download
4
description
Transcript of AVITO. Решаем проблемы по мере их поступления. Стачка 2013
![Page 1: AVITO. Решаем проблемы по мере их поступления. Стачка 2013](https://reader034.fdocument.pub/reader034/viewer/2022042613/547b49ceb4af9ffe0d8b4601/html5/thumbnails/1.jpg)
Решаем проблемыпо мере их поступленияРоман Павлушко
Ульяновск, 2013 #nastachku
![Page 2: AVITO. Решаем проблемы по мере их поступления. Стачка 2013](https://reader034.fdocument.pub/reader034/viewer/2022042613/547b49ceb4af9ffe0d8b4601/html5/thumbnails/2.jpg)
О докладе
Большое кол-во тем
Поверхностно
Подробности в вопросах
![Page 4: AVITO. Решаем проблемы по мере их поступления. Стачка 2013](https://reader034.fdocument.pub/reader034/viewer/2022042613/547b49ceb4af9ffe0d8b4601/html5/thumbnails/4.jpg)
• Месячная аудитория 40 млн человек
• 150 млн просмотров в день
• 400+ тыс. новых объявлений в день
• 10+ разработчиков
• 120 серверов
О проекте
Цифры
![Page 5: AVITO. Решаем проблемы по мере их поступления. Стачка 2013](https://reader034.fdocument.pub/reader034/viewer/2022042613/547b49ceb4af9ffe0d8b4601/html5/thumbnails/5.jpg)
О проекте
Динамика роста
0
15 000 000
30 000 000
45 000 000
60 000 000
75 000 000
90 000 000
105 000 000
120 000 000
135 000 000
150 000 000
Окт 10 Янв 11 Апр 11 Июл 11 Окт 11 Янв 12 Апр 12 Июл 12 Окт 12 Янв 13 Апр 13
![Page 6: AVITO. Решаем проблемы по мере их поступления. Стачка 2013](https://reader034.fdocument.pub/reader034/viewer/2022042613/547b49ceb4af9ffe0d8b4601/html5/thumbnails/6.jpg)
О проблемах
![Page 7: AVITO. Решаем проблемы по мере их поступления. Стачка 2013](https://reader034.fdocument.pub/reader034/viewer/2022042613/547b49ceb4af9ffe0d8b4601/html5/thumbnails/7.jpg)
• Железо• DDoS
• Спамеры• Спец-проекты
О проблемах
Нежданно-негаданно
![Page 8: AVITO. Решаем проблемы по мере их поступления. Стачка 2013](https://reader034.fdocument.pub/reader034/viewer/2022042613/547b49ceb4af9ffe0d8b4601/html5/thumbnails/8.jpg)
...и из-за мелочей
• Небольшая недоработка• Уникальный пользователь• Погодаа эффект домино или трафик может довести проблему до критической
![Page 9: AVITO. Решаем проблемы по мере их поступления. Стачка 2013](https://reader034.fdocument.pub/reader034/viewer/2022042613/547b49ceb4af9ffe0d8b4601/html5/thumbnails/9.jpg)
О проблемах
Стоимость
стоимость устранения
прямые потери от проблемы
недополученная выгода
репутационные потери
![Page 10: AVITO. Решаем проблемы по мере их поступления. Стачка 2013](https://reader034.fdocument.pub/reader034/viewer/2022042613/547b49ceb4af9ffe0d8b4601/html5/thumbnails/10.jpg)
О проблемах
Решения
• Самостоятельное решение• Поиск и анализ сторонних решений • Советы опытных людей
• Отложить проблему до проявления
![Page 11: AVITO. Решаем проблемы по мере их поступления. Стачка 2013](https://reader034.fdocument.pub/reader034/viewer/2022042613/547b49ceb4af9ffe0d8b4601/html5/thumbnails/11.jpg)
Темная сторонапопулярности
![Page 12: AVITO. Решаем проблемы по мере их поступления. Стачка 2013](https://reader034.fdocument.pub/reader034/viewer/2022042613/547b49ceb4af9ffe0d8b4601/html5/thumbnails/12.jpg)
Темная сторона
Спам и мошенники
• Спам в сообщениях
• Спам в объявлениях
• SMS-cпам
• «Конкуренты»
• Нигирийцы• Продавцы краденого
![Page 13: AVITO. Решаем проблемы по мере их поступления. Стачка 2013](https://reader034.fdocument.pub/reader034/viewer/2022042613/547b49ceb4af9ffe0d8b4601/html5/thumbnails/13.jpg)
Темная сторона
Дубликаты
• Мешают продавцам• Мешают пользователям• Усложняют аналитику
![Page 14: AVITO. Решаем проблемы по мере их поступления. Стачка 2013](https://reader034.fdocument.pub/reader034/viewer/2022042613/547b49ceb4af9ffe0d8b4601/html5/thumbnails/14.jpg)
Проблемы роста
![Page 15: AVITO. Решаем проблемы по мере их поступления. Стачка 2013](https://reader034.fdocument.pub/reader034/viewer/2022042613/547b49ceb4af9ffe0d8b4601/html5/thumbnails/15.jpg)
Проблемы роста
Поддержка проекта
• Модерация контента• Поддержка клиентов• Технический долг
![Page 16: AVITO. Решаем проблемы по мере их поступления. Стачка 2013](https://reader034.fdocument.pub/reader034/viewer/2022042613/547b49ceb4af9ffe0d8b4601/html5/thumbnails/16.jpg)
Проблемы роста
Частая смена архитектуры
• Эффективное использование ресурсов• Расщепление приложения на сервисы
• Повышение порога вхождения • Упрощение разработки
![Page 17: AVITO. Решаем проблемы по мере их поступления. Стачка 2013](https://reader034.fdocument.pub/reader034/viewer/2022042613/547b49ceb4af9ffe0d8b4601/html5/thumbnails/17.jpg)
• Запас производительности• Отказоустойчивость • Мониторинг по всем фронтам
• Детальный анализ A/B-тестов
Проблемы роста
Накладные расходы
![Page 18: AVITO. Решаем проблемы по мере их поступления. Стачка 2013](https://reader034.fdocument.pub/reader034/viewer/2022042613/547b49ceb4af9ffe0d8b4601/html5/thumbnails/18.jpg)
Проблемы роста
Приложение
• Рост нагрузки: кеширование, зеркала• Качество кода: code style, tests, etc.
• Объем кода: подпроекты
• Отказоустойчивость: nginx
![Page 19: AVITO. Решаем проблемы по мере их поступления. Стачка 2013](https://reader034.fdocument.pub/reader034/viewer/2022042613/547b49ceb4af9ffe0d8b4601/html5/thumbnails/19.jpg)
Проблемы роста
Приложение – конфигурация
ПроблемаВнешние сервисы ненадежны
Redis0
App0
Redis1
App1
RedisN
AppN
set
get
Redis Replication
Redis0 Master
RedisN Slaves
![Page 20: AVITO. Решаем проблемы по мере их поступления. Стачка 2013](https://reader034.fdocument.pub/reader034/viewer/2022042613/547b49ceb4af9ffe0d8b4601/html5/thumbnails/20.jpg)
Проблемы роста
Приложение – время отклика
• все сетевые соединения через pools
• оптимизация запросов к базе и поиску• при сборке проекта прекешируем данные
![Page 21: AVITO. Решаем проблемы по мере их поступления. Стачка 2013](https://reader034.fdocument.pub/reader034/viewer/2022042613/547b49ceb4af9ffe0d8b4601/html5/thumbnails/21.jpg)
Проблемы роста
Приложение – технологии
• 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/)
![Page 22: AVITO. Решаем проблемы по мере их поступления. Стачка 2013](https://reader034.fdocument.pub/reader034/viewer/2022042613/547b49ceb4af9ffe0d8b4601/html5/thumbnails/22.jpg)
• Отдельный хост для отдачи (.avito.st)
• Удаление метаданных картинок• Правильно настроенный web-сервер
Expires, Last-Modified, Cache-control, gzip
• Минимизация и склейка js и css файлов
• Lazy load для картинок
Проблемы роста
Интернет-трафик
![Page 23: AVITO. Решаем проблемы по мере их поступления. Стачка 2013](https://reader034.fdocument.pub/reader034/viewer/2022042613/547b49ceb4af9ffe0d8b4601/html5/thumbnails/23.jpg)
Проблемы роста
Поиск• Нагрузка: репликация (5000 rps)
• Размеры индексов: шардинг, оптимизации
• Ошибки: словари, триграммы• Усложнение запросов: индексы• Кеширование
![Page 24: AVITO. Решаем проблемы по мере их поступления. Стачка 2013](https://reader034.fdocument.pub/reader034/viewer/2022042613/547b49ceb4af9ffe0d8b4601/html5/thumbnails/24.jpg)
indexer
full category
uftp + rsync
Pg MV Repl
HA
master
x8x38
App
HA
App
HA
App
Проблемы роста
Поиск – архитектура
1. Построение снапшота в реплике
2. Индексация в N потоков (xargs)
3. Деплой индексов на слейвы (uftp)
4. Синхронизация индексов (rsync)
5. Ротация индексов (-hup)
6. Сброс кеша
![Page 25: AVITO. Решаем проблемы по мере их поступления. Стачка 2013](https://reader034.fdocument.pub/reader034/viewer/2022042613/547b49ceb4af9ffe0d8b4601/html5/thumbnails/25.jpg)
Проблемы роста
Поиск – технологии
• 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/)
![Page 26: AVITO. Решаем проблемы по мере их поступления. Стачка 2013](https://reader034.fdocument.pub/reader034/viewer/2022042613/547b49ceb4af9ffe0d8b4601/html5/thumbnails/26.jpg)
Проблемы роста
Данные
• PostgreSQL
• оптимизации запросов • репликация MV
• шардинг• Redis для горячих данных
![Page 27: AVITO. Решаем проблемы по мере их поступления. Стачка 2013](https://reader034.fdocument.pub/reader034/viewer/2022042613/547b49ceb4af9ffe0d8b4601/html5/thumbnails/27.jpg)
Проблемы роста
Данные – технологии
• 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/)
![Page 28: AVITO. Решаем проблемы по мере их поступления. Стачка 2013](https://reader034.fdocument.pub/reader034/viewer/2022042613/547b49ceb4af9ffe0d8b4601/html5/thumbnails/28.jpg)
• Объем: ~15TB (миллиард картинок)
• 100 нод на ~33 серверах
• Модуль nginx_upload
• $node.img.avito.st для отдачи
Проблемы роста
Статика
![Page 29: AVITO. Решаем проблемы по мере их поступления. Стачка 2013](https://reader034.fdocument.pub/reader034/viewer/2022042613/547b49ceb4af9ffe0d8b4601/html5/thumbnails/29.jpg)
Проблемы роста
Ищем клевых разработчиков
![Page 30: AVITO. Решаем проблемы по мере их поступления. Стачка 2013](https://reader034.fdocument.pub/reader034/viewer/2022042613/547b49ceb4af9ffe0d8b4601/html5/thumbnails/30.jpg)
Спасибо!Вопросы?Роман Павлушко
slideshare.net/pavlushko
pavlushko_roman @pavlushko