Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
SlideShare a Scribd company logo
Осознанный выбор. Python 3
Python 3 для реализации сервисного шлюза клиента
World of Tanks
06.02.2015
Левон Авакян
Competitive Gaming Reliability Team Lead
L_avakyan@wargaming.net
О чем я буду говорить
 Карточка клана
– World Of Tanks и веб сервисы
– Карточка клана
– Сервисный шлюз для клиента World Of Tanks
 Выбор решения
– Схема тестирования
– Методика тестирования
– Erlang
– Python 2.7.Twisted
– Python 3.4. aiohttp
– Системные параметры
– Выбор
 Python 3.4. Production
– Особенности
– Qaless releases
– Graphite
– Graphana
Карточка клана
World of Tanks и веб-сервисы
 Карточка клана
 Выбор решения
 Python 3.4. Production
Карточка клана
 Карточка клана
 Выбор решения
 Python 3.4. Production
Сервисный шлюз клиента World of Tanks
 Карточка клана
 Выбор решения
 Python 3.4. Production
Выбор решения
Схема тестирования
 Карточка клана
 Выбор решения
 Python 3.4. Production
Методика тестирования
Входные данные:
• Эмуляторы отвечают с временем ожидания 200 мс
• Есть «авторизация» в систему.
• Сначала авторизуемся, потом в случайном порядке запрашиваем эмуляторы
Оценка результатов:
• Количество обработанных запросов
• Время ответа на запрос
• Количество ошибок
• Время за которое выполняется 95% запросов
• Время за которое выполняется 99% запросов
 Карточка клана
 Выбор решения
 Python 3.4. Production
Erlang
Используемый стек:
- Erlang 17
Параметр Значение
Количество запросов 240000
Среднее время отклика 5527 мс
Процент ошибок 11,33%
Время за которое
выполняется 95%
запросов
15043 мс
Время за которое
выполняется 99%
запросов
15044 мс
 Карточка клана
 Выбор решения
 Python 3.4. Production
Python 2.7. Twisted
Используемый стек:
Python2.7
Redis
twisted
txredis
Параметр Значение
Количество запросов 240000
Среднее время отклика 3154 мс
Процент ошибок 1,04%
Время за которое
выполняется 95%
запросов
9024 мс
Время за которое
выполняется 99%
запросов
10247 мс
 Карточка клана
 Выбор решения
 Python 3.4. Production
Python 3.4. aiohttp
Используемый стек:
Python3.4
Redis
aiohttp==0.16.6
aioredis
aiohttp_session
Параметр Значение
Количество запросов 240000
Среднее время отклика 2817 мс
Процент ошибок 7,75%
Время за которое
выполняется 95%
запросов
8659 мс
Время за которое
выполняется 99%
запросов
15038 мс
 Карточка клана
 Выбор решения
 Python 3.4. Production
Мониторинг
CPU
RAM
NET
 Карточка клана
 Выбор решения
 Python 3.4. Production
Выбор
Erlang Python 2.7. Twisted Python 3.4. aiohttp
Производительность - + +
Production опыт + + -
Простота разработки - + +
Интересность + - +
 Карточка клана
 Выбор решения
 Python 3.4. Production
Python 3. Production
Особенности
• Нет production-ready supervisord под Python 3.4
• Нет production-ready uwsgi asyncio
• Отсутствие поддержки Python 3.4 в Wargaming tools
Work around:
• Воркеров в проекте нет. Пока supervisor не нужен, если понадобиться bash + crontab
• Используем gunicorn
• Часть инструментов адаптировали. Часть запускается из отдельного virtualenv
 Карточка клана
 Выбор решения
 Python 3.4. Production
QAless Releases
• Авто тесты
• Мониторинг
• Внешних потребителей
• Протокола
• Инфраструктуры
 Карточка клана
 Выбор решения
 Python 3.4. Production
Graphite
 Карточка клана
 Выбор решения
 Python 3.4. Production
Graphana
 Карточка клана
 Выбор решения
 Python 3.4. Production
Спасибо
Левон Авакян
Competitive Gaming Reliability Team Lead
l_avakyan@wargaming.net

More Related Content

Осознанный выбор. Python 3 для реализации сервисного шлюза клиента World of Tanks

  • 1. Осознанный выбор. Python 3 Python 3 для реализации сервисного шлюза клиента World of Tanks 06.02.2015 Левон Авакян Competitive Gaming Reliability Team Lead L_avakyan@wargaming.net
  • 2. О чем я буду говорить  Карточка клана – World Of Tanks и веб сервисы – Карточка клана – Сервисный шлюз для клиента World Of Tanks  Выбор решения – Схема тестирования – Методика тестирования – Erlang – Python 2.7.Twisted – Python 3.4. aiohttp – Системные параметры – Выбор  Python 3.4. Production – Особенности – Qaless releases – Graphite – Graphana
  • 4. World of Tanks и веб-сервисы  Карточка клана  Выбор решения  Python 3.4. Production
  • 5. Карточка клана  Карточка клана  Выбор решения  Python 3.4. Production
  • 6. Сервисный шлюз клиента World of Tanks  Карточка клана  Выбор решения  Python 3.4. Production
  • 8. Схема тестирования  Карточка клана  Выбор решения  Python 3.4. Production
  • 9. Методика тестирования Входные данные: • Эмуляторы отвечают с временем ожидания 200 мс • Есть «авторизация» в систему. • Сначала авторизуемся, потом в случайном порядке запрашиваем эмуляторы Оценка результатов: • Количество обработанных запросов • Время ответа на запрос • Количество ошибок • Время за которое выполняется 95% запросов • Время за которое выполняется 99% запросов  Карточка клана  Выбор решения  Python 3.4. Production
  • 10. Erlang Используемый стек: - Erlang 17 Параметр Значение Количество запросов 240000 Среднее время отклика 5527 мс Процент ошибок 11,33% Время за которое выполняется 95% запросов 15043 мс Время за которое выполняется 99% запросов 15044 мс  Карточка клана  Выбор решения  Python 3.4. Production
  • 11. Python 2.7. Twisted Используемый стек: Python2.7 Redis twisted txredis Параметр Значение Количество запросов 240000 Среднее время отклика 3154 мс Процент ошибок 1,04% Время за которое выполняется 95% запросов 9024 мс Время за которое выполняется 99% запросов 10247 мс  Карточка клана  Выбор решения  Python 3.4. Production
  • 12. Python 3.4. aiohttp Используемый стек: Python3.4 Redis aiohttp==0.16.6 aioredis aiohttp_session Параметр Значение Количество запросов 240000 Среднее время отклика 2817 мс Процент ошибок 7,75% Время за которое выполняется 95% запросов 8659 мс Время за которое выполняется 99% запросов 15038 мс  Карточка клана  Выбор решения  Python 3.4. Production
  • 13. Мониторинг CPU RAM NET  Карточка клана  Выбор решения  Python 3.4. Production
  • 14. Выбор Erlang Python 2.7. Twisted Python 3.4. aiohttp Производительность - + + Production опыт + + - Простота разработки - + + Интересность + - +  Карточка клана  Выбор решения  Python 3.4. Production
  • 16. Особенности • Нет production-ready supervisord под Python 3.4 • Нет production-ready uwsgi asyncio • Отсутствие поддержки Python 3.4 в Wargaming tools Work around: • Воркеров в проекте нет. Пока supervisor не нужен, если понадобиться bash + crontab • Используем gunicorn • Часть инструментов адаптировали. Часть запускается из отдельного virtualenv  Карточка клана  Выбор решения  Python 3.4. Production
  • 17. QAless Releases • Авто тесты • Мониторинг • Внешних потребителей • Протокола • Инфраструктуры  Карточка клана  Выбор решения  Python 3.4. Production
  • 18. Graphite  Карточка клана  Выбор решения  Python 3.4. Production
  • 19. Graphana  Карточка клана  Выбор решения  Python 3.4. Production
  • 20. Спасибо Левон Авакян Competitive Gaming Reliability Team Lead l_avakyan@wargaming.net