secon'2016. Парамонов Сергей, Автоматизируй это! Как не...

40
Автоматизируй это! Как при разработке игры не погрязнуть в рутине и сохранить время на креатив

Upload: secon

Post on 21-Feb-2017

169 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: SECON'2016. Парамонов Сергей, Автоматизируй это! Как не погрязнуть в рутине при разработке игры

Автоматизируй это!Как при разработке игры не погрязнуть в рутине

и сохранить время на креатив

Page 2: SECON'2016. Парамонов Сергей, Автоматизируй это! Как не погрязнуть в рутине при разработке игры

Разработка игр

Page 3: SECON'2016. Парамонов Сергей, Автоматизируй это! Как не погрязнуть в рутине при разработке игры

Заглянем под капот

Page 4: SECON'2016. Парамонов Сергей, Автоматизируй это! Как не погрязнуть в рутине при разработке игры

Что мы автоматизируем

• Серверная инфраструктура• Мониторинг• Развертывание приложений• Логирование• И даже Гейм дизайн

Page 5: SECON'2016. Парамонов Сергей, Автоматизируй это! Как не погрязнуть в рутине при разработке игры

Серверная инфраструктура

Page 6: SECON'2016. Парамонов Сергей, Автоматизируй это! Как не погрязнуть в рутине при разработке игры

Проблемы

• Различная конфигурация серверов• Различные версии ПО• Различные настройки• Нет четко выделенной роли сервера• Единственная возможность что-то узнать,

залезть в голову админа

Page 7: SECON'2016. Парамонов Сергей, Автоматизируй это! Как не погрязнуть в рутине при разработке игры

«He is alive, alive»- у каждого сервера есть душа

Page 8: SECON'2016. Парамонов Сергей, Автоматизируй это! Как не погрязнуть в рутине при разработке игры

Решения

• Разделение ролей серверов• Систематизация ПО• Соглашение о структуре сервера• Система управления конфигурацией• Автоматические тесты

Page 9: SECON'2016. Парамонов Сергей, Автоматизируй это! Как не погрязнуть в рутине при разработке игры

Системы конфигурирования серверов

• Puppet• Salt• Chef• Ansible

Page 10: SECON'2016. Парамонов Сергей, Автоматизируй это! Как не погрязнуть в рутине при разработке игры

Пример конфигурации

Page 11: SECON'2016. Парамонов Сергей, Автоматизируй это! Как не погрязнуть в рутине при разработке игры

Результат

• Покупка сервера за минуту• Установка ПО за час

Page 12: SECON'2016. Парамонов Сергей, Автоматизируй это! Как не погрязнуть в рутине при разработке игры

Мониторинг

Page 13: SECON'2016. Парамонов Сергей, Автоматизируй это! Как не погрязнуть в рутине при разработке игры

Задачи

• Информировать о критической ситуации• Дать как можно больше информации для

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

ситуации• Мониторить мониторинг• Исправлять

Page 14: SECON'2016. Парамонов Сергей, Автоматизируй это! Как не погрязнуть в рутине при разработке игры

«Лучший мониторинг»

Page 15: SECON'2016. Парамонов Сергей, Автоматизируй это! Как не погрязнуть в рутине при разработке игры

Проблемы мониторинга

• Децентрализованность и не системность• Отсутствие интеграции с приложениями• Отсутствие связи с другими процессами

компании• «Вольное» обращение со статусами сенсоров

Page 16: SECON'2016. Парамонов Сергей, Автоматизируй это! Как не погрязнуть в рутине при разработке игры

Ключ к решению

• Централизация• Интеграция с приложениями• Культура статусов: ошибка - это ошибка, варнинг

- это варнинг.• Конфигурация и статистика• Синтетический критерий эффективности• Мониторинг не должен замедлять и нарушать

работу приложения

Page 17: SECON'2016. Парамонов Сергей, Автоматизируй это! Как не погрязнуть в рутине при разработке игры

Если мы знаем ошибку, то почему бы ее не исправить

Page 18: SECON'2016. Парамонов Сергей, Автоматизируй это! Как не погрязнуть в рутине при разработке игры

Наш велосипед

Page 19: SECON'2016. Парамонов Сергей, Автоматизируй это! Как не погрязнуть в рутине при разработке игры

Наш велосипед

Page 20: SECON'2016. Парамонов Сергей, Автоматизируй это! Как не погрязнуть в рутине при разработке игры

Deployment

Page 21: SECON'2016. Парамонов Сергей, Автоматизируй это! Как не погрязнуть в рутине при разработке игры

Все уже решено

• Maven• Jenkins• Пакетные менеджеры

Page 22: SECON'2016. Парамонов Сергей, Автоматизируй это! Как не погрязнуть в рутине при разработке игры

Правда жизни

• Не все системы работают с CI (сеансы скриптовой магии)

• Как подружить maven c Flash или Unity3D?• Развертывание проекта на несколько серверов• Быстрый откат версии

Page 23: SECON'2016. Парамонов Сергей, Автоматизируй это! Как не погрязнуть в рутине при разработке игры

Наш велик

Page 24: SECON'2016. Парамонов Сергей, Автоматизируй это! Как не погрязнуть в рутине при разработке игры

Наш велик

Page 25: SECON'2016. Парамонов Сергей, Автоматизируй это! Как не погрязнуть в рутине при разработке игры

Ведение логов

Page 26: SECON'2016. Парамонов Сергей, Автоматизируй это! Как не погрязнуть в рутине при разработке игры

Извечные проблемы с логами

• Слишком мало данных - ничего не понятно• Слишком много данных - ничего не понятно

Page 27: SECON'2016. Парамонов Сергей, Автоматизируй это! Как не погрязнуть в рутине при разработке игры

Логироваие на этапе разработки

• Писать всё!• Правильные статусы• Наборы конфигураций с подавлением

некоторых компонент системы

Page 28: SECON'2016. Парамонов Сергей, Автоматизируй это! Как не погрязнуть в рутине при разработке игры

Логи в production

• Писать вообще всё!• Запись в лог, это не просто строка, а строчка бд с

идентификаторами.• Все что относится к проекту пишется в лог

проекта• Правильное хранилище• Логи не должны тормозить приложение.

Page 29: SECON'2016. Парамонов Сергей, Автоматизируй это! Как не погрязнуть в рутине при разработке игры

Чужой велосипед с нашими колесами

• Log4J• Свой Appender• Helper и formater для записи логов• ElasticSearch + Logstash + Kibana• UDP протокол• Мониторинг

Page 30: SECON'2016. Парамонов Сергей, Автоматизируй это! Как не погрязнуть в рутине при разработке игры

Online доступ к логам

Page 31: SECON'2016. Парамонов Сергей, Автоматизируй это! Как не погрязнуть в рутине при разработке игры

Гейм дизайн

• Google Spreadsheets • Google Script• XML

Page 32: SECON'2016. Парамонов Сергей, Автоматизируй это! Как не погрязнуть в рутине при разработке игры

Google в помощь

Page 33: SECON'2016. Парамонов Сергей, Автоматизируй это! Как не погрязнуть в рутине при разработке игры

Скрипты автоматизации

Page 34: SECON'2016. Парамонов Сергей, Автоматизируй это! Как не погрязнуть в рутине при разработке игры

Разработка

• Любая библиотека – это автоматизация, что же ты будешь про все библиотеки рассказывать?

• Да, буду

Page 35: SECON'2016. Парамонов Сергей, Автоматизируй это! Как не погрязнуть в рутине при разработке игры

Общая функциональность

• Авторизация• Биллинг• Нотификация

Page 36: SECON'2016. Парамонов Сергей, Автоматизируй это! Как не погрязнуть в рутине при разработке игры

Сервисы

Page 37: SECON'2016. Парамонов Сергей, Автоматизируй это! Как не погрязнуть в рутине при разработке игры

Требования к сервисам

• Работа 24/7• Надежность, не при каких обстоятельствах

сервис не должен упасть• Возможность обновлять на лету.• Устойчивость к нагрузкам• Версионность

Page 38: SECON'2016. Парамонов Сергей, Автоматизируй это! Как не погрязнуть в рутине при разработке игры

Автоматизация труда

• Форматеры• Code Template• Scrum scripts

Page 39: SECON'2016. Парамонов Сергей, Автоматизируй это! Как не погрязнуть в рутине при разработке игры

Интеграция

• Принцип «одного» места• Уведомления• Чатботы

Page 40: SECON'2016. Парамонов Сергей, Автоматизируй это! Как не погрязнуть в рутине при разработке игры

Вопросы?Сергей Парамонов

Технический директорООО «Тортуга»

http://tortuga.social/

[email protected]