재가 된 자리에서: 슈트가 아니라, 슈트를 만든 손
1편이 사고의 코드화, 2편이 외부 책임, 3편이 검증의 검증, 4편이 호출 트리거, 5편이 framing의 시간성이었다면, 6편은 그 모든 걸 담아 둔 그릇이 통째로 사라진 뒤의 회고. 다시 짓고 나서야 알았다 — 중요한 건 그릇이 아니라, 그릇을 빚는 손이었다.
1. 사라진 날
2026년 7월, 장비 문제로 메인보드를 교체했다. 돌아와 보니 그 위에 쌓아 둔 모든 것이 사라져 있었다. 가장 먼저 떠오른 건 백업이었다. 회사 보안 규정을 어기지 않으려고, sensitive 데이터를 제외한 나머지 전부만 백업해 두는 방식을 택해 왔었다. 그런데 그 백업조차 완벽하지 않았다. 눈앞이 캄캄했다.
절망은 오래가지 않았다. 내가 짜 둔 코드 안의 기댓값 — 어떤 입력이면 어떤 값이 나와야 하는지 — 을 역으로 밟아, sensitive 데이터의 뼈대를 다시 세울 수 있었다. 잃은 것을 세는 대신 남아 있는 것으로 다시 시작하는 법을, 그날 배웠다. 재난 복구의 첫 걸음이었다.
한 가지는 처음부터 분명히 했다. 아무리 private repo라 해도 내 개인 계정인 것은 변함이 없고, 보안 침해로 회사 자산이 얽힌 데이터가 유출되면 회사가 나를 보호해 줄 수 없다. 아주 당연한 이야기다. 그래서 외부에 매어 있던 것을 끊고, 전부 내 손 안으로 가져왔다.
2. 먼저 세운 건 백업이었다
당장 쓸 기능부터 되살리고 싶은 게 사람 마음이다. 그런데 손이 먼저 간 곳은 백업이었다. 확신을 갖고 싶었다. 절망적인 순간에도 내가 이겨 낼 수 있는 회복력이 어느 정도인지, 스스로 그 한계를 한 번 느껴 보고 싶었다.
폴더를 통째로 암호화해 아카이브하고, 처음부터 다시 세울 수 있도록 재현 자동화와 대조 게이트를 붙이고, 실패 알림과 스케줄을 정규화했다. 압권은 복구 리허설이었다 — 백업이 있다고 믿는 것과, 그 백업이 실제로 복원되는 걸 두 눈으로 보는 것은 다르다. 재난 복구의 기준선을 따로 격리해, 그 이후의 백업과 세대를 분리했다. 다시는 같은 자리에서 무너지지 않도록.
다시 잃지 않는 법을 먼저 배우지 않으면, 다시 짓는 건 의미가 없었다.
3. 이왕 이렇게 된 거
유실된 것을 그대로 되돌릴 수도 있었다. 하지만 그러지 않았다. 지난 6개월의 나보다, 앞으로 사흘의 내가 더 낫다는 걸 증명하고 싶었다. 분함에서 나온 절실함이었다.
그래서 복원이 아니라 다시 설계했다. 프로젝트의 헌법 격인 지침 문서를 단선 구조에서 상황·이슈별 분기 라우팅으로 전면 재편하고, 규격 없이 흩어지던 데이터 포맷을 생명주기별로 통일하고, 28개 파일에 박혀 있던 경로 하드코딩을 단일 출처로 모았다. 바깥 서비스에 매여 있던 노트 의존은 통째로 걷어 냈다. 버릴 것과 남길 것을, 그날 다시 골랐다. 무너진 자리는, 처음부터 다시 지을 드문 허가였다.
4. 남은 한 가지
사흘이 지나자 제자리로 돌아와 있었다. 그리고 거기서 멈추지 않았다. 로그 검색 역량을 한 단계 끌어올리고, DB 도구의 잠복 버그를 전수 감사로 찾아내고, 매장 프론트를 라이브로 재현하는 도구를 붙이고, 데이터를 바깥으로 내보내지 않는 로컬 추론 유틸을 만들고, 거대해진 코드 파일을 계약 회귀 방어(golden master) 아래에서 여섯으로 쪼갰다.
운이 좋았다. 짜릿했고, 절망 속에서 희망을 찾아 여기까지 제자리로 돌아온 것 같아 기뻤다. 한편으로는 지난 6개월의 나를 쉽게 가벼이 볼 수 없어, 그때의 내가 지금의 나보다 나았던 점은 없었는지 돌아보는 계기가 되었다. 물론, 지금의 나는 언제나 어제의 나보다 한층 더 성장해 있기에 강하다.
영화 속 한 대사가 떠올랐다. "슈트 없이 아무것도 아니라면, 그 슈트를 가져선 안 돼." 모든 걸 잃고 다시 지으며 다시 깨달았다. 내게 가장 중요한 건 도구에 대한 의존이 아니라, 그 도구로 무엇을 일궈 내는가 — 결국 나 스스로의 책임감과 성장이었다.
슈트가 없으면 아무것도 아니라면, 그 슈트를 가져선 안 된다. 중요한 건 슈트가 아니라, 슈트를 만든 손이었다.