Дневники разработчиков: о профработах

Евпраксия

Аллоды Навсегда!
Аллоды Онлайн (НБ)
Проверенный
Регистрация
03.08.2012
Сообщения
6 882
Реакции
0
Награды
7
88bf168bfbee.png

В этом выпуске дневников разработчиков речь пойдёт об одной из самых животрепещущих тем – о том, как нелегко нашим админам держать на своих могучих плечах серверы во время профилактических работ!

06062013_boromir.png

«Уважаемые игроки! Сегодня с --:-- до --:-- по мск будут проводиться профилактические работы на всех серверах…».

Каждый раз, как на нашем сайте появляется подобная новость, Сарнаут замирает для всех вас. И каждый раз находится тот, кто обязательно спросит: «почему так долго?!».

Как вы можете подозревать, профилактические работы – несколько более сложный процесс, чем перезагрузка компьютера. Мы постараемся рассказать вам обо всех особенностях профилактики и внесём ясность в понимание загадок, которые всегда не давали покоя умам игроков.

Сразу стоит внести оговорку в терминологию: для игроков сервер – это отражение Сарнаута («Раскол», «Наследие Джунов», «Нить судьбы» и т. д.), а с точки зрения системного администратора, сервер – это один физический сервер, металлическая коробка определённой формы, нашпигованная «мощными» деталями.

Они различаются по размеру и содержанию в зависимости от целей, для которых предназначены.

06062013_servers.png

На одно отражение Сарнаута приходятся десятки ядер и сотни гигабайт оперативной памяти. Каждый игровой сервер – это восемь современных и мощных физических серверов.

Почему их несколько?

Игровой сервер - сложноорганизованная система, где каждый элемент выполняет определённые задачи. Как в часовом механизме, в котором важна каждая шестерёнка, в этой системе важен каждый физический сервер. Какие-то из них отвечают за работу игровой механики, какие-то - за доступ в игровой мир, на других происходит сохранение информации и ещё множество важных процессов. Если хотя бы одна из частей этого сложного «механизма» выйдет из строя - в опасности окажутся остальные.

Все производственные мощности находятся в специализированном помещении для обработки, хранения и передачи информации — дата-центре. Подобные «серверные» всегда оборудованы по последнему слову техники, а внутри них поддерживается определённая температура, что способствует работоспособности оборудования.

Также, что немаловажно, серверная обеспечена широкополосным каналом интернет-соединения.

Как правило, выглядят все дата-центры однотипно: множество шкафов со стойками, в которых расположены слоты с электроникой на салазках.

06062013_datacenter.png

(примерно так выглядит дата-центр)

Но давайте вернёмся непосредственно к нашей теме. Для игроков начало профилактики наступает в тот момент, когда заканчивает обратный отсчёт, запущенный после появления внутриигрового сообщения: «Уважаемые игроки! Сегодня с --:-- до --:-- по мск будут проводиться профилактические работы на всех серверах…».

Что же происходит в эти часы за кулисами студии Allods Team? Подготовка уже идёт полным ходом, все на своих местах, ждут команды.

Итак, 3…2…1… СТОП!


sep_in.gif


1. Выключение серверов

sep_in.gif

Первым делом наши боевые админы запускают процесс «опустошения» серверов. Это обязательная процедура, без неё завершение работы прошло бы некорректно. За этот период необходимо выгнать всех игроков из игрового мира и зафиксировать прогресс развития персонажей. Остановка серверов только начинается.

Сейчас происходит сохранение всего игрового прогресса. В обычных условиях автоматическое сохранение растянуто во времени и не имеет единого момента записи. Говоря проще, в игре постоянно что-то сохраняется.

В случае же выключения серверов в базе единовременно фиксируется прогресс всех игроков, которые только что покинули игровой мир. Это достаточно большой объём информации, и это занимает время.

Наконец, серверы отключаются.

Что интересно, судя по комментариям на форуме, у игроков складывается мнение, что профилактика должна продолжаться небольшой промежуток времени. Однако не всё так просто.


sep_in.gif


2. Сохранение информации

sep_in.gif

Как только в игровом мире не останется ни одного персонажа, запустится процесс сохранения базы данных – формируется «бэкап».

Перед установкой новой версии в обязательном порядке создаётся резервная копия всей игровой информации. Если людей поделить на тех, кто уже бэкапит и на тех, кто ещё не делает бэкапов, то мы - третий тип - те, кто бэкапит всегда.

Чтобы понять, сколько времени на это уходит, попробуйте скопировать несколько десятков гигабайт информации с одного жёсткого диска на другой. Теперь представьте, что игровая база хранится на более пятистах жёстких дисках, а общий объём памяти исчисляется сотнями терабайт.

Во время профилактики нам приходится копировать информацию в огромном количестве несколькими потоками одновременно. Этот процесс требует пристального внимания.


sep_in.gif


3. Установка обновления и запуск серверов

sep_in.gif

Следующий шаг – установка обновления. Стоит отметить, что в данном контексте имеется в виду не установка глобального обновления, которые происходят несколько раз в год, а вообще какое-либо обновление базы. Ведь даже хотфикс - это обновление, просто маленькое.

Со стороны процесс выглядит весьма занимательно: суровый админ вводит загадочные рунические символы в командную строку, а та в свою очередь что-то ему отвечает.

06062013_admin.png

(админ за работой)​

Именно это таинство, занимающее до половины времени профилактических работ, и является «обновой» – на серверы копируется новая версия исполняемых файлов и игровых ресурсов. Мы называем это «Деплой».

После завершения копирования происходит старт машин. Чтобы игроки смогли зайти в игру, необходимо запустить 80 физических серверов, а это не так просто. Все игровые игровые серверы запускаются параллельно, согласованно выполняя множество подготовительной работы. К примеру, в процессе запуска происходит обновление структуры базы данных, об объёме которой вы уже имеете представление.

По сути, для облегчения понимания, базу можно отдалённо сравнить с экселем, только с огромным количеством таблиц, полей, столбцов и ячеек. Она не статична. Во время обновления неизбежно меняется её структура, происходит адаптация старой версии под новые игровые реалии – появляются новые разделы, какие-то удаляются, что-то дополняется.

Что подразумевается под новыми реалиями?

Это может быть замена игровых предметов в сумке/банке/почте, добавление поддержки новых структур данных вроде появления возможности инкрустировать самоцветы в предметы, и многое-многое другое.

Но игровая база, состоящая из таблиц, ресурсов и ещё множества исполняемых файлов, является лишь строительным материалом. За время запуска сервер собирает элементы данных воедино, инициализируя игровой мир: расставляет объекты и населяющих Сарнаут неигровых персонажей и монстров на свои места, подгружает карты, просчитывает пути. Одним словом – выстраивается трёхмерная модель мира, чтобы он смог ожить. Процесс подготовки к открытию идёт полным ходом.

Только после завершения сборки этого «конструктора» появляется возможность в нём существовать.

Помните, как Морфиус первый раз показывал Избранному модель матрицы? Пустое белое пространство. Спустя мгновение на этом месте выстраивались трёхмерные объекты, пустота заполнялась потоками информации. Вот и на наших серверах происходит нечто подобное. Разве что у инженера матрицы серверы помощнее были, хотя и не факт.

Однако мы всегда ищем более рациональные пути решения задач и оптимизируем все процессы для их ускорения. Мир создавался 7 дней, а мы создаём Сарнаут за несколько десятков минут.

Если обновление большое, профилактика может затягиваться из-за ряда особенностей:
  • Обновление системного программного обеспечения. Это особенно долгий процесс, который занимает до 5-6 часов. Именно поэтому мы стараемся проводить подобные технические работы в момент наименьшей активности игроков. Сложилось так, что это время выпадает на ночные часы в Москве. Пока большинство игроков спит, наши системные администраторы проводят обновление программного обеспечения серверов.
  • Обновление оборудования. Например, если требуется заменить какую-либо часть в каком-то из серверов или сервер полностью.
  • Пожалуй, самая существенная особенность - обновление данных персонажей. Хоть этот процесс полностью автоматизирован, он затрагивает всех персонажей, зарегистрированных в игре. Продолжительность данного этапа занимает несколько часов. Если речь идёт об установке обычного хотфикса, а не крупного контентного обновления (например, ... 4.0.01, 4.0.02, 4.0.03 ... и так далее) оно сокращается до нескольких минут.

Чтобы заранее устранить все возможные риски и отладить все процессы, мы всегда проводим «репетицию» обновления на тестовом сервере, технические характеристики которого идентичны любому из игровых серверов.

Тем не менее, админ всегда находится в шаговой доступности от разработчиков и в любой момент может оперативно отреагировать на любую внештатную ситуацию. А все вместе мы всегда неподалёку от Сарнаута, мы всегда следим из окон своего офиса, что всё в порядке.

06062013_novograd.png


06062013_nezeb.png



sep_in.gif


4. Проверка

sep_in.gif

Серверы запущены, но пока ещё не открыты для всех. В бой вступает специально обученная группа сотрудников, отвечающих за контроль качества. Они производят базовую проверку работоспособности основных элементов игры. Такие как: механика работы телепортов, аукциона, почты, корректность запуска внутриигровых событий, Лавка Редкостей, базовая механика работы астрала и многое другое.

Пускай квалификация наших специалистов закалена годами работы, проверить абсолютно все особенности игрового процесса небольшой группе людей просто невозможно.

Именно поэтому мы всегда просим оперативно сообщать в центр поддержки пользователей информацию о каких-либо игровых ошибках. Ведь игроков в разы больше, чем сотрудников студии, и шанс найти ошибку намного выше. После этого ошибка передаётся разработчикам, а они стараются оперативно внести соответствующие правки.

Обратите внимание, что просто так «зафиксить баг» без остановки сервера невозможно. Необходимо обязательно провести мини-обновление - хотфикс.

По результатам финального тестирования, если не выявлено каких либо ошибок, принимается решение, будет ли обновление открыто игрокам.


sep_in.gif


5. Открытие обновления для скачивания

sep_in.gif

Файлы обновления загружаются на патч-сервер и открываются для игроков.

С этого момента всем, кто запустит Игровой Центр, обновление игры станет доступно для скачивания.

Кстати говоря, если появилась возможность скачать обновление, это ещё не означает, что сервер открыт для входа. Если обновление большое, мы стараемся выдать его несколько раньше, чтобы к моменту запуска всех серверов игроки смогли частично или полностью скачать его.

И вот, серверы открыты, можно зайти в игровой мир. Всё возвращается на круги своя, Сарнаут оживает.

Далее за своё дело принимаются саппорт, комьюнити менеджеры, специалисты контроля качества и многие другие, в чьи задачи входит сбор информации от игроков после проведения профилактики. Мы ведь должны знать, что всё в порядке. Но, впрочем, это совсем другая история…

На основе всего сказанного уже можно представить всё многообразие и сложность процесса проведения профилактики.




sep_in.gif


Послесловие

sep_in.gif

В момент установки обновления на игровые серверы всегда формируется рабочая группа для оперативного реагирования на любые ситуации. В её числе состоят не только системные администраторы, но и разработчики, а также операторы технической и информационной поддержки.

Даже в ночные часы всегда есть тот, кто следит за серверами и делает всё возможное для обеспечения их стабильности. Если необходимо, дежурный может разбудить среди ночи всех ответственных сотрудников, и вот уже мы, борясь с чарами Морфея, хватаем на лету чашку кофе и сломя голову бежим в офис исправлять положение.

Вот так, благодаря силам и стараниям наших админов и всех остальных, живёт и процветает Сарнаут, Нихаз пытается строить свои коварные планы, Сарн – разрушить этот мир, а Тэп, казалось бы, создатель иллюзорного мира, и сам не подозревает, что живёт в виртуальной реальности.

Надеемся, что нам удалось доступным языком рассказать вам, что же на самом деле представляет собой профилактика, и приоткрыть занавес этого загадочного события. Теперь вы знаете, насколько непрост этот процесс.

Всегда ваши, Allods Team!
 

Krosha

Что наша жизнь - игра
Администратор
Corepunk ЗБТ
Проверенный
Регистрация
03.03.2010
Сообщения
17 773
Реакции
244
Награды
14
Довольно таки интересно.
 

TpaHcnopT

Нос ты упырь =)
Проверенный
Регистрация
29.10.2011
Сообщения
492
Реакции
0
Награды
1
О чём и говорилось что профилактика это не просто перезагрузить домашний компик :) От чего много было умников и тролей с речами о том что разрабы/админы криворукие и что каждый школьник всё сделает быстрей :)
Думаю это наглядное пособие заткнет рот кислотно-рвотным существам :)
 

No cake

Проверенный
Регистрация
27.11.2011
Сообщения
470
Реакции
0
почему так долго?! ;D
Меня всегда интересовал вопрос... что изначально сделано не так и почему вечно лагает из за движка или хреново работающих серверов?=) А подобную информацию что они вывалили можно и в википендии почитать, опять жижа какая то, текста много, толку ноль =)
 

Евпраксия

Аллоды Навсегда!
Аллоды Онлайн (НБ)
Проверенный
Регистрация
03.08.2012
Сообщения
6 882
Реакции
0
Награды
7
в лагах где-то на 95% виноваты обычно компьютер и интернет пользователя

хотя собственно уже в этом виноват не пользователь, а то что игра плохо оптимизирована под разные сочетания систем
 

Равэнна

И вечный гринд и фарм, покой нам только снится
Проверенный
Регистрация
12.10.2011
Сообщения
1 303
Реакции
0
Меня интересует почему при установке обновлений разработчики никогда не укладываются в установленный ими самими изначальный срок? И могут продлевать до 5 (а вроде пару раз и 7) раз подряд на полчаса, 10 минут, час или два...
Как будто на Виндоус все работает (а не на пингвинчиках), которые умудряются даже при копировании нскольких файлов несколько раз подряд выдавать разные промежутки времени.
Евпраксия написал(а):
в лагах где-то на 95% виноваты обычно компьютер и интернет пользователя

хотя собственно уже в этом виноват не пользователь, а то что игра плохо оптимизирована под разные сочетания систем
Даш, я тебя удивлю наверное, но по собственному опыту скажу - Аллоды умудряются лагать клиентским кружочком даже при канале в 20Мбит и на Макинтошах (у которых железо унифицировано)...
 

Петро

Глаза боятся, а руки - крюки!
Проверенный
Регистрация
27.12.2009
Сообщения
1 978
Реакции
0
Награды
3
Евпраксия написал(а):
в лагах где-то на 95% виноваты обычно компьютер и интернет пользователя

хотя собственно уже в этом виноват не пользователь, а то что игра плохо оптимизирована под разные сочетания систем
Ну да для нормальной работы АО видимо комп и интернет, сопоставимые с серверами у них в офисе нужны)) "десятки ядер и сотни гигабайт оперативной памяти"(с)
 

Фантази

Аллоды Онлайн (НС)
Регистрация
11.04.2012
Сообщения
1 185
Реакции
11
Награды
3
Петро написал(а):
Евпраксия написал(а):
в лагах где-то на 95% виноваты обычно компьютер и интернет пользователя

хотя собственно уже в этом виноват не пользователь, а то что игра плохо оптимизирована под разные сочетания систем
Ну да для нормальной работы АО видимо комп и интернет, сопоставимые с серверами у них в офисе нужны)) "десятки ядер и сотни гигабайт оперативной памяти"(с)
согласен с Петей. Пусть уж и пропишут какое нужно железо. Интересно то
 

Phibrizzo

Старая гвардия (АО ВА)
Проверенный
Регистрация
16.01.2011
Сообщения
5 481
Реакции
11
Награды
7
У меня единицы ядер и десятки гигабайт оперативной памяти. Аллоды у меня не пойдут. =(
Вообще баян. Это (почти) все мы и так знали как само собой разумеющееся.

Системные требования где-то были написаны. По-моему на коробке с игрой есть, но искать ее влом. А еше есть на сайте:
http://allods.mail.ru/download.php
 

Maserati

Проверенный
Регистрация
29.04.2013
Сообщения
329
Реакции
0
Награды
2
В большинстве случаев действительно виновато железо юзера, а сис. требования указанные на сайте то есть, максимальные:

Проц: Core i3 1.8GHz
Оперативка: 4096 Мб ОЗУ
Видюха: GeForce GTS 250 с 512MB, поддержка шейдеров 2.0, монитор с разрешением 1024x768 и выше

На мой взгляд такие требования можно назвать скорее минимальными... Лично у меня Core2 Duo 2.2Ghz и видеокарта 1Gb - и в основном игра не лагает, иногда только из-за действительно проблем с сервером или у меня с интернетом

Вот собственно ссылка на требования: http://allods.mail.ru/download.php
 

Фантази

Аллоды Онлайн (НС)
Регистрация
11.04.2012
Сообщения
1 185
Реакции
11
Награды
3
Да спасибо, ссылку уже дали, а с тобой незнакомец я согласен. Скорее всего ихние же рекомендуемые, больше похожи на минималку. Игра у меня то не лагает, а вылетает - выдавая ошибку клиента :dntknw
 

Агатадемон

Проверенный
Регистрация
24.11.2011
Сообщения
466
Реакции
0
TpaHcnopT написал(а):
О чём и говорилось что профилактика это не просто перезагрузить домашний компик :) От чего много было умников и тролей с речами о том что разрабы/админы криворукие и что каждый школьник всё сделает быстрей :)
Думаю это наглядное пособие заткнет рот кислотно-рвотным существам :)

умники и троли, если ты не заметил, всегда удивлялись почему команда разработчиков АО ни разу! не уложилась во временные промежутки указанные ИМИ же
 

Valery0036

Старая гвардия (АО ВА)
Проверенный
Регистрация
07.06.2011
Сообщения
780
Реакции
0
Награды
2
открываешь лавку жадности и игра вылетает с ошибкой, тоже комп или интернет виноваты? :p
 
Сверху Снизу