SlideShare ist ein Scribd-Unternehmen logo
1 von 18
Егор Акулов
Ведущий программист
ММО сервера, java
Игровые ММО сервера
От социальных игр к мобильным
Динамика трафика по проектам
До этого времени мы работали с соцсетями — Мой мир, Одноклассники, Вконтакте.
Теперь мы хотим разместиться в Apple Game Center и Google Play
Что нам пришлось для этого сделать?
Авторизация Game Center — сохраняем на сервере и в свойствах приложения
сгенерированный, по ключу игрока из Apple Game Center, сервером authentication
token
IOS регистрация
lАвторизуемся в Google
lОтсылаем полученные разрешения и данные игрока на сервер.
lПроверяем полученные данные на сервере.
lГенерируем идентификатор игрока и сохраняем его на сервере и в свойствах
приложения
Google регистрация
Google + IOS авторизация
Вся авторизация сводится к отправке на сервер полученного на этапе регистрации
authentication token.
Планы
Платформ много - игра одна.
Моя
игра
IOS биллинг
Список товаров для покупки в Apple Store поставляется с игрового сервера
IOS биллинг
Каждая покупка проверяется нашим сервером и предоставляется игроку
Google биллинг
Список товаров для покупки заводится в Google Play Developer Console
Результаты покупки проверяются сервером и выдаются на сервере.
Больше ничего делать не надо
Java-сервер — важные детали
1. Архитектура
2. Network layer
3. Обработка клиентских запросов
4. Масштабирование
5. Базы данных
Архитектура
Слабая связанность (программирование по контракту, взаимодействие посредством
интерфейсов)
• Проще вносить изменения в код
• Контракт реализовывать гораздо проще
• Проще тестировать
• Проще использовать
Сильное сцепление (каждый объект фокусируется на достаточно малом четко
определенном круге задач)
• Понятные код -> легче вносить изменения.
• Проще тестировать
Spring Framework IoC(Inversion of Control)
http://static.springsource.org/spring/docs/3.0.x/reference/beans.html
Network layer
Транспортный протокол — TCP
Прикладной протокол — предпочитаем свою реализацию с использованием
сокетов, и при этом поддерживаем туннелирование по HTTP.
Бинарный сжатый — Protocol Buffers, external serialization
o ниже нагрузка на сервер
o ниже нагрузка на сеть
o лучше защищен от подделок
http://www.eclipse.org/jetty/
http://code.google.com/p/protobuf/
http://code.google.com/p/kryonet/
Обработка запросов
Многопоточность - Java Thread Pools
• Увеличение производительности сервера
• Уменьшение времени отклика. Медленные задачи не блокируют выполнение других
задач
• Эффективный доступ к ресурсам – пока один поток читает данные из БД, другие
продолжают обрабатывать запросы пользователей
Deadlock Livelock (гонки)
Масштабирование
Вертикальное масштабирование.
Введение многопоточности
Профайлинг производительности
Профайлинг garbage collector
o Garbage Less подход. Мало «среднеживущих» объектов
o Tuning GC
Различные архитектурные решения
Масштабирование
Горизонтальное масштабирование
Кластеры распределения нагрузки
• кластер менеджер – определяет узел, который будет обрабатывать клиентский
запрос
• Узел – выполняет обработку запросов пользователей
Подготовка клиента – клиент должен уметь работать с кластер менеджером
RMI – простой способ взаимодействия между элементами кластера
Закладывается на этапе формирования архитектуры
Базы данных
Справочники
• сохраняем в файлы или реляционные БД.
• справочники в виде файлов можно поставлять вместе с клиентом
Данные пользователей — key-value способ хранения.
• Данные пользователей с точки зрения БД не структурированы.
• Единица данных имеет версии, для преобразования данных на лету.
• Отложенное сохранение данных
• Ленивая инициализация данных
1. Справочники
2. Данные пользователей
3. Служебные данные – логи, статистика и т.д.
Служебные данные - на выбор разработчика в зависимости от типа данных, их
дальнейшего использования, от доступных ресурсов
Другие моменты
Статистики - производительности программных компонентов сервера, виртуальной
машины, игровые статистики
Тестирование – unit-тестирование, интеграционные тесты, нагрузочные тесты (лучше
имитировать реальную нагрузку против microbenchmarks).
Автоматизация – построение билдов, тестирование, deployment.
Хотите попробовать
Наши вакансии
http://corp.mail.ru/career/principles/
Спасибо за внимание!

Weitere ähnliche Inhalte

Was ist angesagt?

Настройка kubernetes: tips and tricks / Михаил Прокопчук (Avito)
Настройка kubernetes: tips and tricks / Михаил Прокопчук (Avito)Настройка kubernetes: tips and tricks / Михаил Прокопчук (Avito)
Настройка kubernetes: tips and tricks / Михаил Прокопчук (Avito)Ontico
 
В поисках идеальной сети, или зачем нужна еще одна SDN / Андрей Королев (Ионика)
В поисках идеальной сети, или зачем нужна еще одна SDN / Андрей Королев (Ионика)В поисках идеальной сети, или зачем нужна еще одна SDN / Андрей Королев (Ионика)
В поисках идеальной сети, или зачем нужна еще одна SDN / Андрей Королев (Ионика)Ontico
 
Как и зачем создавать NginX-модуль — теория, практика, профит. Часть 2 / Васи...
Как и зачем создавать NginX-модуль — теория, практика, профит. Часть 2 / Васи...Как и зачем создавать NginX-модуль — теория, практика, профит. Часть 2 / Васи...
Как и зачем создавать NginX-модуль — теория, практика, профит. Часть 2 / Васи...Ontico
 
Ускорение показа превью изображений в Яндекс.Диске / Сергей Нечаев (Яндекс)
Ускорение показа превью изображений в Яндекс.Диске / Сергей Нечаев (Яндекс)Ускорение показа превью изображений в Яндекс.Диске / Сергей Нечаев (Яндекс)
Ускорение показа превью изображений в Яндекс.Диске / Сергей Нечаев (Яндекс)Ontico
 
Страх и ненависть в Event Bus
Страх и ненависть в Event BusСтрах и ненависть в Event Bus
Страх и ненависть в Event Bus0leGG
 
Олег Годовых «Страх и ненависть в Event Bus»
Олег Годовых «Страх и ненависть в Event Bus»Олег Годовых «Страх и ненависть в Event Bus»
Олег Годовых «Страх и ненависть в Event Bus»DevDay
 
Велосипед уже изобретен. Что умеют промышленные СХД? / Антон Жбанков (Nutanix)
Велосипед уже изобретен. Что умеют промышленные СХД? / Антон Жбанков (Nutanix)Велосипед уже изобретен. Что умеют промышленные СХД? / Антон Жбанков (Nutanix)
Велосипед уже изобретен. Что умеют промышленные СХД? / Антон Жбанков (Nutanix)Ontico
 
SignalR
SignalRSignalR
SignalRmstDe3
 
Ec2 Rootconf2009
Ec2 Rootconf2009Ec2 Rootconf2009
Ec2 Rootconf2009Liudmila Li
 

Was ist angesagt? (9)

Настройка kubernetes: tips and tricks / Михаил Прокопчук (Avito)
Настройка kubernetes: tips and tricks / Михаил Прокопчук (Avito)Настройка kubernetes: tips and tricks / Михаил Прокопчук (Avito)
Настройка kubernetes: tips and tricks / Михаил Прокопчук (Avito)
 
В поисках идеальной сети, или зачем нужна еще одна SDN / Андрей Королев (Ионика)
В поисках идеальной сети, или зачем нужна еще одна SDN / Андрей Королев (Ионика)В поисках идеальной сети, или зачем нужна еще одна SDN / Андрей Королев (Ионика)
В поисках идеальной сети, или зачем нужна еще одна SDN / Андрей Королев (Ионика)
 
Как и зачем создавать NginX-модуль — теория, практика, профит. Часть 2 / Васи...
Как и зачем создавать NginX-модуль — теория, практика, профит. Часть 2 / Васи...Как и зачем создавать NginX-модуль — теория, практика, профит. Часть 2 / Васи...
Как и зачем создавать NginX-модуль — теория, практика, профит. Часть 2 / Васи...
 
Ускорение показа превью изображений в Яндекс.Диске / Сергей Нечаев (Яндекс)
Ускорение показа превью изображений в Яндекс.Диске / Сергей Нечаев (Яндекс)Ускорение показа превью изображений в Яндекс.Диске / Сергей Нечаев (Яндекс)
Ускорение показа превью изображений в Яндекс.Диске / Сергей Нечаев (Яндекс)
 
Страх и ненависть в Event Bus
Страх и ненависть в Event BusСтрах и ненависть в Event Bus
Страх и ненависть в Event Bus
 
Олег Годовых «Страх и ненависть в Event Bus»
Олег Годовых «Страх и ненависть в Event Bus»Олег Годовых «Страх и ненависть в Event Bus»
Олег Годовых «Страх и ненависть в Event Bus»
 
Велосипед уже изобретен. Что умеют промышленные СХД? / Антон Жбанков (Nutanix)
Велосипед уже изобретен. Что умеют промышленные СХД? / Антон Жбанков (Nutanix)Велосипед уже изобретен. Что умеют промышленные СХД? / Антон Жбанков (Nutanix)
Велосипед уже изобретен. Что умеют промышленные СХД? / Антон Жбанков (Nutanix)
 
SignalR
SignalRSignalR
SignalR
 
Ec2 Rootconf2009
Ec2 Rootconf2009Ec2 Rootconf2009
Ec2 Rootconf2009
 

Ähnlich wie Акулов Егор, Mail.ru Group

Клиентские приложения под нагрузкой, Андрей Смирнов
Клиентские приложения под нагрузкой, Андрей СмирновКлиентские приложения под нагрузкой, Андрей Смирнов
Клиентские приложения под нагрузкой, Андрей СмирновOntico
 
Клиентские приложения под нагрузкой (HighLoad 2014)
Клиентские приложения под нагрузкой (HighLoad 2014)Клиентские приложения под нагрузкой (HighLoad 2014)
Клиентские приложения под нагрузкой (HighLoad 2014)Andrey Smirnov
 
Хорошо поддерживаемое в продакшне приложение / Николай Сивко (okmeter.io)
Хорошо поддерживаемое в продакшне приложение / Николай Сивко (okmeter.io)Хорошо поддерживаемое в продакшне приложение / Николай Сивко (okmeter.io)
Хорошо поддерживаемое в продакшне приложение / Николай Сивко (okmeter.io)Ontico
 
“Tips&Tricks&Antitricks with .Net Core backend in GameDev”
“Tips&Tricks&Antitricks with .Net Core backend in GameDev”“Tips&Tricks&Antitricks with .Net Core backend in GameDev”
“Tips&Tricks&Antitricks with .Net Core backend in GameDev”HYS Enterprise
 
Continuous integration testing of mobile SDK
Continuous integration testing of mobile SDKContinuous integration testing of mobile SDK
Continuous integration testing of mobile SDKTestableapple
 
Well-executed architecture decisions for game backend on Unity
Well-executed architecture decisions for game backend on UnityWell-executed architecture decisions for game backend on Unity
Well-executed architecture decisions for game backend on UnityDevGAMM Conference
 
Средства строгой аутентификации в новой парадигме: от защиты объекта - к защи...
Средства строгой аутентификации в новой парадигме: от защиты объекта - к защи...Средства строгой аутентификации в новой парадигме: от защиты объекта - к защи...
Средства строгой аутентификации в новой парадигме: от защиты объекта - к защи...Nick Turunov
 
И снова разработка под iOS. Павел Тайкало
И снова разработка под iOS. Павел ТайкалоИ снова разработка под iOS. Павел Тайкало
И снова разработка под iOS. Павел ТайкалоStanfy
 
[1.3] Мониторинг событий ИБ — мастерим «дашборд» - Тарас Иващенко
[1.3] Мониторинг событий ИБ — мастерим «дашборд» - Тарас Иващенко[1.3] Мониторинг событий ИБ — мастерим «дашборд» - Тарас Иващенко
[1.3] Мониторинг событий ИБ — мастерим «дашборд» - Тарас ИващенкоOWASP Russia
 
Многопользовательские браузерные игры нового типа
Многопользовательские браузерные игры нового типаМногопользовательские браузерные игры нового типа
Многопользовательские браузерные игры нового типаAnton Volkov
 
SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...
SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...
SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...SECON
 
Гетерогенные сервисы для highload-проектов на примере Imhonet.ru и 4talk.im, ...
Гетерогенные сервисы для highload-проектов на примере Imhonet.ru и 4talk.im, ...Гетерогенные сервисы для highload-проектов на примере Imhonet.ru и 4talk.im, ...
Гетерогенные сервисы для highload-проектов на примере Imhonet.ru и 4talk.im, ...Ontico
 
опыт Clickberry.com стартап на drupal в облаке павел загор
опыт Clickberry.com   стартап на drupal в облаке павел загоропыт Clickberry.com   стартап на drupal в облаке павел загор
опыт Clickberry.com стартап на drupal в облаке павел загорdrupalconf
 
Антон Сапожников. Еще один недостаток современных клиент-серверных приложений
Антон Сапожников. Еще один недостаток современных клиент-серверных приложенийАнтон Сапожников. Еще один недостаток современных клиент-серверных приложений
Антон Сапожников. Еще один недостаток современных клиент-серверных приложенийPositive Hack Days
 
Azure Mobile Backend
Azure Mobile BackendAzure Mobile Backend
Azure Mobile BackendVitaly Baum
 
Разработка надежных параллельных, распределенных приложений: быстро и дешево
Разработка надежных параллельных, распределенных приложений: быстро и дешевоРазработка надежных параллельных, распределенных приложений: быстро и дешево
Разработка надежных параллельных, распределенных приложений: быстро и дешевоDotNetConf
 
Миграция JIRA - безобразие или безрассудство
Миграция JIRA - безобразие или безрассудствоМиграция JIRA - безобразие или безрассудство
Миграция JIRA - безобразие или безрассудствоSQALab
 
23may 1300 valday антон сапожников 'еще один недостаток современных клиент се...
23may 1300 valday антон сапожников 'еще один недостаток современных клиент се...23may 1300 valday антон сапожников 'еще один недостаток современных клиент се...
23may 1300 valday антон сапожников 'еще один недостаток современных клиент се...Positive Hack Days
 
Тестирование высоконагруженных облачных веб-сервисов в Amazon - подводные кам...
Тестирование высоконагруженных облачных веб-сервисов в Amazon - подводные кам...Тестирование высоконагруженных облачных веб-сервисов в Amazon - подводные кам...
Тестирование высоконагруженных облачных веб-сервисов в Amazon - подводные кам...SQALab
 

Ähnlich wie Акулов Егор, Mail.ru Group (20)

Sivko
SivkoSivko
Sivko
 
Клиентские приложения под нагрузкой, Андрей Смирнов
Клиентские приложения под нагрузкой, Андрей СмирновКлиентские приложения под нагрузкой, Андрей Смирнов
Клиентские приложения под нагрузкой, Андрей Смирнов
 
Клиентские приложения под нагрузкой (HighLoad 2014)
Клиентские приложения под нагрузкой (HighLoad 2014)Клиентские приложения под нагрузкой (HighLoad 2014)
Клиентские приложения под нагрузкой (HighLoad 2014)
 
Хорошо поддерживаемое в продакшне приложение / Николай Сивко (okmeter.io)
Хорошо поддерживаемое в продакшне приложение / Николай Сивко (okmeter.io)Хорошо поддерживаемое в продакшне приложение / Николай Сивко (okmeter.io)
Хорошо поддерживаемое в продакшне приложение / Николай Сивко (okmeter.io)
 
“Tips&Tricks&Antitricks with .Net Core backend in GameDev”
“Tips&Tricks&Antitricks with .Net Core backend in GameDev”“Tips&Tricks&Antitricks with .Net Core backend in GameDev”
“Tips&Tricks&Antitricks with .Net Core backend in GameDev”
 
Continuous integration testing of mobile SDK
Continuous integration testing of mobile SDKContinuous integration testing of mobile SDK
Continuous integration testing of mobile SDK
 
Well-executed architecture decisions for game backend on Unity
Well-executed architecture decisions for game backend on UnityWell-executed architecture decisions for game backend on Unity
Well-executed architecture decisions for game backend on Unity
 
Средства строгой аутентификации в новой парадигме: от защиты объекта - к защи...
Средства строгой аутентификации в новой парадигме: от защиты объекта - к защи...Средства строгой аутентификации в новой парадигме: от защиты объекта - к защи...
Средства строгой аутентификации в новой парадигме: от защиты объекта - к защи...
 
И снова разработка под iOS. Павел Тайкало
И снова разработка под iOS. Павел ТайкалоИ снова разработка под iOS. Павел Тайкало
И снова разработка под iOS. Павел Тайкало
 
[1.3] Мониторинг событий ИБ — мастерим «дашборд» - Тарас Иващенко
[1.3] Мониторинг событий ИБ — мастерим «дашборд» - Тарас Иващенко[1.3] Мониторинг событий ИБ — мастерим «дашборд» - Тарас Иващенко
[1.3] Мониторинг событий ИБ — мастерим «дашборд» - Тарас Иващенко
 
Многопользовательские браузерные игры нового типа
Многопользовательские браузерные игры нового типаМногопользовательские браузерные игры нового типа
Многопользовательские браузерные игры нового типа
 
SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...
SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...
SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...
 
Гетерогенные сервисы для highload-проектов на примере Imhonet.ru и 4talk.im, ...
Гетерогенные сервисы для highload-проектов на примере Imhonet.ru и 4talk.im, ...Гетерогенные сервисы для highload-проектов на примере Imhonet.ru и 4talk.im, ...
Гетерогенные сервисы для highload-проектов на примере Imhonet.ru и 4talk.im, ...
 
опыт Clickberry.com стартап на drupal в облаке павел загор
опыт Clickberry.com   стартап на drupal в облаке павел загоропыт Clickberry.com   стартап на drupal в облаке павел загор
опыт Clickberry.com стартап на drupal в облаке павел загор
 
Антон Сапожников. Еще один недостаток современных клиент-серверных приложений
Антон Сапожников. Еще один недостаток современных клиент-серверных приложенийАнтон Сапожников. Еще один недостаток современных клиент-серверных приложений
Антон Сапожников. Еще один недостаток современных клиент-серверных приложений
 
Azure Mobile Backend
Azure Mobile BackendAzure Mobile Backend
Azure Mobile Backend
 
Разработка надежных параллельных, распределенных приложений: быстро и дешево
Разработка надежных параллельных, распределенных приложений: быстро и дешевоРазработка надежных параллельных, распределенных приложений: быстро и дешево
Разработка надежных параллельных, распределенных приложений: быстро и дешево
 
Миграция JIRA - безобразие или безрассудство
Миграция JIRA - безобразие или безрассудствоМиграция JIRA - безобразие или безрассудство
Миграция JIRA - безобразие или безрассудство
 
23may 1300 valday антон сапожников 'еще один недостаток современных клиент се...
23may 1300 valday антон сапожников 'еще один недостаток современных клиент се...23may 1300 valday антон сапожников 'еще один недостаток современных клиент се...
23may 1300 valday антон сапожников 'еще один недостаток современных клиент се...
 
Тестирование высоконагруженных облачных веб-сервисов в Amazon - подводные кам...
Тестирование высоконагруженных облачных веб-сервисов в Amazon - подводные кам...Тестирование высоконагруженных облачных веб-сервисов в Amazon - подводные кам...
Тестирование высоконагруженных облачных веб-сервисов в Amazon - подводные кам...
 

Mehr von Nata_Churda

Александра Алябьева "Поиск IT-специалистов. Шагнем за рамки привычного?"
Александра Алябьева "Поиск IT-специалистов. Шагнем за рамки привычного?"Александра Алябьева "Поиск IT-специалистов. Шагнем за рамки привычного?"
Александра Алябьева "Поиск IT-специалистов. Шагнем за рамки привычного?"Nata_Churda
 
Алексей Аболмасов "Критерии сильного HR-решения"
Алексей Аболмасов "Критерии сильного HR-решения"Алексей Аболмасов "Критерии сильного HR-решения"
Алексей Аболмасов "Критерии сильного HR-решения"Nata_Churda
 
«Хайлоад в рассылке почты: как спать спокойно»
«Хайлоад в рассылке почты: как спать спокойно»«Хайлоад в рассылке почты: как спать спокойно»
«Хайлоад в рассылке почты: как спать спокойно»Nata_Churda
 
«Лучшие предложения aviasales.ru, или как не упустить важное среди 150 миллио...
«Лучшие предложения aviasales.ru, или как не упустить важное среди 150 миллио...«Лучшие предложения aviasales.ru, или как не упустить важное среди 150 миллио...
«Лучшие предложения aviasales.ru, или как не упустить важное среди 150 миллио...Nata_Churda
 
«Механизмы обновления платформы и окружений пользователей в Jelastic»
«Механизмы обновления платформы и окружений пользователей в Jelastic»«Механизмы обновления платформы и окружений пользователей в Jelastic»
«Механизмы обновления платформы и окружений пользователей в Jelastic»Nata_Churda
 
«PRFLR - OpenSource инструмент для анализа производительности кода»
«PRFLR - OpenSource инструмент для анализа производительности кода»«PRFLR - OpenSource инструмент для анализа производительности кода»
«PRFLR - OpenSource инструмент для анализа производительности кода»Nata_Churda
 
«Делимся опытом разработки высоконагруженных мобильных приложений на примере ...
«Делимся опытом разработки высоконагруженных мобильных приложений на примере ...«Делимся опытом разработки высоконагруженных мобильных приложений на примере ...
«Делимся опытом разработки высоконагруженных мобильных приложений на примере ...Nata_Churda
 
«Как ради производительности высоконагруженного приложения мы разработали соб...
«Как ради производительности высоконагруженного приложения мы разработали соб...«Как ради производительности высоконагруженного приложения мы разработали соб...
«Как ради производительности высоконагруженного приложения мы разработали соб...Nata_Churda
 
«Облачная платформа Windows Azure для высоконагруженных проектов»
«Облачная платформа Windows Azure для высоконагруженных проектов»«Облачная платформа Windows Azure для высоконагруженных проектов»
«Облачная платформа Windows Azure для высоконагруженных проектов»Nata_Churda
 
Алена Новоселова, Яндекс.Деньги
Алена Новоселова, Яндекс.ДеньгиАлена Новоселова, Яндекс.Деньги
Алена Новоселова, Яндекс.ДеньгиNata_Churda
 
Артем Кумпель, ITmozg
Артем Кумпель, ITmozgАртем Кумпель, ITmozg
Артем Кумпель, ITmozgNata_Churda
 
Белогрудов Владислав, EMC
Белогрудов Владислав, EMCБелогрудов Владислав, EMC
Белогрудов Владислав, EMCNata_Churda
 
Александр Ильин, Oracle
Александр Ильин, OracleАлександр Ильин, Oracle
Александр Ильин, OracleNata_Churda
 
Анатолий Кондратьев, Exigen Services
Анатолий Кондратьев, Exigen ServicesАнатолий Кондратьев, Exigen Services
Анатолий Кондратьев, Exigen ServicesNata_Churda
 
Алексей Николаенков, Devexperts
Алексей Николаенков, DevexpertsАлексей Николаенков, Devexperts
Алексей Николаенков, DevexpertsNata_Churda
 
Анна Ященко, Google
Анна Ященко, GoogleАнна Ященко, Google
Анна Ященко, GoogleNata_Churda
 
Елизавета Штофф, iChar
Елизавета Штофф, iCharЕлизавета Штофф, iChar
Елизавета Штофф, iCharNata_Churda
 
Шпунтенко Ольга, Mail.ru Group
Шпунтенко Ольга, Mail.ru GroupШпунтенко Ольга, Mail.ru Group
Шпунтенко Ольга, Mail.ru GroupNata_Churda
 
Екатерина Евсеева, ITmozg
Екатерина Евсеева, ITmozgЕкатерина Евсеева, ITmozg
Екатерина Евсеева, ITmozgNata_Churda
 
Александр Ильин, Oracle
Александр Ильин, OracleАлександр Ильин, Oracle
Александр Ильин, OracleNata_Churda
 

Mehr von Nata_Churda (20)

Александра Алябьева "Поиск IT-специалистов. Шагнем за рамки привычного?"
Александра Алябьева "Поиск IT-специалистов. Шагнем за рамки привычного?"Александра Алябьева "Поиск IT-специалистов. Шагнем за рамки привычного?"
Александра Алябьева "Поиск IT-специалистов. Шагнем за рамки привычного?"
 
Алексей Аболмасов "Критерии сильного HR-решения"
Алексей Аболмасов "Критерии сильного HR-решения"Алексей Аболмасов "Критерии сильного HR-решения"
Алексей Аболмасов "Критерии сильного HR-решения"
 
«Хайлоад в рассылке почты: как спать спокойно»
«Хайлоад в рассылке почты: как спать спокойно»«Хайлоад в рассылке почты: как спать спокойно»
«Хайлоад в рассылке почты: как спать спокойно»
 
«Лучшие предложения aviasales.ru, или как не упустить важное среди 150 миллио...
«Лучшие предложения aviasales.ru, или как не упустить важное среди 150 миллио...«Лучшие предложения aviasales.ru, или как не упустить важное среди 150 миллио...
«Лучшие предложения aviasales.ru, или как не упустить важное среди 150 миллио...
 
«Механизмы обновления платформы и окружений пользователей в Jelastic»
«Механизмы обновления платформы и окружений пользователей в Jelastic»«Механизмы обновления платформы и окружений пользователей в Jelastic»
«Механизмы обновления платформы и окружений пользователей в Jelastic»
 
«PRFLR - OpenSource инструмент для анализа производительности кода»
«PRFLR - OpenSource инструмент для анализа производительности кода»«PRFLR - OpenSource инструмент для анализа производительности кода»
«PRFLR - OpenSource инструмент для анализа производительности кода»
 
«Делимся опытом разработки высоконагруженных мобильных приложений на примере ...
«Делимся опытом разработки высоконагруженных мобильных приложений на примере ...«Делимся опытом разработки высоконагруженных мобильных приложений на примере ...
«Делимся опытом разработки высоконагруженных мобильных приложений на примере ...
 
«Как ради производительности высоконагруженного приложения мы разработали соб...
«Как ради производительности высоконагруженного приложения мы разработали соб...«Как ради производительности высоконагруженного приложения мы разработали соб...
«Как ради производительности высоконагруженного приложения мы разработали соб...
 
«Облачная платформа Windows Azure для высоконагруженных проектов»
«Облачная платформа Windows Azure для высоконагруженных проектов»«Облачная платформа Windows Azure для высоконагруженных проектов»
«Облачная платформа Windows Azure для высоконагруженных проектов»
 
Алена Новоселова, Яндекс.Деньги
Алена Новоселова, Яндекс.ДеньгиАлена Новоселова, Яндекс.Деньги
Алена Новоселова, Яндекс.Деньги
 
Артем Кумпель, ITmozg
Артем Кумпель, ITmozgАртем Кумпель, ITmozg
Артем Кумпель, ITmozg
 
Белогрудов Владислав, EMC
Белогрудов Владислав, EMCБелогрудов Владислав, EMC
Белогрудов Владислав, EMC
 
Александр Ильин, Oracle
Александр Ильин, OracleАлександр Ильин, Oracle
Александр Ильин, Oracle
 
Анатолий Кондратьев, Exigen Services
Анатолий Кондратьев, Exigen ServicesАнатолий Кондратьев, Exigen Services
Анатолий Кондратьев, Exigen Services
 
Алексей Николаенков, Devexperts
Алексей Николаенков, DevexpertsАлексей Николаенков, Devexperts
Алексей Николаенков, Devexperts
 
Анна Ященко, Google
Анна Ященко, GoogleАнна Ященко, Google
Анна Ященко, Google
 
Елизавета Штофф, iChar
Елизавета Штофф, iCharЕлизавета Штофф, iChar
Елизавета Штофф, iChar
 
Шпунтенко Ольга, Mail.ru Group
Шпунтенко Ольга, Mail.ru GroupШпунтенко Ольга, Mail.ru Group
Шпунтенко Ольга, Mail.ru Group
 
Екатерина Евсеева, ITmozg
Екатерина Евсеева, ITmozgЕкатерина Евсеева, ITmozg
Екатерина Евсеева, ITmozg
 
Александр Ильин, Oracle
Александр Ильин, OracleАлександр Ильин, Oracle
Александр Ильин, Oracle
 

Акулов Егор, Mail.ru Group

  • 1. Егор Акулов Ведущий программист ММО сервера, java Игровые ММО сервера От социальных игр к мобильным
  • 2. Динамика трафика по проектам До этого времени мы работали с соцсетями — Мой мир, Одноклассники, Вконтакте. Теперь мы хотим разместиться в Apple Game Center и Google Play Что нам пришлось для этого сделать?
  • 3. Авторизация Game Center — сохраняем на сервере и в свойствах приложения сгенерированный, по ключу игрока из Apple Game Center, сервером authentication token IOS регистрация
  • 4. lАвторизуемся в Google lОтсылаем полученные разрешения и данные игрока на сервер. lПроверяем полученные данные на сервере. lГенерируем идентификатор игрока и сохраняем его на сервере и в свойствах приложения Google регистрация
  • 5. Google + IOS авторизация Вся авторизация сводится к отправке на сервер полученного на этапе регистрации authentication token. Планы Платформ много - игра одна. Моя игра
  • 6. IOS биллинг Список товаров для покупки в Apple Store поставляется с игрового сервера
  • 7. IOS биллинг Каждая покупка проверяется нашим сервером и предоставляется игроку
  • 8. Google биллинг Список товаров для покупки заводится в Google Play Developer Console Результаты покупки проверяются сервером и выдаются на сервере.
  • 10. Java-сервер — важные детали 1. Архитектура 2. Network layer 3. Обработка клиентских запросов 4. Масштабирование 5. Базы данных
  • 11. Архитектура Слабая связанность (программирование по контракту, взаимодействие посредством интерфейсов) • Проще вносить изменения в код • Контракт реализовывать гораздо проще • Проще тестировать • Проще использовать Сильное сцепление (каждый объект фокусируется на достаточно малом четко определенном круге задач) • Понятные код -> легче вносить изменения. • Проще тестировать Spring Framework IoC(Inversion of Control) http://static.springsource.org/spring/docs/3.0.x/reference/beans.html
  • 12. Network layer Транспортный протокол — TCP Прикладной протокол — предпочитаем свою реализацию с использованием сокетов, и при этом поддерживаем туннелирование по HTTP. Бинарный сжатый — Protocol Buffers, external serialization o ниже нагрузка на сервер o ниже нагрузка на сеть o лучше защищен от подделок http://www.eclipse.org/jetty/ http://code.google.com/p/protobuf/ http://code.google.com/p/kryonet/
  • 13. Обработка запросов Многопоточность - Java Thread Pools • Увеличение производительности сервера • Уменьшение времени отклика. Медленные задачи не блокируют выполнение других задач • Эффективный доступ к ресурсам – пока один поток читает данные из БД, другие продолжают обрабатывать запросы пользователей Deadlock Livelock (гонки)
  • 14. Масштабирование Вертикальное масштабирование. Введение многопоточности Профайлинг производительности Профайлинг garbage collector o Garbage Less подход. Мало «среднеживущих» объектов o Tuning GC Различные архитектурные решения
  • 15. Масштабирование Горизонтальное масштабирование Кластеры распределения нагрузки • кластер менеджер – определяет узел, который будет обрабатывать клиентский запрос • Узел – выполняет обработку запросов пользователей Подготовка клиента – клиент должен уметь работать с кластер менеджером RMI – простой способ взаимодействия между элементами кластера Закладывается на этапе формирования архитектуры
  • 16. Базы данных Справочники • сохраняем в файлы или реляционные БД. • справочники в виде файлов можно поставлять вместе с клиентом Данные пользователей — key-value способ хранения. • Данные пользователей с точки зрения БД не структурированы. • Единица данных имеет версии, для преобразования данных на лету. • Отложенное сохранение данных • Ленивая инициализация данных 1. Справочники 2. Данные пользователей 3. Служебные данные – логи, статистика и т.д. Служебные данные - на выбор разработчика в зависимости от типа данных, их дальнейшего использования, от доступных ресурсов
  • 17. Другие моменты Статистики - производительности программных компонентов сервера, виртуальной машины, игровые статистики Тестирование – unit-тестирование, интеграционные тесты, нагрузочные тесты (лучше имитировать реальную нагрузку против microbenchmarks). Автоматизация – построение билдов, тестирование, deployment.