여러분, 안녕하세요.
대부분 알고 계시겠지만, 최신 v32.00 포트나이트 출시 버전에서는 몇 가지 안정성 문제와 성능 저하가 있었습니다. 여기에는 플레이어가 UEFN과 포크리 콘텐츠를 이용할 수 없는 문제, UEFN 및 크리에이터 포털을 이용할 수 없는 문제와 같은 심각한 장애와 일부 기능 버그가 포함됩니다.
v32.10에서도 플레이어와 크리에이터가 몇 시간 동안 UEFN 콘텐츠와 도구를 간헐적으로 이용할 수 없던 문제가 발생했습니다.
두 출시 버전은 에픽의 기준을 충족하지 못했고, 내부적으로 이러한 문제를 어떻게 파악하지 못했는지와 앞으로의 프로세스 개선 방안에 대한 많은 토의가 있었습니다.
다양한 기능과 경험의 안정성과 호환성을 보장하면서도 포트나이트 에코시스템을 빠르게 발전시키는 것은 쉽지 않은 일이지만, 저희는 이를 달성하기 위해 헌신하고 있습니다. 저희의 실수에서 배우고, 책임을 회피하지 않는다는 뜻입니다. 또한 최근 크리에이터 여러분께 발생한 주요 문제, 에픽의 대응, 구현할 변경 사항을 투명하게 공개하고자 합니다.
이러한 의미에서, 아래 v32 출시 버전의 가장 심각한 문제를 요약해 드립니다. 각 요약에는 문제, 원인, 영향, 실수로부터 배워 구현한 변경 사항이 포함됩니다.
다음 내용이 v32.00 및 v32.10의 유일한 버그는 아니지만, 에코시스템 전체에 영향을 주었으며, 에픽의 내부 중요 사건 절차를 촉발했습니다.
문제: 콘텐츠 서비스 품질 저하(v32.00 및 v32.10)
콘텐츠 서비스란 포크리와 UEFN에서 제작된 모든 콘텐츠를 추적하는 에픽의 내부 시스템입니다. 이러한 콘텐츠에는 버전과 퍼블리싱 상태와 같은 메타데이터가 포함됩니다. 본질적으로 콘텐츠 서비스는 에픽의 ‘메타버스 인덱스’ 역할을 하며, 포트나이트와 UEFN 기능에 핵심적입니다.
에픽에서 UEFN의 사용 분야를 확대함에 따라, 콘텐츠 서비스에 대한 의존도도 증가했습니다.
v32.00 업데이트의 포트나이트 클라이언트 및 서버 변경 사항은 의도치 않게 대규모 콘텐츠 서비스 트래픽 증가라는 결과를 낳았습니다. 일반적인 부하의 10배가 넘는 트래픽이 걸린 때도 있었습니다. 이러한 트래픽 폭증은 콘텐츠 서비스가 부하를 처리하기 위해 규모를 확장하려는 오류로 이어졌습니다. 결론적으로 여러 UEFN과 포크리 기능에 영향을 주었습니다.
서비스를 재구성하거나 규모를 확대하려는 시도는 실패로 돌아갔고, 클라이언트 또는 서버 비헤이비어를 수정할 즉각적인 방법도 없었습니다. 다행히 에픽 에코시스템 안정성 팀이 방화벽을 구성해 관리 가능한 수준으로 트래픽을 낮추는 데 성공해 서비스를 복구할 수 있었습니다.
v32.10 출시 버전에서 과도한 클라이언트 및 서버 트래픽을 해결했지만, 출시 당일 자연 트래픽이 여전히 높아 콘텐츠 서비스 퍼포먼스가 또 한 번 저하되었습니다. 이번엔 서비스 자체는 유지되었지만, 크리에이터 섬과 UEFN 기능 이용은 몇 시간 동안 불안정했습니다. 해당 기간 동안 포트나이트 리로드 또한 이용할 수 없었습니다.
영향: v32.00이 출시된 11월 2일 오후 3시 - 11월 3일 오후 2시 30분(한국 시간) 리로드, 잼 트랙, 크리에이터 섬을 포함한 일부 포트나이트 콘텐츠 이용이 불가능했습니다.
v32.10이 출시된 11월 13일 오후 9시 - 11월 14일 오전 3시(한국 시간) 크리에이터 섬 접근과 UEFN 기능 품질이 저하되었으며, 플레이어 섬 참여 성공률은 약 70%였습니다. 해당 기간 동안 포트나이트 리로드를 이용할 수 없었습니다.
변경 사항: 저희 모두는 이 스케일링 문제를 해결하기 위해 노력하고 있으며, 올해 남은 기간 동안에는 원활한 상태를 회복할 수 있으리라 생각합니다.
또한 추후 출시부터는 이전에 의도치 않게 발생한 문제를 포착할 수 있도록 클라이언트 및 서버 트래픽을 출시 전 더 많이 분석할 예정입니다.
문제: 퍼시스턴스 손실(v32.00)
콘텐츠 서비스 기능이 복구된 지 얼마 지나지 않아, 퍼시스턴스를 사용하는 일부 크리에이터가 플레이어 인벤토리에서 특정한 아이템 유형이 누락된다는 문제를 보고해 주셨습니다.
조사를 통해 일부 포트나이트 콘텐츠가 예정된 이니셔티브를 위해 개편되었다는 사실이 드러났습니다. 이러한 개편으로 인해 다이아몬드와 같은 추적된 아이템에 새로운 에셋 경로가 적용되어 인벤토리에 수량이 0인 신규 아이템으로 나타나게 되었습니다. 언리얼 엔진에 이전된 에셋을 처리하는 시스템(리디렉터)이 있긴 하지만, 퍼시스턴스 코드의 버그로 인해 리디렉션이 적용되지 못했습니다.
이를 해결하기 위해 저희는 두 가지 주요 우선순위를 세웠습니다.
- 신규 플레이어의 데이터 손실을 막기 위해 문제를 해결
- 이미 문제가 발생한 플레이어를 위해 인벤토리를 복구
첫 번째 과제에는 신규 서버 생성, 테스트, 배포가 요구되었습니다. 이는 일반적으로 24시간보다 적게 소요되지만, 다양한 요소로 인해(주로 다른 문제에 대한 변경 사항을 통합하고자 하는 시도) 신규 서버는 3일 후인 11월 5일(미국 동부 시간)까지 배포되지 않았습니다. 문제의 심각성을 고려할 때, 이러한 기간은 저희가 용납할 수 없는 수준입니다.
두 번째 과제에는 v32.00 출시 이후로 섬을 플레이한 플레이어를 위해 인벤토리를 복구하여 수정하는 스크립트 생성이 포함되었습니다. 이와 같은 상황에서 복구는 섬마다 영향이 다르기 때문에 쉽지 않은 선택입니다. 데이터를 복구하는 편이 나을지, 영향과 예정 복구 시간에 따라 신규 데이터를 사용할지 결정하는 선택이기도 합니다.
저희는 11월 7일 오전 4시(한국 시간) 문제를 보고한 크리에이터에게 복구를 제공하였으며, 이러한 섬에서 플레이어 데이터 복구를 시작했습니다. 이 작업은 11월 8일 오전 5시(한국 시간)에 완료되었습니다.
변경 사항: 에셋이 제거되면 자동으로 보고하는 자동화 시스템이 마련되어 있긴 하지만, 예를 들어 크리에이터 섬에서 아이템이 사라지지 않으면 이 자동화 시스템은 에셋이 이전되면 보고하지 않습니다. 이전된 에셋도 보고하도록 자동화 시스템을 업데이트할 예정입니다.
또한 예정된 포트나이트 빌드에서는 자동화 옵션이 인벤토리에 저장된 아이템을 불러오는 데 실패할 경우 보고하는 자동화 옵션도 고려하고 있습니다. 다만 이는 해결하는 데 더 오랜 시간이 걸리는 보다 어려운 문제입니다.
마지막으로, 위에서 말씀드렸다시피 수정 사항이 적용된 서버를 배포하는 데 걸린 시간은 용납할 수 없는 수준이었습니다. 이는 저희가 개선해야 할 절차입니다.
문제: 일반 클라이언트 불안정성(v32.00)
저희는 모든 플랫폼에서 클라이언트 크래시가 급격히 증가했다는 것을 빠르게 인지했습니다.
주 원인은 돌연변이 유발 구역에서 무기 피해를 비활성화하는 것과 관련된 버그 수정을 위한 v32.00 업데이트의 변경 사항이었습니다. 이 변경 사항으로 두 개의 스레드가 배열에 동시에 액세스할 수 있는 경합 조건이 추가된 바 있습니다. 타이밍과 부활 중 플레이어 행동에 따라 이 경합 조건은 크래시를 유발할 수 있었습니다.
이러한 크래시는 클라이언트에서 발생했으므로 서버 조정을 통해서는 해결할 수 없었습니다. 이에 저희는 모든 플랫폼에 클라이언트 패치를 출시해야 했습니다. 클라이언트 패치는 생성에 보다 오랜 시간이 소요되며 특정 플랫폼 인증이 요구되므로, 이 업데이트는 11월 16일 수요일(미국 동부 시간)까지 적용할 수 없었습니다.
영향: 모든 플랫폼의 클라이언트에서 v32.00 업데이트로 불안정성이 증가했습니다.
변경 사항: 모든 포트나이트 출시 버전 개발 과정에서 저희는 알려진 크래시를 추적하고 해결합니다. 오랜 시간 테스트를 했음에도 불구하고, 조사 결과 이전에는 이런 종류의 크래시가 발생한 적이 없다는 것이 드러났습니다. 원인 식별 후에도 내부적으로 문제를 재현할 수 없었습니다.
'규모에 따른 문제’의 어려움은 새로운 개념이 아닙니다. 예를 들어, 0.01% 확률로 발생하는 크래시는 개발 중에는 발생하지 않을 수 있습니다. 그러나 하루 100만 명의 플레이어가 플레이하는 상황에서, 이 확률은 하루 10,000건의 크래시로 이어집니다.
이를 해결하기 위해, 저희는 테스트 중 ‘코드 안전성 검사’ 빌드의 사용을 늘리려 합니다. 이러한 빌드는 향상된 메모리 액세스 문제 감지 기능을 갖고 있습니다. 이러한 문제가 즉각적으로 크래시를 유발하지 않는 경우에도 감지합니다. 이 방법이 최근 문제를 감지했을지는 확실히 말씀드리기 어렵지만, 추후 유사한 문제를 방지할 가능성이 높습니다.
문제: 프로젝트 로딩 중 에디터 크래시(v32.00)
v32.00 업데이트가 출시되었을 때, 저희는 얼마 지나지 않아 크리에이터가 프로젝트를 열려고 시도할 때 에디터 크래시를 경험한다는 보고를 받았습니다. 처음에 저희는 이러한 크래시가 진행 중인 콘텐츠 서비스 품질 저하와 관련되어 있다고 의심했으나, 곧 두 개가 별개의 문제라는 것을 깨달았습니다.
문제를 진단하는 것은 쉽지 않았습니다. 원인에 대해 일반적으로 제한적인 정보만을 제공하는 그래픽 드라이버 내 크래시가 포함되어 있었기 때문입니다. 이를 식별한 뒤, 저희는 크리에이터에게 임시 해결책으로 UEFN을 Direct3D 11로 전환할 것을 권장했습니다.
근본 원인은 결국 우측 하단의 ‘토스트’ 팝업에 시작 경고가 너무 많이 표시되는 프로젝트였습니다. 각 경고 메시지가 렌더링에 과도한 메모리를 소모하여, 너무 많은 경고 메시지가 표시되면 메모리 사용량이 한도를 초과해 크래시가 발생한 것입니다.
다행히도 UEFN을 포트나이트와 별개로 업데이트할 수 있어, 다음 날 업데이트를 푸시할 수 있었습니다.
실망스러운 점은 이 버그가 내부 UEFN 사용자가 v32.00 초기 버전에서 한 번만 확인한 것이었으므로, 개발자들이 재현할 수 없었다는 것입니다. 이에 문제는 종결 처리되었습니다.
영향: 출시 후 첫 8시간 동안 몇백 건의 UEFN 크래시가 발생했습니다.
변경 사항: 사후 처리 과정에서 저희 작업용 PC가 보통 일반적인 소비자용 PC보다 사양이 훨씬 높다는 점을 인식했습니다. 비디오 메모리에서 특히 그렇습니다.
이전에 저희 호환성 테스트는 주로 '신규 유저 경험’에 중점을 두었으며, 대규모 프로젝트가 있는 UEFN 푸시에는 큰 주의를 돌리지 않았습니다. 이후부터는 잠재적인 문제를 보다 잘 파악할 수 있도록 규모가 큰 내부 프로젝트가 있는 최소 사양 및 소비자 사양 PC 테스트를 늘릴 계획입니다.
이번 분석이 v32.00 출시로 겪으신 문제의 원인을 더 잘 이해하는 데 도움이 되었기를 바랍니다. 플레이어가 즐거워하는 경험을 제작하고 지원할 수 있도록 크리에이터에게 안정적인 경험을 제공하는 것은 에픽이 아주 진지하게 생각하는 일입니다.
에픽의 목표는 계속해서 시스템과 절차를 개선하고, 여러분에게 발생한 문제에 대해 귀를 기울이고, 모두를 위해 더 나은 UEFN과 포크리를 만드는 방식에 대해 주기적으로 소통하는 것입니다.
감사합니다.
Andrew