ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 전환은 한 줄로 짰는데, 그 한 줄을 아직 안 눌렀어요
    AI Agent 2026. 7. 18. 21:00
    728x90
    반응형

    흐린 낮 창가의 책상과 빈 의자 사진
    전환은 한 줄로 짰는데, 그 한 줄을 아직 안 눌렀어요

    손가락이 엔터 위에 한참 올라가 있었어요.
    화면엔 딱 한 줄.
    설정값 하나를 꺼짐에서 켜짐으로 바꾸는 줄이었어요.
    use_new_keys=falsetrue로 바꾸는, 그런 종류의 한 줄이었습니다.
    며칠을 매달린 큰 정리 작업이, 그날 실제로 바뀌는 건 이거 하나였거든요.
    이게 맞나 싶을 만큼 허무했고, 동시에 손이 좀 떨렸어요.
    사무실은 조용했고, 모니터 옆 커피는 식어 있었어요.
    그 한 줄만 화면에서 혼자 깜빡였어요.

    같은 숫자가 세 군데에 살고 있었어요

    발단은 별거 아니었어요.
    같은 데이터인데, 옛날 이름과 새 이름이 동시에 굴러다니고 있었거든요.
    하나의 합계 숫자가 화면 쪽 코드에도, 서버 쪽 코드에도, 저장된 데이터 안에도, 조금씩 다른 키로 세 군데에 살아 있었어요.

    처음엔 "그게 뭐 문제야" 싶었어요.
    어차피 값은 같으니까.
    근데 같은 의미가 여러 이름으로 존재하면, 어느 날 한쪽만 갱신되는 순간이 와요.
    그러면 둘 중 뭐가 진짜인지 사람이 더는 모르게 돼요.
    실제로 그 주에 회의에서 "이 숫자 어느 걸로 보는 거예요?"라는 질문이 두 번 나왔어요.
    두 번째 질문이 나왔을 때, 내가 화면 보면서 잠깐 둘 다 띄워놓고 비교하고 있더라고요.
    그게 신호였어요.
    그래서 결정했어요.
    옛날 이름은 통째로 없애고, 진짜는 딱 하나만 남긴다.
    호환을 위해 두 이름을 같이 내보내는 것도 안 한다 — 그것도 결국 "둘 중 하나가 틀려도 조용히 넘어가는" 길이니까요.

    본 게임은 그날이 아니라 그 며칠 전이었어요

    그래서 며칠 동안 한 일은, 화려하지 않았어요.
    저장된 옛날 흔적을 새 이름으로 옮기는 절차를 따로 한 벌 만들었어요.
    그런데 그걸 처음부터 두 방향으로 짰어요.
    옮기는 쪽 하나, 정확히 반대로 되돌리는 쪽 하나.
    그리고 기본값은 "아무것도 안 건드림"으로 뒀어요.
    돌려도 실제로 데이터를 고치진 않고, 고칠 거였으면 뭐가 어떻게 바뀔지 목록만 뱉어내게요.

    그 목록을 며칠 동안 들여다봤어요.
    약 2만 2천 건.
    한 건이라도 값이 어긋나게 옮겨지는 게 있나, 옮길 게 없는데 잘못 잡힌 건 없나.
    확인표에는 세 칸만 남겼어요.
    옛 이름 값, 새 이름 값, 되돌렸을 때 다시 돌아오는 값.
    셋이 같은 줄에서 맞아야만 통과로 봤습니다.
    처음 돌렸을 땐 멀쩡해 보였어요.
    숫자가 딱 떨어지길래 "어, 끝났네" 했죠.
    근데 목록을 아래로 한참 내리다 보니 옛날 이름이 비어 있는 칸이 몇 개 보였어요.
    값이 아예 없던 자리.
    그걸 새 이름으로 옮기면 멀쩡한 빈칸을 0으로 덮어쓸 뻔했더라고요.
    그래서 옮기는 코드만 다시 고쳐서, 비어 있던 건 비어 있는 채로 두게 했어요.
    그러고 또 돌렸어요.
    이상한 게 몇 개 더 나왔고, 그때마다 옮기는 코드만 고쳤어요.
    진짜 데이터는 여전히 손도 안 댔으니까, 몇 번을 다시 돌려도 부담이 없었어요.
    솔직히 이 며칠이 제일 안 보이는 일이에요.
    밖에서 보면 "아직도 안 바꿨네?" 싶은 시간.
    근데 그날의 위험을 0에 가깝게 만드는 게 다 이 며칠에 있더라고요.

    멈칫한 건 따로 있었어요

    적용하려고 그 설정 한 줄을 띄워놓고, 문득 멈칫했어요.
    잘못되면 어떻게 되돌리지?
    머릿속으로 복구 절차를 그려보는데, 이미 그려져 있었어요.
    옮기는 코드 옆에, 정확히 반대로 되돌리는 코드를 같이 짜놨으니까.

    그게 좀 소름이었어요.
    나가는 문과 들어오는 문을 같은 크기로 만들어 두면, 들어올 때 무서웠던 딱 그만큼만 나가면 되더라고요.
    큰 정리를 위험하게 만드는 건 사실 '규모'가 아니라 '비대칭'이었어요 — 나갈 땐 한 줄인데 돌아올 땐 열두 단계인 구조.
    그게 사람을 못 누르게 만들거든요.
    2만 2천 건이 무서웠던 게 아니라, 그중 하나라도 잘못됐을 때 도로 주워 담을 길이 안 보이는 게 무서웠던 거였어요.
    그 길을 옆에 미리 깔아두니까, 숫자가 갑자기 작아 보였어요.

    그 대칭을 확인하고 나서야 손가락에 힘이 들어가려고 했어요.

    그런데 결국 안 눌렀어요

    여기서 글이 "엔터를 쳤고 아무 일도 없었어요, 끝"으로 끝나면 깔끔하겠죠.
    근데 진짜는 안 그랬어요.

    그 한 줄은 그냥 한 줄이 아니었어요.
    켜는 순간 실제 운영 데이터가 바뀌고, 한 번 옮기면 화면 쪽과 서버 쪽 배포가 정확히 같은 타이밍에 맞아야 하고, 거기다 "이거 진짜 적용해도 됩니까" 하는 승인이 필요한 줄이었어요.
    한 번 열면 닫기 어려운 문이었던 거예요.
    되돌리는 코드를 옆에 깔아놨다고 해도, 그걸 실제로 쓰려면 또 한 번 배포하고 또 한 번 타이밍을 맞춰야 하는 거였고요.
    머릿속 복구 절차랑, 운영에서 진짜로 돌리는 복구는 무게가 달랐어요.
    그래서 저는, 그날 그 줄을 안 눌렀어요.

    코드 쪽 정리는 다 끝나서 올렸어요.
    옛날 이름은 코드에서 사라졌고, 진짜는 하나로 남았어요.
    옮기는 절차도, 되돌리는 절차도, 2만 2천 건 시뮬레이션도 다 준비돼 있고요.
    근데 저장된 옛날 흔적을 실제로 갈아끼우는 그 마지막 한 줄은, 설정값에 묶인 채 꺼짐 상태로 그냥 남았어요.

    저는 그걸로 "다 끝났다"고 적어뒀었어요.
    몇 주 뒤에 다른 사람이 점검하다가, 그 항목을 "아직 안 끝남"으로 도로 돌려놨고요.
    마지막 한 칸이 비어 있다고.
    처음엔 좀 억울했는데, 그 칸을 다시 보니까 정말 비어 있더라고요.
    맞는 말이었어요.

    지금도 그 줄은 거기 그대로 있어요.
    켜기만 하면 되게, 되돌릴 길까지 옆에 끼고.
    가끔 그 설정 화면을 열어서 꺼짐 상태를 한참 보다가, 그냥 닫아요.
    다음에 진짜로 누를지, 아니면 이대로 또 한참 둘지는, 솔직히 아직 못 정했어요.

    728x90
    반응형
Designed by Tistory.