ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 전환의 한 줄은 무섭지 않게 만들어놨는데
    AI Agent 2026. 7. 26. 09:00
    728x90
    반응형

    아침 식탁 위 머그와 노트 사진
    전환의 한 줄은 무섭지 않게 만들어놨는데

    전환을 누르기로 한 날, 제가 실제로 만진 건 한 줄이었습니다.
    들어오는 걸 옛 경로로 보내던 한 줄을, 새 경로로 보내게 바꾼 것.
    저장하고, 끝이었습니다.

    그 한 줄 앞에는 며칠이 깔려 있었습니다.
    작업을 다 펼쳐놓고 보면 거의 전부가 그 한 줄을 안전하게 만드는 준비였고, 정작 전환 자체는 손가락 한 번이었습니다.
    이상하게 들리겠지만, 그게 이 작업의 핵심이었습니다.

    새 기록을 받기 전에 옛 기록부터 깨질 뻔했다

    원래 하려던 건 단순한 추가였습니다.
    기존 기록 흐름에 항목 네 개를 더 붙이는 일.
    거리 계산, 어떤 화면에서 시작했는지 판별하는 부분, 순서를 매기는 부분 — 이미 잘 돌아가는 계산들 사이에 새 항목을 끼워 넣어야 했습니다.

    문제는, 이 계산들이 서로 물려 있다는 거였습니다.
    새 항목을 위쪽에 끼우면 아래쪽 계산의 입력이 한 칸씩 밀릴 수 있습니다.
    밀리면 거리값이 달라지고, 그러면 그 위에 쌓인 모든 지표가 조용히 틀어집니다.
    사용자 화면엔 멀쩡한 숫자가 떠 있는데 내부에선 다른 숫자가 도는, 제일 무서운 종류의 고장입니다.

    처음엔 보통의 방식대로 갈 생각이었습니다.
    새 코드로 갈아 끼우고, 깨지는 데가 보이면 하나씩 잡는다.
    바꾸고, 터지면 고친다.

    그렇게는 못 하겠더군요.
    새 경로로 보내는 순간 여러 군데가 동시에 흔들리는데, 그게 한꺼번에 오면 어디가 원인인지 분간이 안 됩니다.
    그래서 방향을 틀었습니다.
    전환을 누르기 전에, 새 경로가 옛 경로와 한 글자도 다르지 않게 미리 다 맞춰두기로 했습니다.

    '변경 0'을 한 칸씩 증명하는 지루한 며칠

    이게 지루한 일입니다.
    새 항목이 거리 계산에 0건 끼어드는지, 시작 화면 판별 로직이 0건 달라지는지, 순서 매기는 부분이 0건 바뀌는지 — 항목마다 "여기에 새 것이 손을 댔는가"를 따로따로 확인했습니다.
    제 검산 표 첫 열엔 계속 changed_rows = 0만 채워졌고, 그 0이 깨지는 순간 다음 칸으로 못 넘어가게 해뒀습니다.
    손댄 데가 한 곳이라도 나오면 거기서 멈추고, 그 차이를 0으로 만들 때까지 안 넘어갔습니다.

    제일 확실한 건 기존 기록을 다시 돌려보는 거였습니다.
    새 항목을 아무것도 안 넣은 옛날 기록을, 새 코드에 그대로 다시 통과시킵니다.
    그러고 나온 지표가 옛날 결과와 100% 같은지 봤습니다.
    비슷한 게 아니라, 소수점까지 똑같은지.
    새 항목이 전부 비어 있는 기록은 옛날과 비트 단위로 같은 결과가 나와야 한다 — 그걸 기준선으로 박았습니다.
    한쪽에선 옛 경로로 돌리고, 다른 쪽에선 새 코드로 같은 입력을 흘려서, 두 결과를 글자 단위로 맞대봤습니다.

    그렇게 며칠을, 새 코드를 켜둔 채로 일부러 옛날처럼만 굴렸습니다.
    새 항목은 받을 자리만 비워두고 한 칸도 안 채운 채로요.
    화면엔 어제와 똑같은 숫자가 떴습니다.
    바뀐 게 없으니 당연한데, 그 당연한 걸 매번 두 눈으로 확인하는 게 일이었습니다.
    한 번은 거리값 하나가 미세하게 어긋나서, 반나절을 그 한 자리 붙들고 있었습니다.
    알고 보니 새 항목을 끼운 위치가 아래쪽 계산을 한 칸 밀고 있었습니다.
    위로 빼서 다시 0으로 맞추고 나서야 넘어갔습니다.
    그 며칠이 사실상 작업의 전부였습니다.

    전환은 '아무 일도 안 일어나는 게' 성공이다

    이 작업의 진짜 목표가 거기서 또렷해졌습니다.
    전환의 한 줄이 극적이면 안 된다는 것.

    모든 부분이 '변경 0'이면, 마지막 한 줄은 새로울 게 없습니다.
    새 경로는 이미 옛 경로와 똑같이 굴고 있고, 한 줄은 그저 들어오는 걸 그쪽으로 흘릴 뿐입니다.
    그래서 눌렀을 때 아무 일도 안 일어나야 정상입니다.
    화면도 그대로, 숫자도 그대로, 로그도 그대로.
    재미없는 게 성공입니다.

    그날 한 줄을 바꾸고 저장했을 때, 진짜로 아무 일도 안 났습니다.
    한참을 모니터만 봤습니다.
    깨질 자리를 찾느라 봤는데, 깨질 게 없었습니다.
    앞에서 다 깨놓고 다 메워둔 자리니까요.
    누르는 순간이 무서워서 몇 주씩 미루던 종류의 일이, 이번엔 미룰 이유가 없었습니다.
    무서운 건 며칠에 걸쳐 작은 대조로 잘게 부숴 먹어버렸고, 전환의 한 줄엔 무서울 게 안 남았으니까요.

    깔끔하게 안 끝났다

    여기까지가 제가 노린 그림이고, 실제로 됐습니다.
    그런데 검수 표를 보면 항목 다섯 개 중 두 개에 '부분'이라는 표시가 붙어 있었습니다.

    같은 위험한 패턴이 들어온 경로 한 곳에서는 깨끗하게 정리됐는데, 그 옆에 비슷하게 시작하는 다른 경로 한 곳엔 그대로 남아 있었습니다.
    이번엔 한쪽만 손봤고, 나머지는 '다음에'로 적어뒀습니다.
    검증을 돌리는 환경 자체도 가끔 정리가 어긋나서, 같은 테스트가 됐다 안 됐다 했습니다.
    코드 문제가 아니라 돌리는 판이 불안정한 거라, 그건 또 따로 들여다봐야 할 일이었습니다.
    여러 기기에서 처음 켤 때 생기는 경우의 수는 미리 다 막지 못해서, 일단 켜두고 지켜보기로 했습니다.

    전환의 한 줄은 무섭지 않게 만들어놨는데, 정작 그 한 줄 옆에는 '나중에' 칸이 세 줄 남았습니다.
    위험을 앞으로 다 몰아넣었다고 믿었던 작업이, 끝에 와서 보니 못 옮긴 위험을 따로 적어두는 일로 끝났습니다.

    728x90
    반응형
Designed by Tistory.