Upload
levon-avakyan
View
523
Download
2
Embed Size (px)
Citation preview
Осознанный выбор. Python 3
Python 3 для реализации сервисного шлюза клиента World of Tanks
06.02.2015
Левон АвакянCompetitive Gaming Reliability Team [email protected]
О чем я буду говорить Карточка клана
– 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.7Redistwistedtxredis
Параметр Значение
Количество запросов 240000
Среднее время отклика 3154 мс
Процент ошибок 1,04%
Время за которое выполняется 95% запросов
9024 мс
Время за которое выполняется 99% запросов
10247 мс
Карточка клана Выбор решения Python 3.4. Production
Python 3.4. aiohttp
Используемый стек:Python3.4Redisaiohttp==0.16.6aioredisaiohttp_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