secon'2016. Парамонов Сергей, Автоматизируй это! Как не...
TRANSCRIPT
Автоматизируй это!Как при разработке игры не погрязнуть в рутине
и сохранить время на креатив
Разработка игр
Заглянем под капот
Что мы автоматизируем
• Серверная инфраструктура• Мониторинг• Развертывание приложений• Логирование• И даже Гейм дизайн
Серверная инфраструктура
Проблемы
• Различная конфигурация серверов• Различные версии ПО• Различные настройки• Нет четко выделенной роли сервера• Единственная возможность что-то узнать,
залезть в голову админа
«He is alive, alive»- у каждого сервера есть душа
Решения
• Разделение ролей серверов• Систематизация ПО• Соглашение о структуре сервера• Система управления конфигурацией• Автоматические тесты
Системы конфигурирования серверов
• Puppet• Salt• Chef• Ansible
Пример конфигурации
Результат
• Покупка сервера за минуту• Установка ПО за час
Мониторинг
Задачи
• Информировать о критической ситуации• Дать как можно больше информации для
решения кризиса• Прогнозировать и предугадывать кризисные
ситуации• Мониторить мониторинг• Исправлять
«Лучший мониторинг»
Проблемы мониторинга
• Децентрализованность и не системность• Отсутствие интеграции с приложениями• Отсутствие связи с другими процессами
компании• «Вольное» обращение со статусами сенсоров
Ключ к решению
• Централизация• Интеграция с приложениями• Культура статусов: ошибка - это ошибка, варнинг
- это варнинг.• Конфигурация и статистика• Синтетический критерий эффективности• Мониторинг не должен замедлять и нарушать
работу приложения
Если мы знаем ошибку, то почему бы ее не исправить
Наш велосипед
Наш велосипед
Deployment
Все уже решено
• Maven• Jenkins• Пакетные менеджеры
Правда жизни
• Не все системы работают с CI (сеансы скриптовой магии)
• Как подружить maven c Flash или Unity3D?• Развертывание проекта на несколько серверов• Быстрый откат версии
Наш велик
Наш велик
Ведение логов
Извечные проблемы с логами
• Слишком мало данных - ничего не понятно• Слишком много данных - ничего не понятно
Логироваие на этапе разработки
• Писать всё!• Правильные статусы• Наборы конфигураций с подавлением
некоторых компонент системы
Логи в production
• Писать вообще всё!• Запись в лог, это не просто строка, а строчка бд с
идентификаторами.• Все что относится к проекту пишется в лог
проекта• Правильное хранилище• Логи не должны тормозить приложение.
Чужой велосипед с нашими колесами
• Log4J• Свой Appender• Helper и formater для записи логов• ElasticSearch + Logstash + Kibana• UDP протокол• Мониторинг
Online доступ к логам
Гейм дизайн
• Google Spreadsheets • Google Script• XML
Google в помощь
Скрипты автоматизации
Разработка
• Любая библиотека – это автоматизация, что же ты будешь про все библиотеки рассказывать?
• Да, буду
Общая функциональность
• Авторизация• Биллинг• Нотификация
Сервисы
Требования к сервисам
• Работа 24/7• Надежность, не при каких обстоятельствах
сервис не должен упасть• Возможность обновлять на лету.• Устойчивость к нагрузкам• Версионность
Автоматизация труда
• Форматеры• Code Template• Scrum scripts
Интеграция
• Принцип «одного» места• Уведомления• Чатботы
Вопросы?Сергей Парамонов
Технический директорООО «Тортуга»
http://tortuga.social/