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