데브시스터즈에서 2021년 "쿠키런: 킹덤"이란 게임을 런칭하고 나서 36시간 동안 장애가 났던 사건이 있었습니다.(제가 했던 게임은 아니라서 잊고 있었지만 이번 글로 다시 생각이 났습니다.) 당시 장애상황과 복구 작업을 자세하게 정리한 글입니다. 쿠키런: 킹덤는 CockroachDB를 쓰고 있었는데 CockroachDB는 가장 좋다고 알려진 구글 스패너의 영향을 받은 오픈소스 데이터베이스이다. 데브시스터즈에서는 오픈 후 트래픽을 예상해서 상당히 준비해 두었지만 예상 이상으로 사용자가 늘어나면서 CockroachDB의 스토리지가 차기 시작했다고 합니다. 이에 대한 대응으로 확장 작업을 하던 중 설정 실수로 인해 데이터베이스 노드의 절반이상이 다운되었습니다. Raft 알고리짐으로 사용하는데 설정 실수로 인해서 일관성을 지키지 못한다고 CockroachDB가 판단하면서 서비스 장애로 이어졌습니다. CockroachDB의 지원을 받고 있었지만 CockroachDB 측에서도 복구할 수 없어서 스냅샷으로 복원하라는 권고를 받았지만 이럴 경우 일부 사용자의 데이터를 잃게 되므로 최신 데이터를 그대로 복구 하기 위해서 CockroachDB를 깊게 파기 시작해서 복원해 냈다고 합니다. CockroachDB가 데이터를 어떻게 저장하는지 조사해서 저장된 파일의 파싱 구조를 알아낸 뒤 복구할 수 있게 다고 판단해서 데이터를 CSV로 만들면서 정합성 검사를 하고 이를 계속해서 반복해서 결국 복원했다고 합니다. 컴퓨터 자원이 많이 필요했기 때문에 AWS의 인스턴스도 거의 다 끌어다 작업했다고 합니다. 과정도 흥미진진하지만 당시 사용자들의 원성이 자자했을텐데 할수 있을지 없을지, 얼마나 걸릴지 모르는 상황에서 디비 구조까지 파악해서 복원해 낸 과정이 재미있습니다.

CTO가 커리어를 걸고 비트 레벨까지 내려가서 DB를 해킹했던 이야기

DevTech - 데브시스터즈 기술블로그

CTO가 커리어를 걸고 비트 레벨까지 내려가서 DB를 해킹했던 이야기

다음 내용이 궁금하다면?

또는

이미 회원이신가요?

2023년 1월 21일 오전 6:51

 • 

저장 198조회 6,263

댓글 4