3.7.4 패치 적용시 발생한 장애 리포트

오늘 3.7.4 패치를 적용하며 발생한 몇 가지 문제로 인해 점검 시간이 약 2시간 연장되었고 처음 신규 패치를 적용한 시점부터 수정된 패치 적용 시간 차이로 인해 게임 플레이 기록이 소실 되었습니다.
오늘 점검 중 정확히 어떤 일이 발생했는지 설명드리고, 앞으로는 이런한 일이 발생하지 않도록 하기 위해 이 자리를 빌어 말씀 드리고자 합니다.


타임라인

오늘 오전 9시, 3.7.4 패치를 적용하기 시작했으며, 점검 시간은 약 18분 진행 되었습니다.
이후 오전 9시 18분, 모든 렐름은 정상화 되었습니다. 그리고 오전 9시 25분, 패스 오브 엑자일의 한국 퍼블리셔:카카오게임즈 측의 제보로 기존 계정을 보유한 한국 플레이어 여러분이 게임에 접속할 시, 신규 계정을 생성해야 하는 오류가 발생한다는 내용을 확인하게 되었습니다.

해당 문제의 원인을 파악하지 못한 상황에서 제가 내린 결정은 더 큰 피해가 발생하기 전에 한국 게이트웨이를 닫는 것이었습니다. 이는 추가적으로 발생하는 피해를 막고 해당 문제에 대해 조사할 시간을 가지기 위함이었습니다.
저희는 프로덕션 또는 서버 관리 팀에서 해당 패치가 계정 데이터베이스 이전을 포함하고 있음을 미처 인지하지 못했다는 사실을 확인할 수 있었습니다. 위의 계정 데이터베이스 이전 과정에서 카카오 계정이 모두 소실되었다는 사실 또한 알게되었습니다.

저희가 사용하는 계정 연동 시스템은 데이터베이스 이전에 문제가 생길 때를 방지하여 특정 데이터 테이블을 신속하게 되돌리는 기능이 있습니다. 그래서 렐름을 잠시 내리고 계정 정보를 롤백한 뒤 이전 패치인 3.7.3d로 재적용 하기로 결정했습니다. 이 방법으로 처음 3.7.4 패치 적용후 게임을 진행한 플레이어들의 정보도 잃지 않고 패치내에 있었던 문제도 수정할 수 있었기 때문입니다. 렐름을 내린 시간은 오전 9시 35분입니다.

오전 9시 48분 계정 데이터베이스만 롤백된 3.7.3d를 적용하였습니다.
그 후 얼마 지나지 않아 플레이어분들로부터 화석을 잃어버렸다는 제보를 받기 시작했습니다. 3.7.3d 패치에는 화석이 중첩되지 않았기에 보관함 탭에 중첩해둔 화석을 잃어버리게 된 것입니다. 죄송스럽게도 계정 데이터베이스를 복구하기로 결정했을 때 화석에 대한 생각까지 미쳐 못했었습니다.

앞으로 더 발생할 피해를 막기 위해 오전 10시에 렐름을 다시 내렸습니다.

아쉽게도 이 정도로 데이터가 꼬이는 상황이 발생하면 데이터베이스 복구가 불가능하게 됩니다. 그래서 29분의 게임 플레이 시간은 잃게되지만 전체적인 데이터베이스 복구를 하기로 결정했습니다. 더 귀중한 화석을 잃게 되는 큰 피해를 입기 전에 29분의 데이터를 잃어버리는게 앞으로 발생할 피해가 더 적을것이라고 판단했기 때문입니다.

오전 10시 5분에 지정된 시간으로의 복구를 위해 데이터베이스 롤백을 시작했습니다. 이러한 상황을 해결하기 위해 데이터베이스를 롤백하는 과정은 다소 시간이 소요되었으며, 10시 45분 모든 작업을 완료할 수 있었습니다.

이 때 수정된 3.7.4 패치는 적용 준비가 완료되었고 3.7.3d 패치를 다시 서버에 적용시키기 보다는 몇 분 기다렸다가 3.7.4 패치적용을 하고 렐름을 재시작하는게 나을 것 같다고 생각했었습니다.
오전 11시 4분 3.7.4 패치의 렐름을 재시작하였고 수정된 계정 이전은 오전 11시 15분에 모두 정상적으로 완료되었습니다. 이 후로 모든 플레이어 분들은 게임에 접속할 수 있었습니다.

이 과정으로 총 123분의 시간이 점검시간이 소요되었고 29분의 게임 플레이 기록은 사라지게 되었습니다.


조나단의 메세지

이번 장애가 발생하게 된 과정에는 아래와 같이 몇 가지 실수가 있었습니다.

첫 번째로, 데이터베이스 이전(마이그레이션)이 패치에 추가될 때 관련 담당자들에게 공유되지 않았습니다.
일반적으로 패치에 데이터베이스 이전이 포함될 경우 데이터 유실을 피하고 관련 문제가 발생하지 않도록 QA 담당자와 서버 담당자들이 더 각별히 신경을 쓰고는 합니다.
하지만, 이번의 경우 변경 사항들을 병합하는 과정에서 담당 프로듀서가 변경 사항 중 데이터베이스 이전이 포함되어 있다는 사실을 미처 인지하지 못했습니다.
추후 이러한 문제가 재발하는 것을 방지하기 위해, 저희는 프로듀서들이 인지하지 못한 채 데이터베이스 이전이 진행되는 것을 방지하는 시스템을 추가할 예정입니다.

두 번째 실수는 저희 QA팀이 해당 이슈를 사전에 발견하지 못했다는 점입니다.
물론 해당 내용이 QA팀에 사전 전달된 내용은 아니지만, QA팀에서 충분히 발견할 수 있는 기본적인 문제였다고 생각합니다.
QA의 ‘확인 목록(Quick-Check List)’에는 카카오의 로그인 기능이 정상 작동하는지를 확인하는 부분이 포함되어 있었지만, 기존에 연동되어 있는 카카오 계정이 계속 존재하는지를 검증하는 부분은 포함되어 있지 않았습니다. 저희는 해당 확인 목록을 수정해나갈 예정입니다.

마지막으로, 저의 실수가 있었습니다.
계정 이전의 문제가 발생했다는 사실을 인지한 후 저는 3.7.4 패치에 변경된 사항들이 3.7.3d로 롤백되는 과정에서 발생할 문제에 대해 충분히 생각해 볼 시간을 가지지 않은 채 패치를 롤백하기로 결정을 내렸습니다.
앞으로는 롤백을 진행하게 되면 발생할 수 있는 문제점에 대해 충분히 고려한 후 이러한 결정을 내리도록 하겠습니다.
물론 해당 문제에 대해 충분히 고려하여 결정을 내린 상황에서도 점검으로 인해 게임을 플레이 하지 못하는 시간이 일정 시간 동안 발생했을 것입니다.

하지만, 플레이어 여러분의 게임플레이 기록이 소실되는 상황은 발생하지 않았을 것입니다.
이번에 발생한 상황은 분명 저희가 플레이어 여러분께 제공하고 싶어하는 서비스 수준에 맞지 않았습니다.
이러한 상황이 발생한 것 그리고 해당 상황을 처리하는 과정에서 미숙한 점이 있었던 것에 진심으로 사과의 말씀을 전합니다.
추후 이러한 상황이 발생하는 것을 방지하기 위해 저희는 최선을 다할 것입니다. 플레이어 분들께서 그라인딩 기어 게임즈에 바라시는 기대에 부응하고, 추후 이러한 문제가 재발하지 않도록 최선을 다하도록 하겠습니다.

감사합니다.

조나단


아래는 원문 내용입니다.


3.7.4 Deployment Downtime Incident Report

Today during the deployment of the 3.7.4 patch we encountered some problems that led to an extended amount of downtime for Path of Exile as well as progress loss for any gameplay time played between when we initially deployed 3.7.4 and when we were finally able to deploy the fixed version approximately 2 hours later. I would like to take some time to explain what happened and how we will be preventing it in the future.

Timeline

At 12:00 NZT today we took the realm down to deploy 3.7.4. The downtime took approximately 18 minutes and the realm was back up at 12:18 NZT. At 12:25 NZT we were informed by Kakao Games, our Korean publisher, that Korean users who were logging in were being presented with the Create New Account dialog instead of logging into the existing accounts.

Without knowing what the problem was, my first call was to order the shutdown of the Korean login gateway in order to potentially reduce the amount of damage that might be done so that we could get time to investigate.

We fairly quickly determined that the patch contained a database migration to accounts that nobody from the production or server admin teams knew was in the patch. This migration destroyed all Kakao credentials in the database.

The migration system we use has the ability to fairly quickly swap back a specific data table in the case that a database migration causes damage, so we decided to shut the realm down, roll back the account data and redeploy 3.7.3d, preserving player progress made after the deploy, until we could create a fixed version of 3.7.4. We shut the realm down at 12:35 NZT.

At 12:48 NZT we had deployed 3.7.3d with the rolled back account database only.

Soon after that we started getting reports that people had lost fossils. Because in 3.7.3d fossils did not have a stack size, the stack size was lost when a user loaded any stash tab with stacked fossils in it. Unfortunately when I made the call to roll back the accounts database, I failed to consider the situation with fossils.

In order to prevent further damage, the realm was shutdown again at 13:00 NZT.

Unfortunately, this type of corruption wouldn't have been possible to fix with post-hoc analysis of logs so we decided to do a full database point-in-time rollback which would lose 29 minutes of player gameplay. I made the call that the economic damage of losing 29 minutes of game time would probably be lower than the economic impact of a lot of players losing a large number of valuable fossils.

By 13:05 NZT we started the process of rolling back the database with point-in-time recovery. Rolling the database backwards in this manner is a somewhat slow process, but by 13:45 NZT it was complete.

At this point we realised that the fixed version of 3.7.4 was very close to being ready, so we decided to wait for it to be deployed to the servers rather than deploy 3.7.3d again only to restart the realm again a few minutes later.

At 14:04 NZT we restarted the realm on version 3.7.4, and the (fixed) migration ran which was completed at 14:15 NZT at which point we allowed access to all the players.

In total this incident led to 123 minutes of effective downtime including the 29 minutes of gameplay that was lost.

Response

There were several mistakes made that led to this incident.

The first one is that a database migration was added to a patch without anyone being informed. Normally, when a database migration is included in a patch, there is special attention applied by QA and the server administrators to make sure that no data is lost and that it doesn't cause any issues. The producer who merged the change was unaware that there was a migration in the change they merged. In order to make sure that these changes get attention, we will add a system to prevent migrations being added without specific acknowledgement by the producer.

The second problem is that our QA processes didn't catch the issue. Even though this area wasn't flagged to QA, the problem was basic enough that we should have discovered it. The QA Quick-Check list did include that Kakao login is functional, but it didn't include a check to make sure that an old account still exists! We will be amending the checklist.

The third mistake was mine. After I learned about the faulty account migration I didn't take enough time to consider the changes in 3.7.4 to work out if any of them could have caused potential issues before making the call to roll back to 3.7.3d. In the future, we will make sure to understand all of the repercussions of a rollback before making this call. We would still have had some downtime, but we would have prevented any player gameplay loss.

This incident is not up to the standard of service that we want to provide to you, and I want to personally apologise for how it was handled. You should expect better from Grinding Gear Games and we will be doing everything we can to avoid this type of thing in the future.

Thanks,

Jonathan

글 작성자: 
카카오게임즈

게시판 글 신고

신고 계정:

신고 유형

추가 정보