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

26
Клановые войны каждый день Оперирование высоконагруженными продуктами 04.10.20 14 Левон Авакян Live Operations Team Lead wargaming.n et

Upload: -

Post on 20-Jun-2015

167 views

Category:

Software


4 download

DESCRIPTION

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

TRANSCRIPT

Page 1: Оперирование высоко нагруженными проектами. Или "Клановые войны" каждый день

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

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

04.10.2014

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

Page 2: Оперирование высоко нагруженными проектами. Или "Клановые войны" каждый день

2

О ДОКЛАДЕ

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

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

Page 3: Оперирование высоко нагруженными проектами. Или "Клановые войны" каждый день

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

ALL IN

Page 4: Оперирование высоко нагруженными проектами. Или "Клановые войны" каждый день

4

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

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

Кланы

Укрепрайоны

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

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

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

Мониторинг

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

Page 5: Оперирование высоко нагруженными проектами. Или "Клановые войны" каждый день

5

КЛАНЫ

Статистика

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

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

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

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

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

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

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

Мониторинг

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

Page 6: Оперирование высоко нагруженными проектами. Или "Клановые войны" каждый день

6

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

Статистика

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

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

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

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

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

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

Мониторинг

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

Page 7: Оперирование высоко нагруженными проектами. Или "Клановые войны" каждый день

7

УКРЕПРАЙОНЫ

Статистика

В production 2 месяца

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

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

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

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

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

Мониторинг

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

Page 8: Оперирование высоко нагруженными проектами. Или "Клановые войны" каждый день

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

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

Page 9: Оперирование высоко нагруженными проектами. Или "Клановые войны" каждый день

9

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

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

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

Мониторинг

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

Python 2.6/2.7

Django 1.6

PostgreSQL 9.3

MySQL 5.5

Memcached

RabbitMQ 3.3

nginx

uWSGI

supervisor

celery

Page 10: Оперирование высоко нагруженными проектами. Или "Клановые войны" каждый день

10

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

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

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

Мониторинг

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

Page 11: Оперирование высоко нагруженными проектами. Или "Клановые войны" каждый день

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

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

Page 12: Оперирование высоко нагруженными проектами. Или "Клановые войны" каждый день

12

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

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

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

Мониторинг

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

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

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

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

Page 13: Оперирование высоко нагруженными проектами. Или "Клановые войны" каждый день

13

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

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

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

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

Мониторинг

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

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

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

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

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

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

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

Page 14: Оперирование высоко нагруженными проектами. Или "Клановые войны" каждый день

14

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

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

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

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

Мониторинг

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

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

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

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

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

Page 15: Оперирование высоко нагруженными проектами. Или "Клановые войны" каждый день

15

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

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

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

Мониторинг

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

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

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

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

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

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

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

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

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

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

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

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

Page 16: Оперирование высоко нагруженными проектами. Или "Клановые войны" каждый день

16

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

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

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

Мониторинг

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

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

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

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

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

Page 17: Оперирование высоко нагруженными проектами. Или "Клановые войны" каждый день

17

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

ВСЕМУ МИРУ

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

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

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

Мониторинг

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

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

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

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

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

Page 18: Оперирование высоко нагруженными проектами. Или "Клановые войны" каждый день

18

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

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

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

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

Мониторинг

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

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

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

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

DB

Applications

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

Appliacations

Applications

DB

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

Appliacations

Applications

DB

Applications

DB

Page 19: Оперирование высоко нагруженными проектами. Или "Клановые войны" каждый день

19

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

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

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

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

Мониторинг

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

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

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

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

Page 20: Оперирование высоко нагруженными проектами. Или "Клановые войны" каждый день

20

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

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

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

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

Мониторинг

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

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

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

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

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

Page 21: Оперирование высоко нагруженными проектами. Или "Клановые войны" каждый день

WARGAMINGМОНИТОРИНГ

Page 22: Оперирование высоко нагруженными проектами. Или "Клановые войны" каждый день

22

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

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

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

Мониторинг

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

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

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

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

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

Page 23: Оперирование высоко нагруженными проектами. Или "Клановые войны" каждый день

23

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

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

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

Мониторинг

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

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

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

Page 24: Оперирование высоко нагруженными проектами. Или "Клановые войны" каждый день

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

Page 25: Оперирование высоко нагруженными проектами. Или "Клановые войны" каждый день

25

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

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

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

Мониторинг

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

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

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

Page 26: Оперирование высоко нагруженными проектами. Или "Клановые войны" каждый день

Спасибо!

Вопросы?

Левон Авакян [email protected]