잘려 나간 증거

4부. 다시 켠 화면

by 로그캐빈

4부. 다시 켠 화면


"공개 내용을 전수 검증할 수 없습니다. 로그가 잘렸습니다."


그 말을 꺼낸 순간, 회의실 안의 시선이 한꺼번에 내 쪽으로 쏠렸다.

내 귀에도 그 문장은 변명처럼 들렸다.

지금 이 상황에서 그 말을 그대로 믿어줄 사람은 없었다.



2015년, 모바일 게임이 PC를 밀어내고 올라서던 시절이었다.

라이브팀의 아침은 늘 숫자로 시작됐다.

전환율, 매출, 리텐션.


그런데 그날은 지표보다 동향이 먼저 올라왔다.

패키지 지급 로직 하나가 어긋났고, 커뮤니티는 이미 불이 붙어 있었다.

유저들은 의도적인 누락을 의심했다.

몇 줄짜리 공지로는 절대 꺼지지 않을 분위기였다.


문제는 그 의혹이 하루아침에 생긴 게 아니라는 데 있었다.

업데이트 방향성에 대한 불만과 예전만 못한 볼륨에 대한 피로가 오래 쌓여 있었다.

그 위에 이번 일이 마지막 불씨처럼 떨어졌다.

밖으로 공개하기까지 남은 시간은 72시간.

그 안에 검증을 끝내지 못하면, 로그 공개는 해명이 아니라 새 의혹의 출발점이 될 터였다.


나는 곧바로 DB를 열었다.

그리고 몇 분 지나지 않아, 문제가 생각보다 훨씬 크다는 걸 알아차렸다.

당시 패키지 지급 로그는 문자열 칼럼 하나에 비정형 텍스트로 저장되고 있었다.

너무 길어서, 저장 과정에서 뒷부분이 소리 없이 잘려 있었다.


더 끔찍한 건 그것이 장애처럼 드러나지 않았다는 사실이었다.

시스템은 멀쩡히 돌고 있었다.

그저 경고로그만 남긴 채, 아무 일도 없었다는 듯 다음 로그를 계속 받아 적고 있었다.

개발 환경에서도, 테스트 환경에서도 재현되지 않는 엣지케이스였다.


DB를 직접 열어 잘린 단면을 보기 전까지는, 아무도 증거가 반쪽이라는 사실을 몰랐다.

그래서 회의실에서 내가 던진 말은 설명이 아니라 핑계처럼 들릴 수밖에 없었다.

남은 방법은 하나였다.

잘려 나간 앞뒤를 다른 기록에서 하나씩 끌어와 다시 채우는 것.


나는 팀원이던 DBA들에게 로그를 나눠 같이 찾아보자고 말을 꺼냈다.

돌아오는 대답은 대체로 비슷했다.

"이건 양이 너무 많아요. 지금 다 보겠다는 건 무리예요."

누군가는 무결성을 끝까지 확인하기보다, 밖으로 내놓을 방어 논리를 먼저 세우자고 했다.

그 판단이 완전히 틀렸다고만은 할 수 없었다.

시간도 부족했고, 사람들을 끝까지 설득할 힘도 내게는 없었다.

결국 이 일은 내가 혼자 밀고 갈 수밖에 없었다.


그날부터 나는 사무실에 눌러앉았다.

사람들은 퇴근했다가 다시 출근했고, 밥을 먹으러 나갔다가 커피를 들고 돌아왔다.

나는 같은 자리에 붙은 채 그 흐름을 먼 풍경처럼 바라봤다.

시간은 너무 빨리 흘렀고, 확인해야 할 로그는 끝이 없었다.

검증에 실패하면 누군가는 책임을 져야 했다.

로그 저장을 맡았던 담당자들에게 먼저 불똥이 튈 게 뻔했다.

그보다 더 두려운 건, 유저들의 의혹이 기정사실이 되고 라이브 게임 전체가 늪으로 가라앉는 일이었다.

비슷한 의혹 하나로 사람들이 돌아서는 장면을, 나는 이미 여러 번 봐왔다.


의자에서 일어나 화장실을 다녀오는 짧은 거리도 몸이 한 박자 늦게 따라왔다.

눈은 자꾸 초점을 놓쳤고, 손가락은 키보드를 두드리면서도 머리는 반 박자씩 늦었다.

로그를 읽고, 시간을 맞추고, 다른 로그를 불러와 이어 붙이는 동안 시간 감각부터 닳아갔다.


처음 하루는 의지로 버텼다.

둘째 날부터는 의지보다 버티는 힘이 더 중요해졌다.

공개를 미루자는 말이 나왔고, 로그 대신 다른 해명 방식을 찾자는 의견도 나왔다.

하지만 시간을 더 번다고 해서 대안이 생기지는 않았다.

잘려 나간 데이터를 채우지 못하면, 어떤 문장도 변명 이상이 될 수 없었다.

셋째 날 새벽, 사람 빠진 사무실에는 모니터 불빛만 군데군데 떠 있었다.

몇 시간 전 누군가가 뽑아준 커피는 책상 위에서 식어 있었다.

눈을 깜빡일 때마다 모래가 구르는 것처럼 따끔했다.


그쯤 되자 잘린 로그들의 패턴이 보이기 시작했다.

무작정 뒤지는 시간이 끝나고, 비로소 추적이 시작되는 순간이었다.

길어진 로그마다 같은 두 아이템 조건이 반복해서 걸려 있었다.

그 조합이 붙는 순간 로그는 급격히 길어졌고, 끝이 잘린 채 저장되고 있었다.


나는 곧바로 같은 상황의 케이스들을 추려냈다.

앞뒤 시스템 로그를 끌어다 붙이고, 빌링팀 기록을 옆에 세워 사라진 몇 초를 한 칸씩 복원했다.

결제되고, 패키지가 열리고, 아이템이 사용되는 그 짧은 순서가 끝까지 이어질 때까지 같은 줄을 몇 번이고 눈으로 문질렀다.

조금이라도 삐끗한 자국이 보이면 다시 처음으로 돌아갔다.

그렇게 잘려 있던 기록들이 조금씩 이어지기 시작했다.

72시간의 끝에서야, 공개할 수 있는 검증본이 나왔다.


사무실 밖으로 나왔을 때는 이미 아침이었다.

바깥공기가 폐 깊숙이 밀려 들어왔다.

따뜻한 종이컵을 감싸 쥐자 사흘 만에 처음으로 손끝에 온기가 돌아왔다.


검증된 로그가 공개되자 조작 의혹은 조금씩 수그러들었다.

다만 이미 많은 유저는 누적된 불만 끝에 조용히 게임을 떠난 뒤였다.

월, 수, 금 연재