Offcanvas

CIO / How To / 가상화 / 개발자 / 데이터센터 / 보안 / 분쟁|갈등 / 애플리케이션 / 클라우드 / 통신|네트워크

로블록스의 3일 정지 참사··· '사고 이후의 분석'

2022.02.04 David Strom  |  InfoWorld
지난해 10월 말, 로블록스(Roblox)의 글로벌 온라인 게임 네트워크가 다운됐다. 정지는 3일 동안 지속됐다. 이 사이트는 매일 5,000만 명의 게이머들이 사용하고 있다. 이 혼란의 원인을 파악하여 해결하기 위해 로블록스와 주요 기술 공급자인 하시코프(HashiCorp)의 엔지니어들이 많은 노력을 기울여야 했다.

로블록스는 결국 1월 말 블로그 게시물에서 주목할 만한 분석 결과를 제시했다. 분석에 따르면 로블록스는 이상한 여러 이벤트의 동시 다발적인 발생에 의해 피해를 입었다. 로블록스와 하시코프가 진단과 해결을 위해 거친 프로세스는 대규모 IaC(Infrastructure as Code) 설비를 운용하고 있거나 인프라에서 컨테이너(Container)와 마이크로서비스(Microservice)를 대대적으로 사용하고 있는 기업들에게 유익한 교훈을 전한다. 
 
Image Credit : Getty Images Bank

로블록스는 하시코프 소프트웨어 스택에 올인했다
로블록스의 거대한 멀티플레이어 게임 인프라는 전 세계에 분산되어 있다. 이를 통해 준수한 네트워크 지연 속도를 제공함으로써 멀리 떨어진 곳에서 연결할 수도 있는 플레이어들에게도 공정한 게임 공간을 제공한다. 

이를 위해 로블록스는 하시코프의 콘설(Consul), 노마드(Nomad), 볼트(Vault)를 사용하여 전 세계적으로 분산되어 있는 1만 8,000개 이상의 서버와 17만 개 이상의 컨테이너를 관리한다. 하시코프 소프트웨어를 사용하여 워크로드를 발견하고 일정을 조율하며 암호화키를 저장하고 순환시킨다.

로블록스의 인프라 기술 책임자 롭 카메론은 2020년 하시코프 사용자 컨퍼런스에서 해당 기업이 이런 기술을 어떻게 사용하고 있고 회사의 비즈니스 모델에 필수적인 이유에 관한 프레젠테이션을 진행했다(해당 링크는 전사본과 비디오 녹화본으로 연결된다). 

카메론은 “미국에서 프랑스에 있는 사람과 게임을 하고 싶을 때 가능하다. 우리는 이를 파악하여 플레이어에게 가능한 가장 가까운 곳에 컴퓨팅 서버를 배치함으로써 가능한 최고의 게이밍 경험을 제공한다”라고 말했다.

로블록스의 엔지니어링팀은 초기 일련의 잘못된 조치를 취했다
고장 정지의 원인을 추적하는 과정에서 엔지니어들은 우선 성능 문제를 알아차렸고 잘못된 하드웨어 클러스터를 의심하여 새 하드웨어로 교체했다. 성능 문제가 해결되지 않자 그들은 무거운 트래픽에 관한 두 번째 이론을 제시했고 콘설 클러스터 전체를 2배나 많은 CPU 코어(64코어에서 128코어로 변경)와 더 빠른 SSD 스토리지로 업그레이드했다. 이 외에도 이전의 건전한 스냅샷으로 복원하기, 64코어 서버로 복귀하기, 구성 변경 등 다른 시도도 있었다. 그러나 이것들도 성공하지 못했다.

교훈 1: 로블록스가 운영하는 규모에서 하드웨어 문제가 드물지는 않지만 처음부터 하드웨어 문제를 탓하는 것은 잘못된 것일 수 있다. 고장 정지는 소프트웨어 오류의 조합 때문이었다.

로블록스와 하시코프​​​​​​​의 엔지니어들은 결국 2가지 기저 원인을 찾아냈다.
첫 번째는 콘설(Consul) 안에서 특정 로그 데이터를 저장하기 사용하는 오픈소스 데이터베이스인 볼트DB(BoltDB)가 디스크 사용량을 제대로 정리하지 않는 버그였다. 이 문제는 최근 로블록스가 공개한 새로운 콘설 스트리밍 기능의 이례적인 높은 부하 때문에 악화되었다.

교훈 2: 오래된 모든 것이 다시 새로워졌다. 이런 원인들에서 흥미로운 점은 컴퓨팅 초기부터 시스템 디자이너들을 괴롭혔던 것과 같은 저수준 리소스 관리 문제와 관련되어 있다는 것이었다. 볼트DB는 오래된 로그 데이터가 삭제되면서 디스크 저장공간을 확보하지 못했다. 

콘설 스트리밍은 매우 높은 부하에서 쓰기 컨텐션(Contention) 문제를 겪었다. 이런 문제의 기저 원인을 파악하기 위해서는 볼트DB가 파일 시스템에서 빈 페이지를 추적하는 방식과 콘설 스트리밍이 고(Go) 동시 발생을 활용하는 방법에 대한 심층적인 지식이 필요했다.

오늘날의 확장은 완전히 다른 것을 의미한다
수천 개의 서버와 컨테이너를 운용할 때 수동 관리 및 모니터링 프로세스는 불가능하다. 이런 복잡한 대규모 네트워크의 건전성을 모니터링하려면 다음과 같은 판독 대시보드가 필요하다.
 


교훈 3: 대규모 서비스 제공자는 네트워크 전체를 정지하기 전에 신속하게 고장이나 이상한 값에 초점을 맞출 수 있는 자동화 및 오케스트레이션(Orchestration) 루틴을 개발해야 한다. 로블록스의 경우, 백만분의 일초의 지연 속도 차이도 중요하기 때문에 하시코프 소프트웨어 스택을 사용한다. 

하지만 서비스 분류 방식도 중요하다. 로블록스는 모든 백엔드 서비스를 하나의 콘설 클러스터에서 운용했으며, 결국 인프라의 단일 장애 지점이 되었다. 로블록스는 그 이후로 두 번째 위치를 추가하고 추가적인 콘설 클러스터 가외성을 위해 여러 개의 가용성 구역을 생성하기 시작했다. 

로블록스가 하시스택(HashiStack)을 사용하는 이유 중 하나는 비용 관리이다
로블록스는 블로그 게시물에서 “우리는 자체적인 구내 기초 인프라를 구축하고 관리하며, 그 이유는 우리의 플랫폼이 성장하면서 도달할 규모에서 우리가 퍼블릭 클라우드를 사용하는 것과 비교하여 비용을 훨씬 더 잘 관리하고 네트워크 지연 속도를 관리할 수 있었기 때문이다”라고 밝혔다.

하시스택’은 글로벌 서비스 네트워크를 관리하는 효율적인 방법이며, 이를 통해 로블록스는 신속하게 움직이고 며칠 안에 다중 노드 사이트를 구축할 수 있다. 카메론은 2020년 프레젠테이션 중 “하시스택을 통해 우리는 운용하는 작업 부하에 상관없이 반복 가능한 디자인 패턴을 확보했다”라고 밝혔다. 하지만 로블록스 인프라 전체뿐 아니라 모니터링 및 원격 측정까지 너무 많은 것을 하나의 콘설 클러스터에 의존하면서 해당 인프라의 상태를 파악해야 했다.

교훈 4: 네트워크 디버깅(Debugging) 스킬이 최고이다. 네트워크 인프라에서 어떤 일이 벌어지고 있는지 모른다면 망한 것이다. 하지만 수천 개의 마이크로서비스를 디버깅하는 것은 단순히 라우터 로그를 확인하는 것이 아니라 많은 것들이 어떻게 작동하고 있는지 분석하는 것이다. 

로블록스는 자체 맞춤형 서버 하드웨어를 기반으로 인프라 전체를 구축했기 때문에 이 부분이 특히 힘들었다. 그리고 로블록스의 모니터링 시스템과 콘설 사이에서 순환 의존성이 있었기 때문에 더욱 그랬다. 이후 로블록스는 이 의존성을 없애고 콘설 및 볼트DB 성능과 로블록스 서비스와 콘설 사이의 트래픽 패턴에 대한 더 나은 가시성을 제공하기 위해 원격 측정을 확대했다.

고객에게 고장 정지에 관해 투명하게 공개하라
단순히 “우리는 다운되었고 이제 다시 정상화되었다”라고 말하라는 의미가 아니다. 자세한 사항을 전달하는 것이 중요하다. 그렇다. 로블록스가 사실을 공개하기까지 2개월 이상이 소요되었다. 하지만 문제를 파헤치고 잘못된 출발점을 보여주며 로블록스와 하시코프의 엔지니어링팀들이 문제를 해결하기 위해 어떻게 협력했는지 설명하기 위해 그들이 작성한 문서는 매우 소중하다. 로블록스, 하시코프, 그들의 엔지니어링팀에 대한 신뢰를 높여준다.

하시코프 홍보부서에 연락했을 때, 그들은 “고객 환경에서 소프트웨어의 중요한 역할 때문에 우리는 고객들과 능동적으로 협력하여 환경 구성에 대한 권장 모범 사례와 선제적인 안내를 제공한다”라고 응답했다.

분명 로블록스는 하시스택이 제공할 수 있는 한계를 초월했지만 다행히도 문제를 파악하고 결국 해결했다. 3일 고장 정지는 좋은 결과가 아니지만 로블록스 인프라의 규모와 복잡성을 고려할 때 그럼에도 불구하고 놀라운 성과였다. 일부 소프트웨어 라이브러리가 여전히 저수준 버그를 숨기고 있다는 점에서, 이러한 버그가 미래에 갑자기 나타날 수 있다는 점에서 교훈이 될 만한 사례다. 

* David Strom은 보안과 네트워킹, 통신 분야에 대한 글을 CSO와 네트워크월드에 기고하고 있다. ciokr@idg.co.kr
추천 테크라이브러리

회사명:한국IDG 제호: ITWorld 주소 : 서울시 중구 세종대로 23, 4층 우)04512
등록번호 : 서울 아00743 등록일자 : 2009년 01월 19일

발행인 : 박형미 편집인 : 박재곤 청소년보호책임자 : 한정규
사업자 등록번호 : 214-87-22467 Tel : 02-558-6950

Copyright © 2022 International Data Group. All rights reserved.