«Создание высокопроизводительного игрового сервера на PYTHON» СОЗДАНИЕ ВЫСОКОПРОИЗВОДИТЕЛЬНОГО ИГРОВОГО СЕРВЕРА НА PYTHON: ПРОЕКТИРОВАНИЕ, РАЗРАБОТКА, РАЗВЕРТЫВАНИЕ (двухнедельный практический семинар) Даты проведения: 19-23, 26-30 января 2015 года Срок подачи заявки: 15 января 2015 года Время проведения: 9.00-12.00 Тренер: Алексей Романов, инженер-программист компании-резидента ПВТ ”Гейм Стрим“ (Минский центр разработки Wargaming) Цели семинара: - знакомство с технологиями разработки клиент-серверных игр; - получение практических навыков проектирования, разработки, тестирования игровых серверов; - освоение инструментария, использующегося для разработки и тестирования игровых серверов. Программа/Учебные вопросы: Обзор ПО, используемого для разработки игровых серверов. 1. Введение в разработку игр. 2. Почему Python? 3. Зачем нужен MySql? 4. Применение RabbitMQ. 5. О пользе Redis. 6. Развертывание основных компонентов игры на Linux-хосте. Проектирование общей архитектуры системы. Анализ архитектуры, выделение её сильных и слабых сторон. 1. Формулирование требований к тестовому проекту. 2. Обзор вариантов архитектуры игр, исторический экскурс. 3. Введение в мультисервисную архитектуру с использованием брокера. 4. Анализ предложенной архитектуры, выявление её сильных и слабых сторон. 5. Практическая проверка некоторых архитектурных вопросов. Разработка схемы данных. 1. Моделирование схемы данных исходя из требований к программному продукту. 2. Имплементация схемы данных на реальной СУБД(MySQL). 3. Особенности использования индексов и внешних ключей в MySQL. 4. Использование хранимых процедур в MySQL. Обзор особенностей разработки асинхронного ПО. 1. Примитивы асинхронного программирования: reactor, deferred, callback, coroutine. 2. Введение в библиотеку Twisted. 3. Применение Twisted для решения практических задач. 4. Введение в callback hell, возможные пути решения проблемы. Реализация игровой логики в коде. 1. Реализация базового игрового сервера на Python+Twisted. 2. Реализация игровой функциональности на Python+Twisted. Развертывание ПО на тестовом сервере. 1. Развертывание серверного ПО на ОС Linux 2. Пакетный менеджер APT. 3. Пакетный менеджер pip. 4. Настройка тестовой среды для развертывания игры. 5. Развертывание игры на тестовом сервере. Функциональное тестирование сервера. 1. Тестирование игрового сервера консольным клиентом. 2. Создание unit-тестов для тестирования игрового сервера. 3. Создание функциональных тестов игрового сервера с использованием trial. 4. Измерение покрытия кода тестами. Тестирование производительности полученного решения. 1. Обоснование необходимости тестирования производительности. 2. Разработка плана тестирования производительности. 3. Ключевые параметры производительности игрового сервера. 4. Проведение теста производительности. 5. Анализ результатов теста производительности. Особенности развертывания полученного решения на производственных серверах. 1. Производственная конфигурация сервера: проблемы и решения. 2. Обзор инструментов автоматизированного развертывания: puppet, chef, fabric, rsync. 3. Развертывание игры в производственной конфигурации. 4. Подведение итогов. Максимальное количество слушателей: 15 человек Специальные требования к слушателям: знание основ алгоритмизации, знание основ ООП (объекто-ориентированного программирования), базовые знания SQL, знание одного из языков программирования на среднем уровне: Python, C/C++, Ruby, знание основ компьютерных сетей, базовые знание устройства ОС Linux, навык работы в командной строке ОС Linux. Место проведения: г. Минск, ул. Купревича 1, корпус 1, 9 этаж, учебный класс №923.