우리가 웨이브를 숨기자, 경쟁사는 이미 그 시각을 알고 있었다
아침 일곱 시도 되기 전, 네뷸라 랩스 8층 유리 회의실은 밤샘한 공기와 차가운 형광등 빛이 뒤엉켜 있었다.
정면 유리벽 너머로는 아직 불을 덜 끈 운영실이 내려다보였고, 왼쪽 대형 스크린에는 우리가 밤새 다시 짠 1차 웨이브 시간표가 떠 있었다. 오른쪽 세로 모니터에는 오민서가 확보해 온 외부 일정 캡처가 걸려 있었다. 스트리머 공지 블록, 플랫폼 관심작 노출 요청, 테스트 당일 오전 타임라인. 서로 다른 회사 문서였지만, 중앙 시계 눈금 위에 겹쳐 두는 순간 두 화면은 소름 끼치게 같은 자리를 가리켰다.
회의실 테이블 위에는 프린트된 시간표 세 장, 태블릿 네 대, 식은 커피 컵들이 제멋대로 놓여 있었다. 블라인드 틈으로 스며든 잿빛 아침빛이 종이 가장자리를 핥고 지나갔고, 회의실 스피커의 금속 표면만 유난히 차갑게 번들거렸다. 서버는 아직 멀쩡했지만, 오늘 우리가 먼저 막아야 할 건 접속 폭주가 아니라 정보가 새는 길이었다.
한도겸이 두 문서의 시각을 손가락으로 차례로 짚었다.
“1차 웨이브 시작 예정 10시 30분. 여기 스트리머 공지 집중 배치 10시 24분부터. 플랫폼 관심작 노출 확대 요청은 10시 27분.”
그가 짧게 혀를 찼다.
“너무 맞습니다.”
오민서가 팔짱을 낀 채 말했다.
“우연이면 좋겠죠. 그런데 우연으로 보기엔 분 단위가 너무 촘촘해요. 우리가 시간표를 바꾼 직후, 저쪽도 같은 방향으로 움직였어요.”
나는 두 화면 사이를 천천히 번갈아 봤다.
6화에서 잡아낸 건 흔적이었다.
7화에서 확인해야 하는 건 구조였다.
누가 우리 테스트를 흔들려 하는가.
그보다 먼저, 어떻게 우리 시간이 밖으로 흐르고 있는가.
“접근 가능한 사람부터 자릅시다.”
한도겸이 공동 캘린더와 공용 드라이브를 띄웠다. 운영 문서함, 외주 공유 폴더, 공지 예약 시트, 테스트 명단 파일까지 연결된 계정 목록이 스크린에 길게 펼쳐졌다.
스물세 개.
정직하게 많은 숫자였다.
운영팀, 개발 리드, 아트 검수, 외주 PM, 마케팅 대행, 플랫폼 대응 담당. 회사가 급할수록 링크는 빨라졌고, 링크가 빨라질수록 `필요한 사람만 본다`는 원칙은 오래전에 무너져 있었다.
“전부 악의라고 보면 못 찾습니다.”
내가 말했다.
“악의를 찾기 전에 구조를 먼저 봅시다. 누가 나쁜 사람인지부터 찍지 말고, 누가 볼 수 있게 열려 있었는지부터 확인해요.”
윤해원이 의자 끝에 기대 앉은 채 서류를 넘겼다. 검은 셔츠 소매엔 밤샘 구김이 남아 있었지만, 펜 끝은 이상할 만큼 차분했다.
“외주 라인도 봐야 해요.”
그녀가 말했다.
“키비주얼 검수할 때 일정 문구가 같이 들어간 시안이 몇 번 돌았어요. 배너 문구와 시간표 캡처가 한 파일에 붙는 순간, 아트 파일도 운영 문서가 됩니다.”
한도겸이 바로 고개를 들었다.
“그걸 왜 이제 말합니까?”
해원의 눈썹이 날카롭게 올라갔다.
“이제 말한 게 아니라, 어제 새벽 버전 정리하면서 확인한 거예요. 그리고 외주 시안은 보통 공개 시간 전까지 확정이 아니라서, 그 파일만으로 정확한 웨이브 시각까지 읽긴 어려워요.”
공기가 금방 뻣뻣해졌다.
이럴 때 제일 쉬운 선택은 사람을 찍는 거였다.
하지만 제일 쉬운 선택은 대개 가장 비싼 대가를 남긴다.
나는 테이블 위 프린트물을 한 줄로 정리했다.
“좋아요. 그럼 추측 말고 증거로 갑시다.”
오민서가 준비해 온 새 문서를 열었다.
“역추적용 시간표를 세 버전으로 나눠 뿌리죠.”
화면에 세 개의 공지 초안이 나란히 떴다.
A안은 가장 공식적인 표현을 썼다.
`순차 초청 일정 안내`
B안은 같은 뜻을 조금 거칠게 바꿨다.
`분할 입장 1차 집중 대응`
C안은 플랫폼 문의 대응을 염두에 둔 주석 한 줄이 아래에 더 붙어 있었다.
“문장 차이는 작지만,” 오민서가 말했다. “각 버전이 닿는 라인을 다르게 하면, 밖에서 같은 문구가 다시 보일 때 누출 경로를 좁힐 수 있어요.”
나는 곧바로 이해했다.
“문장뿐 아니라 시간도 같이 재봅시다. 수정 후 몇 분 안에 반응이 나오는지도 봐야 해요.”
한도겸이 노트북을 돌리며 말했다.
“저는 회의 직후 외부 열람 기록부터 추려 보겠습니다.”
나는 화이트보드 앞으로 가 세 줄을 적었다.
1. 누가 정확한 시간표를 봤는가.
2. 그중 누가 외부 링크를 열어 둔 채로 썼는가.
3. 수정 직후 몇 분 안에 바깥에서 반응이 나왔는가.
“범인 찾기 아닙니다.”
내가 뒤돌아 말했다.
“오늘 목표는 다음 웨이브 시간표가 더는 밖으로 같은 속도로 안 나가게 만드는 것. 그걸 먼저 해요.”
회의가 끝나자 회사는 세 갈래로 흩어졌다.
한도겸은 개발실 안쪽 회의 테이블에 노트북 두 대를 펴 놓고 로그를 뜯기 시작했다. 공동 드라이브 접속 기록, 캘린더 열람 시각, 오래전에 만든 공유 링크가 아직 살아 있는지까지 하나씩 훑었다.
오민서는 운영팀을 붙잡고 공지 버전을 갈라 배포했다. 문의 템플릿도 각 버전에 맞게 표현을 달리 심어 두고, 누가 어떤 파일을 받았는지 별도 표로 기록하기 시작했다.
윤해원은 외주 시안 폴더를 전부 잠그고 있었다. 낡은 검수 링크를 끊고, 키비주얼 시안에서 실제 웨이브 시각이 노출되는 텍스트 레이어를 분리해 새 폴더 구조를 짰다.
나는 그 셋 사이를 계속 오갔다.
숫자를 고치는 일은 대시보드만 보면 됐다.
하지만 신뢰가 새는 구조를 고칠 때는 사람들의 표정까지 같이 봐야 했다.
오전 아홉 시를 조금 넘기자 한도겸이 나를 불렀다.
“대표님, 이건 좀 이상합니다.”
개발실 벽면 모니터에 접속 기록이 떠 있었다. 회의 종료 시각 07시 18분. 그 뒤 07시 35분에 외부 공유 링크 열람. 사용된 계정은 오래전에 발급된 외주 협업용 계정 하나였고, 요즘은 실무에서 거의 쓰지 않는 권한이었다.
“열일곱 분.”
내가 낮게 말했다.
“네. 내부 시간표 수정되고 열일곱 분 만에 바깥에서 링크가 열렸어요.”
“살아 있는 링크는 몇 개죠?”
“미사용 포함 아홉 개 찾았습니다. 그중 실제로 열리는 건 두 개.”
“둘 다 같은 라인입니까?”
“아직은 아닙니다. 하나는 운영 쪽 옛 대행사, 하나는 아트 검수 쪽 외주 링크.”
나는 바로 아트실로 향했다.
아트실은 커다란 모니터 네 대가 푸른 빛을 쏟고 있었고, 벽면에는 초기에 폐기됐던 궤도 기록 시안들이 아직 핀으로 박혀 있었다. 창가 쪽 책상에 선 윤해원은 낡은 링크 목록을 하나씩 닫고 있었다. 검은 머리를 대충 묶어 올린 그녀가 의자를 돌려 나를 봤다.
“아트 검수 링크 하나 살아 있습니다.”
내가 말했다.
한도겸이 보낸 계정 ID를 화면에 띄우자, 해원의 눈빛이 바로 달라졌다.
“이건 지난달 행사장 배너 검수용이에요. 원래 어제 끊었어야 했는데, 외주 쪽에서 최종 소스 재확인한다고 해서 남겨 둔 겁니다.”
“그 파일에 시간표가 들어갔습니까?”
해원은 잠깐 입술을 깨물었다.
“전체 시간표는 아니고, 공지 시안 캡처가 한 번 붙었습니다. 운영 쪽에서 문구 확인하려고.”
나는 그녀의 얼굴을 가만히 봤다.
변명하려는 표정은 아니었다.
자기가 놓친 틈을 너무 빨리 계산해 버린 사람의 표정이었다.
“지금 바로 다 끊어 주세요.”
“이미 끊고 있어요.”
그녀가 즉시 답했다.
“그리고 새 시안은 문구 레이어를 분리해서 다시 보낼게요. 일정은 이미지 파일 안으로 절대 안 넣겠습니다.”
그때 오민서가 운영실 쪽 문을 세게 열고 들어왔다.
“밖에서 다시 떴어요.”
우리는 곧장 운영실로 몰렸다.
정면 스크린에는 경쟁사 협력사 쪽으로 보이는 캘린더 캡처가 새로 떠 있었다. 출처는 불분명했지만, 그 안에는 분명히 익숙한 표현 하나가 박혀 있었다.
`분할 입장 1차 집중 대응`
운영실 안이 잠깐 얼었다.
B안에만 들어 있던 문구였다.
오민서가 빠르게 설명했다.
“B안은 운영팀 실무자 둘, 플랫폼 대응 메일 하나, 외부 FAQ 정리본 한 군데만 갔어요.”
한도겸이 즉시 표를 띄웠다.
“그럼 우선 조사 대상 네 개로 줄어듭니다.”
스물세 개가 네 개로 좁혀졌다.
숫자 하나만 보면 숨통이 트였다.
하지만 동시에 더 나쁜 사실도 선명해졌다.
누출은 감이 아니라 실제였다.
우리는 지금 누군가의 계산 안에서 움직이고 있었다.
나는 운영실 유리벽 너머 바깥 사무실을 바라봤다. 다들 각자 자리에서 바쁘게 움직이고 있었지만, 이제 그 풍경은 조금 다르게 보였다. 같은 팀이면서 서로 다른 버전의 시간표를 쥐고 있는 상태. 이런 날은 말 한마디, 표정 하나가 금방 칼날이 된다.
그래서 더 늦기 전에 기준부터 세워야 했다.
“민서 팀장.”
“네.”
“조사 대상 넷, 지금 당장 따로 부르진 마세요.”
오민서가 눈을 가늘게 떴다.
“왜요?”
“지금 부르면 진짜 범인이 있든 없든 팀 전체가 서로 찍기 시작합니다. 테스트 전야에 조직이 먼저 무너져요.”
한도겸이 팔짱을 낀 채 물었다.
“그럼 그냥 둡니까?”
“아니요. 더 좁힙니다.”
나는 스크린 아래 타임라인을 가리켰다.
“같은 방식으로 한 번 더 뿌리죠. 이번엔 표현만이 아니라 시각도 다르게 넣습니다. 누가 밖에 넘기든, 저쪽 반응 시간이 어떻게 바뀌는지까지 봐야 해요.”
오민서가 바로 고개를 끄덕였다.
“2차 역추적 세트 만들게요.”
그때 윤해원이 조용히 말을 받았다.
“외주 라인에는 제가 직접 새 링크로만 보낼게요. 이전 링크는 전부 폐기하겠습니다.”
한도겸이 그녀를 한 번 바라봤다. 아직 완전히 풀린 시선은 아니었다. 하지만 해원도 피하지 않았다.
“의심해도 돼요.”
그녀가 먼저 말했다.
“대신 애매하게 의심하지는 마세요. 어디서 새는지 끝까지 같이 잡죠.”
운영실 공기가 아주 조금 달라졌다.
완전히 믿는 문장은 아니었다.
그래도 같은 방향을 보는 문장이었다.
정오 무렵 두 번째 역추적이 시작됐다.
운영팀은 버전별 공지를 다시 나눠 보냈고, 한도겸은 실시간 외부 열람 흔적을 붙잡기 위해 모니터 두 개를 띄워 놨다. 윤해원은 외주 검수용 새 폴더를 만들며 접근 권한을 사람 단위로 다시 잘랐다. 나는 각 팀 사이를 돌며 한 가지 기준만 반복했다.
시간표보다 사람을 먼저 흔들리게 두지 말 것.
오후 한 시 사십이 분.
한도겸이 갑자기 몸을 앞으로 당겼다.
“들어왔습니다.”
스크린에 새 열람 기록이 떴다. 외부 협력사 IP. 문서 접근 후 4분 뒤 캘린더 메모 수정. 그리고 그 메모 캡처 안쪽에는 또 하나 익숙한 표현이 있었다.
이번에는 C안이 아니었다.
A안도 아니었다.
우리가 따로 떼어 둔, 윤해원 외주 검수 링크 쪽에만 들어 있던 짧은 주석 한 줄이었다.
`비주얼 최종 확정 전 내부 공개 금지`
오민서가 먼저 숨을 멈췄다.
한도겸의 손이 키보드 위에서 굳었다.
나는 천천히 고개를 돌렸다.
운영실 천장 조명이 유리벽에 반사돼 윤해원의 옆얼굴을 반쯤 차갑게 갈랐다. 그녀 역시 방금 그 문장을 읽은 얼굴이었다. 억울함을 꾸미기 전에, 진짜로 머릿속 계산이 한 박자 늦어 버린 사람처럼 그대로 굳어 있었다.
방 안의 시선이 한꺼번에 그녀를 향했다.
그 순간 나는 확신했다.
다음 전쟁은 테스트 서버 안에서만 벌어지지 않는다.
우리가 믿고 일하던 공유 방식, 협업 방식, 팀의 얼굴을 나눠 쓰던 경로 자체를 뜯어고치는 전쟁이 된다.
문제는 이제 누가 수상하냐가 아니었다.
윤해원 라인에서만 보이던 문장이,
왜 경쟁사 협력사 캘린더에 먼저 떠 있었느냐였다.
✦ 작가의 말
연재 중