webcamp 2016: python. Левон Авакян: Архитектура мета игры wargaming....

26

Upload: webcamp

Post on 22-Mar-2017

93 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: WebCamp 2016: Python. Левон Авакян: Архитектура мета игры Wargaming. Глобальная карта 2.0
Page 2: WebCamp 2016: Python. Левон Авакян: Архитектура мета игры Wargaming. Глобальная карта 2.0

Очемябудуговорить

§ Глобальнаякарта• Немногоистории• ЧтотакоеГлобальнаяКарта• Gameplay• ИгровыесобытиянаГлобальнойкарте

§ Архитектураитехнологии• Технологическийстек• GIS.Готовимкарту• АрхитектураГлобальнойкарты• Расчетигровогохода

§ ОперированиеГлобальнойкартой• Особенности• Deployment• Сборстатистикииметрик• Немногоонадежности

2

Page 3: WebCamp 2016: Python. Левон Авакян: Архитектура мета игры Wargaming. Глобальная карта 2.0

ГлобальнаяКарта2.0

3

Page 4: WebCamp 2016: Python. Левон Авакян: Архитектура мета игры Wargaming. Глобальная карта 2.0

Немногоистории

§ Статистика

• Немногоистории• Чтотакое

ГлобальнаяКарта

• Gameplay• Игровыесобытия

наГлобальнойКарте • Около900игровыхпровинций

• 10-12тысячтанковыхсраженийнаоднойкартевигровыечасы

• До5тысячклановнаоднойкартевдень

4

Page 5: WebCamp 2016: Python. Левон Авакян: Архитектура мета игры Wargaming. Глобальная карта 2.0

ЧтотакоеГлобальнаяКарта

§ Статистика

• Немногоистории• Чтотакое

Глобальная• Gameplay• Игровыесобытия

наГлобальнойкарте • Около10000игровых

провинций

• 18-20 тысячтанковыхсраженийнаоднойкартевигровыечасы

• До8 тысячклановнаоднойкартевдень

5

Page 6: WebCamp 2016: Python. Левон Авакян: Архитектура мета игры Wargaming. Глобальная карта 2.0

Gameplay• Немногоистории• Чтотакое

Глобальная• Gameplay• Игровыесобытия

наГлобальнойкарте

• Фронты• Очкивлияния• Аукционы• Квесты• Сезоны

6

Page 7: WebCamp 2016: Python. Левон Авакян: Архитектура мета игры Wargaming. Глобальная карта 2.0

ИгровыесобытиянаГлобальнойКарте• ЧтотакоеГлобальнаяКарта

• Немногоистории• Gameplay• Игровыесобытия

наГлобальнойКарте

7

Page 8: WebCamp 2016: Python. Левон Авакян: Архитектура мета игры Wargaming. Глобальная карта 2.0

Архитектураитехнологии

8

Page 9: WebCamp 2016: Python. Левон Авакян: Архитектура мета игры Wargaming. Глобальная карта 2.0

Технологическийстек• Технологическийстек

• GIS.Готовимкарту

• АрхитектураГК• Расчетигрового

хода

• Python2.7• JS• CSS

• Falcon• SQLAlchemy +alembic

• Postgres9.4• PostGis• Redis

• Kafka• RabbitMQ

• uwsgi• nginx

9

Page 10: WebCamp 2016: Python. Левон Авакян: Архитектура мета игры Wargaming. Глобальная карта 2.0

Подкапотомуbackend

Falcon

SQLAlchemy +alembic

• Технологическийстек

• GIS.Готовимкарту• АрхитектураГК• Расчетигрового

хода ”+” “-”

• Быстрый• Прост в использовании• Хорошо документирован

• Не популярен• Мало библиотек• Нет стандартов

организации кода

”+” “-”

• Популярный• Хорошо документирован

• ORM

10

Page 11: WebCamp 2016: Python. Левон Авакян: Архитектура мета игры Wargaming. Глобальная карта 2.0

ХранениеданныхPostgres

Redis

”+” “-”

• Надежный• Много полезныхи

интересныхплюшек(jsonb,разнообразныеиндексы,расширения)

• Накопленаэкспертиза

• Болеесложноеадминистрирование,чем,скажем,вMySQL

• Партиционирование

”+” “-”

• Быстрый• Надежный • RedisQuque• Типы данных• Богатый тулинг

• Используетодноядро• KEYS• Отсутствие персистентности

данных

• Технологическийстек

• GIS.Готовимкарту• АрхитектураГК• Расчетигрового

хода

11

Page 12: WebCamp 2016: Python. Левон Авакян: Архитектура мета игры Wargaming. Глобальная карта 2.0

• МногоDOMопераций• РисуемHTML

• Сложнокэшировать

• MarionetteJS• Leaflet JS(рисуеткарту)

• UTFGrid

Текущийстек

Минусыподхода

• Технологическийстек

• GIS.Готовимкарту• АрхитектураГК• Расчетигрового

хода

12

ПодкапотомуFrontend

Page 13: WebCamp 2016: Python. Левон Авакян: Архитектура мета игры Wargaming. Глобальная карта 2.0

Чтохотимизменить• MarionetteJS->ReactcRedux (уменьшимколичествоDOM

операций)

• UTFGrid ->R-деревья->Векторныетайлы-> WebGL

• Geobuff +Topojson (передачагеоданных)

• Технологическийстек

• GIS.Готовимкарту• АрхитектураГК• Расчетигрового

хода

13

ПодкапотомуFrontend

Page 14: WebCamp 2016: Python. Левон Авакян: Архитектура мета игры Wargaming. Глобальная карта 2.0

• PostGis – набортиповданных,функцийдляработысгеоданными

• QGIS+плагины

• OpenStreetMap

• Рельефы(высота,глубина– ввидерастра)

• Требованияотгеймдизайнеров

Навход

Инструменты

• Технологическийстек

• GIS.Готовимкарту• АрхитектураГК• Расчетигрового

хода

14

GIS. ГотовимКарту

Page 15: WebCamp 2016: Python. Левон Авакян: Архитектура мета игры Wargaming. Глобальная карта 2.0

GIS.Готовимкарту• Технологическийстек

• GIS.Готовимкарту• АрхитектураГК• Расчетигрового

хода

15

Page 16: WebCamp 2016: Python. Левон Авакян: Архитектура мета игры Wargaming. Глобальная карта 2.0

АрхитектураГлобальнойКарты• Технологическийстек

• GIS.Готовимкарту• АрхитектураГК• Расчетигрового

хода

16

Page 17: WebCamp 2016: Python. Левон Авакян: Архитектура мета игры Wargaming. Глобальная карта 2.0

• SendBattle– отсылаетбоинасервер• Battle – обрабатываетрезультатыбоя

• ClanSync – синхронизируеткартуиклановыйсервис• History – публикуетвkafka данныеобизмененияхнаГК• Nextturn– расчетигровогохода

Workers• Технологическийстек

• GIS.Готовимкарту• АрхитектураГК• Расчетигрового

хода

17

Page 18: WebCamp 2016: Python. Левон Авакян: Архитектура мета игры Wargaming. Глобальная карта 2.0

Расчетигровогохода• Запускаетсякаждыйчасровнов

00минут• Пересчитываетигровую

ситуацию(запускаетбоизапровинции,просчитываетаукционы,раздаетголду ит.д)

• Компонент• Фаза• Шаг

wot:- phase:leave-maphandler:wot.core.turn.phases.LeaveMapsteps:[leave_map]params:batch_size:100

-wot:- phase:game_statssteps:- name:pre_turn_game_statshandler:

wot.core.turn.steps.pre_turn_game_statssdk:- phase:create_turnsteps:- name:create_turnhandler:sdk.turn.steps.create_turn

-wot:- phase:pre-turnsteps:- name:start_schedulerhandler:

wot.core.turn.steps.start_scheduler

• Технологическийстек

• GIS.Готовимкарту• АрхитектураГК• Расчетигрового

хода

18

Page 19: WebCamp 2016: Python. Левон Авакян: Архитектура мета игры Wargaming. Глобальная карта 2.0

ОперированиеГлобальнойКартой

19

Page 20: WebCamp 2016: Python. Левон Авакян: Архитектура мета игры Wargaming. Глобальная карта 2.0

Особенности

• Неравномернаянагрузкавтечениеигровогодняидажеодногочаса

• Большоеколичествовнешнихпотребителей• Большоеколичествоигровыхнастроек• Высокаястепенькастомизации подразныерегионы• БоинаГлобальнойкартедолжныпроходитьвстрого

определённоевремя,перенос– отменабояявляетсякритическойпроблемой

• Особенности• Deployment• Сборстатистикии

метрик• Немногоо

надежности

20

Page 21: WebCamp 2016: Python. Левон Авакян: Архитектура мета игры Wargaming. Глобальная карта 2.0

Deployment• Доставляетсяввиде4хпакетов

• Backend-package• Frontend-package• Loc-package• Gamedata-package

• Процессдеплоя автоматизированFabric2.0• Рендерконфигурациипошаблону• Доставкаисходногокода/пакетовнапродакшен• Выполнениемиграций• Pre/postшаги

• Смотримвсторонуконтейнеровиоблаков• Docker• Mesos/Marathon/Chronos

• Особенности• Deployment• Сборстатистикии

метрик• Немногоо

надежности

21

Page 22: WebCamp 2016: Python. Левон Авакян: Архитектура мета игры Wargaming. Глобальная карта 2.0

22

Собираемлоги• Особенности• Deployment• Сборстатистикии

метрик• Немногоо

надежности

Page 23: WebCamp 2016: Python. Левон Авакян: Архитектура мета игры Wargaming. Глобальная карта 2.0

23

Graphite• Особенности• Deployment• Сборстатистикии

метрик• Немногоо

надежности

Page 24: WebCamp 2016: Python. Левон Авакян: Архитектура мета игры Wargaming. Глобальная карта 2.0

Graphana• Особенности• Deployment• Сборстатистикии

метрик• Немногоо

надежности

24

Page 25: WebCamp 2016: Python. Левон Авакян: Архитектура мета игры Wargaming. Глобальная карта 2.0

Немногоонадежности• Мониторинг

• Триггерынасистемныеметрики• Триггерыналогическиеошибки

• Агрегацияианализлогов• Logstah +elasticsearch+kibana• Sentry• Graphite+Graphana• Логирование науровнеприложениявхранилище

• Нагрузочноетестирование• Анализпрофилянагрузки• Симуляцияигровойактивности

• Инструментарий

• Особенности• Deployment• Сборстатистикии

метрик• Немногоо

надежности

25

Page 26: WebCamp 2016: Python. Левон Авакян: Архитектура мета игры Wargaming. Глобальная карта 2.0

Let’sDiscuss

ЛевонАвакян

CompetitiveGamingReliabilityTeamLead

[email protected]