20
Осознанный выбор. Python 3 Python 3 для реализации сервисного шлюза клиента World of Tanks 06.02. 2015 Левон Авакян Competitive Gaming Reliability Team Lead L_avakyan@wargami ng.net

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

Embed Size (px)

Citation preview

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

Осознанный выбор. Python 3

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

06.02.2015

Левон АвакянCompetitive Gaming Reliability Team [email protected]

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

О чем я буду говорить Карточка клана

– World Of Tanks и веб сервисы– Карточка клана– Сервисный шлюз для клиента World Of Tanks

Выбор решения– Схема тестирования– Методика тестирования– Erlang– Python 2.7.Twisted– Python 3.4. aiohttp– Системные параметры– Выбор

Python 3.4. Production– Особенности– Qaless releases– Graphite– Graphana

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

Карточка клана

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

World of Tanks и веб-сервисы Карточка клана Выбор решения Python 3.4. Production

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

Карточка клана Карточка клана Выбор решения Python 3.4. Production

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

Сервисный шлюз клиента World of Tanks Карточка клана Выбор решения Python 3.4. Production

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

Выбор решения

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

Схема тестирования Карточка клана Выбор решения Python 3.4. Production

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

Методика тестирования

Входные данные:• Эмуляторы отвечают с временем ожидания 200 мс• Есть «авторизация» в систему.• Сначала авторизуемся, потом в случайном порядке запрашиваем эмуляторы

Оценка результатов:• Количество обработанных запросов• Время ответа на запрос• Количество ошибок• Время за которое выполняется 95% запросов• Время за которое выполняется 99% запросов

Карточка клана Выбор решения Python 3.4. Production

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

Erlang

Используемый стек:- Erlang 17

Параметр Значение

Количество запросов 240000

Среднее время отклика 5527 мс

Процент ошибок 11,33%

Время за которое выполняется 95% запросов

15043 мс

Время за которое выполняется 99% запросов

15044 мс

Карточка клана Выбор решения Python 3.4. Production

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

Python 2.7. Twisted

Используемый стек:Python2.7Redistwistedtxredis

Параметр Значение

Количество запросов 240000

Среднее время отклика 3154 мс

Процент ошибок 1,04%

Время за которое выполняется 95% запросов

9024 мс

Время за которое выполняется 99% запросов

10247 мс

Карточка клана Выбор решения Python 3.4. Production

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

Python 3.4. aiohttp

Используемый стек:Python3.4Redisaiohttp==0.16.6aioredisaiohttp_session

Параметр Значение

Количество запросов 240000

Среднее время отклика 2817 мс

Процент ошибок 7,75%

Время за которое выполняется 95% запросов

8659 мс

Время за которое выполняется 99% запросов

15038 мс

Карточка клана Выбор решения Python 3.4. Production

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

Мониторинг

CPU

RAM

NET

Карточка клана Выбор решения Python 3.4. Production

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

Выбор

Erlang Python 2.7. Twisted Python 3.4. aiohttp

Производительность - + +

Production опыт + + -

Простота разработки - + +

Интересность + - +

Карточка клана Выбор решения Python 3.4. Production

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

Python 3. Production

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

Особенности

• Нет 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

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

QAless Releases

• Авто тесты• Мониторинг

• Внешних потребителей• Протокола• Инфраструктуры

Карточка клана Выбор решения Python 3.4. Production

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

Graphite Карточка клана Выбор решения Python 3.4. Production

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

Graphana Карточка клана Выбор решения Python 3.4. Production

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

Спасибо

Левон АвакянCompetitive Gaming Reliability Team Lead

[email protected]