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

3,362 views

Published on

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,362
On SlideShare
0
From Embeds
0
Number of Embeds
63
Actions
Shares
0
Downloads
48
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

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

  1. 1. Решаем проблемыпо мере их поступленияРоман ПавлушкоУльяновск, 2013#nastachku
  2. 2. О докладе Большое кол-во тем ПоверхностноПодробности в вопросах
  3. 3. О проекте Текстhttp://www.avito.ru/company
  4. 4. О проекте Цифры• Месячная аудитория 40 млн человек• 150 млн просмотров в день• 400+ тыс. новых объявлений в день• 10+ разработчиков• 120 серверов
  5. 5. О проекте Динамика роста150 000 000135 000 000120 000 000105 000 000 90 000 00075 000 00060 000 00045 000 00030 000 00015 000 000 0 Окт 10 Янв 11 Апр 11 Июл 11 Окт 11 Янв 12 Апр 12 Июл 12 Окт 12 Янв 13 Апр 13
  6. 6. О проблемах
  7. 7. О проблемах Нежданно-негаданно• Железо• DDoS• Спамеры• Спец-проекты
  8. 8. ...и из-за мелочей• Небольшая недоработка• Уникальный пользователь• Погода а эффект домино или трафик может довести проблему до критической
  9. 9. О проблемахСтоимость стоимость устранения прямые потери от проблемы недополученная выгода репутационные потери
  10. 10. О проблемах Решения• Самостоятельное решение• Поиск и анализ сторонних решений• Советы опытных людей• Отложить проблему до проявления
  11. 11. Темная сторона популярности
  12. 12. Темная сторона Спам и мошенники• Спам в сообщениях• Спам в объявлениях• SMS-cпам• «Конкуренты»• Нигирийцы• Продавцы краденого
  13. 13. Темная сторонаДубликаты • Мешают продавцам • Мешают пользователям • Усложняют аналитику
  14. 14. Проблемы роста
  15. 15. Проблемы роста Поддержка проекта• Модерация контента• Поддержка клиентов• Технический долг
  16. 16. Проблемы роста Частая смена архитектуры• Эффективное использование ресурсов• Расщепление приложения на сервисы• Повышение порога вхождения• Упрощение разработки
  17. 17. Проблемы роста Накладные расходы• Запас производительности• Отказоустойчивость• Мониторинг по всем фронтам• Детальный анализ A/B-тестов
  18. 18. Проблемы роста Приложение• Рост нагрузки: кеширование, зеркала• Качество кода: code style, tests, etc.• Объем кода: подпроекты• Отказоустойчивость: nginx
  19. 19. Проблемы роста Приложение – конфигурацияПроблемаВнешние сервисы ненадежны set App0 App1 AppN get Redis0 Master Redis0 Redis1 RedisN RedisN Slaves Redis Replication
  20. 20. Проблемы ростаПриложение – время отклика• все сетевые соединения через pools• оптимизация запросов к базе и поиску• при сборке проекта прекешируем данные
  21. 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. 22. Проблемы роста Интернет-трафик• Отдельный хост для отдачи (.avito.st)• Удаление метаданных картинок• Правильно настроенный web-сервер Expires, Last-Modified, Cache-control, gzip• Минимизация и склейка js и css файлов• Lazy load для картинок
  23. 23. Проблемы роста Поиск• Нагрузка: репликация (5000 rps)• Размеры индексов: шардинг, оптимизации• Ошибки: словари, триграммы• Усложнение запросов: индексы• Кеширование
  24. 24. Проблемы роста Поиск – архитектура Pg MV Repl 1. Построение снапшота в реплике indexer 2. Индексация в N потоков (xargs) master uftp + rsync 3. Деплой индексов на слейвы (uftp) 4. Синхронизация индексов (rsync) full categoryx8 5. Ротация индексов (-hup) x38 HA 6. Сброс кеша HA HA App App App
  25. 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. 26. Проблемы роста Данные• PostgreSQL • оптимизации запросов • репликация MV • шардинг• Redis для горячих данных
  27. 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. 28. Проблемы роста Статика• Объем: ~15TB (миллиард картинок)• 100 нод на ~33 серверах• Модуль nginx_upload• $node.img.avito.st для отдачи
  29. 29. Проблемы ростаИщем клевых разработчиков
  30. 30. Спасибо! Вопросы? Роман Павлушко rpavlushko@avito.ru slideshare.net/pavlushkopavlushko_roman @pavlushko

×