Оперирование высоко нагруженными проектами. Или...

Preview:

DESCRIPTION

Оперирование - это важный компонент в жизненном цикле любого продукта или сервиса. Для высоконагруженных проектов с огромным количеством связей, простейшие запросы на оперирование, представляют собой достаточно нетривиальную задачу. А бизнес требует вносить изменения ASAP. Кроме того, несмотря на высокую нагрузку, мы должны обеспечивать высокое качество сервиса для пользователей несмотря ни на что. Каждый раз мы решаем уникальные инженерные задачи, чтобы можно было играть в «Кланах» и на «Глобальной карте» по всему миру. Доклад расскажет о тех проблемах с которыми мы сталкиваемся и о best practices по управлению приложениями, инфраструктурой и сторонними компонентами для их решения

Citation preview

Клановые войны каждый день

Оперирование высоконагруженными продуктами

04.10.2014

Левон АвакянLive Operations Team Leadwargaming.net

2

О ДОКЛАДЕ

1. Клановые войны 2. Технологический стек и высокоуровневая

архитектура3. Оперирование Клановыми войнами4. Мониторинг5. Инструментарий

WARGAMINGКЛАНОВЫЕ ВОЙНЫ

ALL IN

4

КЛАНОВЫЕ ВОЙНЫ

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

Кланы

Укрепрайоны

Клановые войны

Технологический стек и высокоуровневая архитектура

Оперирование Клановыми войнами

Мониторинг

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

5

КЛАНЫ

Статистика

Более 150 тысяч кланов

Более 1.5 миллионов клановых игроков

Около миллиона бойцов ищут кланы.

Нагрузка до 30 тысяч запросов в минуту.

Клановые войны

Технологический стек и высокоуровневая архитектура

Оперирование Клановыми войнами

Мониторинг

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

6

ГЛОБАЛЬНАЯ КАРТА

Статистика

Около 900 игровых провинций

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

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

Клановые войны

Технологический стек и высокоуровневая архитектура

Оперирование Клановыми войнами

Мониторинг

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

7

УКРЕПРАЙОНЫ

Статистика

В production 2 месяца

85 тысяч укрепрайонов

Около 300 тысяч построек в укрепрайонах

Клановые войны

Технологический стек и высокоуровневая архитектура

Оперирование Клановыми войнами

Мониторинг

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

WARGAMINGАРХИТЕКТУРА И

ТЕХНОЛОГИЧЕСКИЙ СТЕК

9

ТЕХНОЛОГИЧЕСКИЙ СТЕККлановые войны

Технологический стек и высокоуровневая архитектура

Наши трудности и борьба с ними

Мониторинг

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

Python 2.6/2.7

Django 1.6

PostgreSQL 9.3

MySQL 5.5

Memcached

RabbitMQ 3.3

nginx

uWSGI

supervisor

celery

10

ВЫСОКОУРОВНЕВАЯ АРХИТЕКТУРАКлановые войны

Технологический стек и высокоуровневая архитектура

Оперирование Клановыми войнами

Мониторинг

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

WARGAMINGОПЕРИРОВАНИЕ КЛАНОВЫМИ

ВОЙНАМИ ОСОБЕННОСТИ

12

ОПЕРИРОВАНИЕКлановые войны

Технологический стек и высокоуровневая архитектура

Оперирование Клановыми войнами

Мониторинг

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

• Поддержка релизов компонент Клановых войн• Реализация запросов по оперированию

Клановыми войнами от бизнеса• Поддержка и сопровождение• Автоматизация и разработка инструментария

для оперирования• Интеграция Клановых войн и других проектов

13

ТЕХНИЧЕСКИЕ ОСОБЕННОСТИ КЛАНОВЫХ ВОЙН

Клановые войны

Технологический стек и высокоуровневая архитектура

Оперирование Клановыми войнами

Мониторинг

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

• Высокая связанность с другими проектами и компонентами

• Разношерстная инфраструктура на различных площадках по всему миру

• Специфические требования к игровым настройкам на различных площадках по всему миру.

• Нелинейная нагрузка (особенность игрового процесса)

• «Капризный» игровой сервер

• Большой объем данных

14

ВЫСОКАЯ СВЯЗАННОСТЬ С ДРУГИМИ ПРОЕКТАМИ И КОМПОНЕНТАМИ

Клановые войны

Технологический стек и высокоуровневая архитектура

Оперирование Клановыми войнами

Мониторинг

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

• Низкая отказоустойчивость

• Эффект домино

• Сложности при составлении календаря релизов

• Сложности при разворачивании и обновлении

15

ТИПЫ СВЯЗЕЙ Клановые войны

Технологический стек и высокоуровневая архитектура

Оперирование Клановыми войнами

Мониторинг

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

Тип Плюсы Минусы

HTTP • Требуется поддержка только на стороне серверного приложения

• Хорошо масштабируется

• Нет гарантии выполнения

• Проблемы с «крупными» запросами

AMQP • Сглаживает нагрузку

• Легко масштабируется

• Легко настраивается

• Невысокая надежность

DB • Быстрая и простая разработка

• Изменение схемы данных ведет к переработке у всех потребителей

16

ЧТО ДЕЛАТЬ СО СВЯЗЯМИ?Клановые войны

Технологический стек и высокоуровневая архитектура

Оперирование Клановыми войнами

Мониторинг

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

Количество связей нужно уменьшать(!)

Кэшируйте данные на потребителях, чтобы снизить интенсивность связей

Анализируйте каждую отдельную связь, чтобы реализовать тот или иной подход

Реализуйте, по возможности, «аварийные» режимы работы при отсутствии каких либо данных

17

РАЗНОШЕРСТНАЯ ИНФРАСТРУКТУРА НА РАЗЛИЧНЫХ ПЛОЩАДКАХ ПО

ВСЕМУ МИРУ

Клановые войны

Технологический стек и высокоуровневая архитектура

Оперирование Клановыми войнами

Мониторинг

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

Семь production площадок по всему миру

Конфигурации от нескольких серверов, до нескольких виртуальных машин

Особенности при развертываниях и релизах

Дефицит мощностей

18

КАК БОРОТЬСЯ С ВАРИАТИВНОСТЬЮ ИНФРАСТРУКТУРЫ?

Клановые войны

Технологический стек и высокоуровневая архитектура

Оперирование Клановыми войнами

Мониторинг

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

Создание базовой единицы конфигурации (мощности для приложения, СУБД, брокера)

Мультиплицирование базовых единиц конфигурации в соответствии c нагрузками для данной площадки.

Базовая единица конфигурации

DB

Applications

Мультиплицированная единица конфигурации

Appliacations

Applications

DB

Мультиплицированная единица конфигурации

Appliacations

Applications

DB

Applications

DB

19

СПЕЦИФИЧЕСКИЕ ТРЕБОВАНИЯ К ИГРОВЫМ НАСТРОЙКАМ НА РАЗЛИЧНЫХ ПЛОЩАДКАХ

Клановые войны

Технологический стек и высокоуровневая архитектура

Оперирование Клановыми войнами

Мониторинг

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

Семь production площадок по всему миру (это не опечатка, это опять трудность )

Частые изменения игровых настроек вне релизного цикла

Игровые кампании и акции

20

ЧТО ДЕЛАТЬ С ВАРИАТИВНОСТЬЮ НАСТРОЕК?

Клановые войны

Технологический стек и высокоуровневая архитектура

Оперирование Клановыми войнами

Мониторинг

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

Отделяйте инфраструктурные настройки от настроек бизнес логики или игрового процесса

Автоматизируйте тестирование применения настроек

Даже самые рутинные и простые изменения требует валидации на полноценном тестовом макете

Делайте админки – ручное изменение настроек ведет к человеческим ошибкам

WARGAMINGМОНИТОРИНГ

22

ПОДХОДЫ К МОНИТОРИНГУКлановые войны

Технологический стек и высокоуровневая архитектура

Оперирование Клановыми войнами

Мониторинг

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

Мониторинг должен информировать об угрозе катастрофы, а не только констатировать ее факт

Анализируйте данные мониторинга, не только в момент катастроф, а на постоянной основе.

Ищите закономерности

Используйте несколько источников данных, в том числе и инструментарий разработанный вами.

23

ИНСТРУМЕНТЫ ДЛЯ МОНИТОРИНГАКлановые войны

Технологический стек и высокоуровневая архитектура

Оперирование Клановыми войнами

Мониторинг

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

Zabbix – мониторинг состояния уровня hardware и OC, так же кастомные триггеры New Relic – мониторинг состояния самого приложения

Sentry – мониторинг ошибок внутри приложения.

WARGAMINGИНСТРУМЕНТАРИЙ

25

ИНСТРУМЕНТАРИЙКлановые войны

Технологический стек и высокоуровневая архитектура

Оперирование Клановыми войнами

Мониторинг

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

Puppet – разворачивание инфраструктуры для приложении.

Fabric 2.0 – инструмент реализованный на базе Fabric для автоматизации разворачивания приложений

Спасибо!

Вопросы?

Левон Авакян l_avakyan@wargaming.net

Recommended