Доклад о том, зачем нам понадобился сервисный шлюз для клиента WoT, как выбирались и проверялись технологические решения, плюсы и минусы использования Python 3 + asyncio в этом конкретном случае. +Бонус: выбор, отслеживание и визуализация метрик приложения
Report
Share
Report
Share
1 of 20
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
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
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