Отказоустойчивые игры с облаком – как делают игры на...
TRANSCRIPT
Александр БелоцерковскийЭксперт по стратегическим технологиям, Microsoft
Отказоустойчивые игры с облаком – как делают игры на миллионы пользователей
Agenda
Предпосылки к облаку
Проблемы в разработке
Игровые ситуации и облако
Хранение и обработка данных
Внутриигровые коммуникации и мультиплеер
Мобильные приложения
Аналитика и большие данные
DevOps
Работа с игровыми проектами в облаке – несколько замечаний
Предпосылки к облаку
Игры становятся сервисами
Меняется подход к поставке игровых проектов
Соответственно, меняется подход к дальнейшей поддержке
Монетизация проекта становится постоянно-живущим процессом – бизнес-модель в пределах одного проекта постоянно оттачивается и адаптируется
Игровым студиям открываются новые рынки
Конкретные проблемы конкретных разработчиков
Приложения-компаньоны
Сохранение состояния (хранение данных)
Телеметрия и аналитика
AI
Мультиплеерные коммуникации
Высокие и экстремально-высокие нагрузки
Ситуация 1: хранение и обработка данных
Счетчики производительности можно собирать каждую секунду
В мобильных приложениях действие пользователя = новое событие
В мультиплеере количество сообщений/сек может превышать сотни тысяч
Нужно большое, быстрое, гибкое хранилище.
Кейс 1: Хранение и обработка данныхархитектура
Traffic Manager
http://myawesomegame.ru
cloud servicehttp://us.cloudapp.net
worker roles web roles
cloud servicehttp://ru.cloudapp.net
worker rolesweb roles
Storage:Blobs/Tables/SQL Azure/SQL Server
• Azure Web Role• Фронтенд
• Azure Blob• Сохранение состояния• Другие (мета)данные
• Azure Queue/Service Bus• Соединяет компоненты
• SQL Database• База данных для данных сессий
Компоненты решения
TablesNoSQL-
хранилище «ключ-
значение»
QueuesКоммуникац
ии между компонента
ми
BlobsФайловые данные,
мультимедиа,
документы,
двоичные файлы
Traffic Manage
rПеревод запросов
SQL Azure
SQL Server как сервис
160М+ЗАГРУЗОК
$10МВЫРУЧКА
Общий облачный back-end для игр на Windows, Android и iOS
Connected Gameplay
Microsoft Azure – глобальное покрытиераспределение нагрузки
http://www.globalfoundationservices.com/
Ситуация 2: Multiplayer FPS, всплескиархитектура
Traffic Manager
http://myawesomegame.ru
cloud servicehttp://us.cloudapp.net
worker roles web roles
cloud servicehttp://ru.cloudapp.net
worker rolesweb roles
Physics cluster Physics cluster
Mastermind cluster
Компоненты решения
TablesNoSQL-
хранилище «ключ-
значение»
QueuesКоммуникац
ии между компонента
ми
BlobsФайловые данные,
мультимедиа,
документы, двоичные
файлы
Traffic Manag
erПеревод запросов
SQL Azure
SQL Server как сервис
Virtual Machines Виртуальные
машины с Windows/Linux для тяжелых нагрузок
Ситуация 3: мобильные приложения
Galactic Reign: пошаговая стратегия
• Windows Phone и Windows 8
• Рендеринг последовательности битв происходит в облаке
Azure Mobile Services
Пуш-уведомления
Хранение данных в облаке
Аутентификация пользователей
Windows Store iOSAndroidXamarin
Windows Phone 8iOSAndroidHTML5/JS
Open Source SDK
Source Control
Scripting: table,
scheduled &
custom API
REST API
Twitter Microsoft Google
Active Director
y
SQL Table Storage
Blob Storage
WNS & MPNS
APNS GCM
Mongo DB
Компоненты решения
BlobsФайловые данные,
мультимедиа, документы, двоичные
файлы
SQL Azure
SQL Server как сервис
Virtual Machines
Виртуальные машины с Windows/Linux для тяжелых нагрузок и администраторских
задач
Web Apps Веб-сайт для
пользователей и администраторов
Ситуация 4: предиктивная аналитика и большие данные
В Halo 4 используется реализация Hadoop HDInsight для получения инсайтов из сырых игровых данных
Инсайты – какие режимы предпочитают игроки, длительность игры, количество убийств и др.
Ситуация 4: предиктивная аналитика и большие данные
HDInsight
кластеры Hadoop
в облаке по запросу
ML
машинное обучение быстро
и дешево
Stream Analytic
sаналитика огромных потоков
данных в RT
Data Factoryтрансфор-мирование
потоков данных
Batch
HPC по запросу на тысячи VM
Ситуация 5: DevOps
Клиент на iPhone упал
Запросы тормозят
БД лежитПинги большие
Разделом никто не пользуется
DevOps на Azure
Развертывание
Мониторинг и диагностика
Разработка
Xplat CLI Knife-Azure
Puppet CLI
Vagrant-Azure
Инфраструктура и скриптование
Release Management
Application Insights
DSC Extension
Release Management
Powershell
OpInsights
Опыт работы с игровыми проектами показал:
Игры в облаке работают, и работают хорошо
Но для того, чтобы игры в облаке работали хорошо, существует необходимость:
оптимизировать жизненный цикл пользовательского запроса оптимизировать формат внутренних сообщений правильно использовать правильные инструменты активно тестировать максимально отвязывать компоненты проекта друг от друга
Agenda
Предпосылки к облаку
Проблемы в разработке
Игровые ситуации и облако
Хранение и обработка данных
Внутриигровые коммуникации и мультиплеер
Мобильные приложения
Аналитика и большие данные
DevOps
Работа с игровыми проектами в облаке – несколько замечаний
Контакты
Александр Белоцерковский{Microsoft Russia | Tech Expert Cloud, HPC & IoT}
[email protected]; @ahriman_ru; ahriman.ru
http://blogs.msdn.com/b/albe
http://azurehub.ru
© 2014 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.