"거래처 코드 체계를 바꿔야 해서 기존 데이터를 한 번에 정리해 주세요." 시스템을 쓰다 보면 이런 요청이 생깁니다. 엑셀에서 열 하나 바꾸는 일처럼 느껴집니다.
엑셀과 다른 점이 하나 있습니다. 엑셀은 저장 전이면 되돌릴 수 있고, 잘못되면 눈에 보입니다. 운영 데이터는 덮어쓰는 순간 이전 값이 사라지고, 잘못된 값이 들어가도 화면은 정상으로 보입니다.
저희가 자료실 123건의 등록일을 재배치할 때 쓴 절차를 정리합니다. 항목 수가 많지 않아도 같은 순서를 씁니다. 한 건이든 백 건이든 되돌릴 수 없는 것은 같습니다.
실행 버튼을 누르기 전에 결과를 봅니다
스크립트를 세 모드로 나눴습니다. 계획, 적용, 복원입니다.
계획 모드는 아무것도 쓰지 않고 무엇이 어떻게 바뀔지만 출력합니다. 첫 실행 결과는 대상 123건, 변경 123건, 배정될 고유 날짜 123개였습니다. 이 숫자를 보고 나서야 적용합니다.
담당자가 이 단계에서 얻는 것이 있습니다. 대상 건수를 눈으로 확인할 수 있습니다. 거래처 500곳 중 200곳만 바꿀 생각이었는데 계획 출력에 500건이 찍히면, 실행하기 전에 그 자리에서 멈출 수 있습니다.
계획과 적용을 분리하지 않으면 실행 버튼을 누르는 순간까지 결과를 모릅니다. 조건을 잘못 걸어 의도보다 넓은 범위가 걸려도 실행 전에는 드러나지 않습니다. 계획 출력을 읽는 데 드는 시간은 잘못 바꾼 데이터를 되돌리는 시간보다 훨씬 짧습니다.
바꾸기 전 상태를 파일로 남깁니다
적용 모드는 스냅샷 없이는 실행되지 않게 했습니다. 변경 대상의 현재 값을 파일로 저장한 뒤에야 쓰기가 시작됩니다.
스냅샷 파일에는 운영 데이터가 들어 있으므로 권한을 소유자만 읽고 쓸 수 있게 제한합니다. 임시 폴더에 두더라도 다른 사용자가 읽을 수 있는 상태로 남기지 않습니다. 거래처 정보나 매출 수치가 담긴 파일이라면 이 조치는 선택이 아닙니다.
복원 모드는 그 스냅샷을 그대로 되돌립니다. 실제로 쓸 일이 없더라도 준비해 둡니다. 되돌릴 방법을 만들어 놓는 것과 만들어 놓지 않는 것은, 문제가 생겼을 때 판단의 여유가 다릅니다. 되돌릴 수 있으면 원인을 차분히 찾고, 되돌릴 수 없으면 급하게 덧칠하다가 더 망가집니다.
같은 작업을 두 번 해도 결과가 같아야 합니다
적용이 끝난 뒤 계획 모드를 다시 돌렸습니다. 두 번째 계획 결과는 변경 0건, 변경 없음 123건이었습니다.

이 확인이 왜 필요한지는 실패 상황을 생각하면 분명합니다. 작업 중간에 네트워크가 끊겨 절반만 적용된 상태에서 다시 돌린다고 해봅시다. 스크립트가 실행할 때마다 다른 결과를 만든다면, 일부는 첫 번째 값이고 일부는 두 번째 값이라 섞입니다. 어디까지 적용됐는지도 알 수 없습니다.
그래서 날짜 배정에 무작위 함수나 현재 시각을 쓰지 않았습니다. 각 항목의 고유 키와 고정된 값을 함께 해시해 날짜를 정합니다. 입력 순서가 바뀌어도 같은 항목에는 같은 날짜가 배정되고, 며칠 뒤에 다시 돌려도 결과가 같습니다.
무작위로 섞는 것이 목적처럼 보이는 작업에도 재현 가능한 방법을 씁니다.
건드리지 않기로 한 것을 확인합니다
바꿀 필드만 담아서 보냈습니다. 등록일 하나입니다. 나머지 필드를 포함하지 않으면 실수로 덮어쓸 일이 없습니다.
그래도 적용 후에 읽어서 대조했습니다. 식별자, 생성일, 수정일, 검증일, 다운로드 수, 댓글 수, 공개 여부를 스냅샷과 비교해 123건 모두 일치하는 것을 확인했습니다.
바꾸지 않기로 한 필드가 그대로인지 확인하는 것은 바꾼 필드가 제대로 들어갔는지 확인하는 것만큼 중요합니다. 의도한 변경은 눈에 띄지만 의도하지 않은 변경은 한참 뒤에 발견됩니다. 단가를 고치는 작업에서 거래처 여신 한도가 함께 초기화됐다면, 그 사실은 대금 결제가 막히는 날에야 드러납니다.
개발을 맡길 때 요구할 것
| 단계 | 하는 일 | 없으면 생기는 문제 |
|---|---|---|
| 계획 | 무엇이 바뀔지 출력만 | 실행하고 나서야 범위를 안다 |
| 스냅샷 | 현재 값을 파일로 저장 | 되돌릴 방법이 없다 |
| 적용 | 바꿀 필드만 전송 | 다른 필드를 덮어쓴다 |
| 재확인 | 읽어서 스냅샷과 대조 | 안 바뀌어야 할 것이 바뀐 줄 모른다 |
| 재계획 | 계획을 한 번 더 실행 | 두 번 돌리면 결과가 달라진다 |
담당자가 쓸 수 있는 형태로 바꾸면 질문 세 개입니다. 실행 전에 무엇이 바뀔지 보여줄 수 있는지, 되돌릴 수단이 있는지, 바꾸지 않기로 한 값이 그대로인지 확인했는지입니다.
다섯 단계가 번거로워 보이지만 실제로 드는 시간은 작업 자체보다 짧습니다. 되돌릴 수 없는 작업에서 아낄 시간이 아닙니다.
저희가 고객사 시스템의 데이터를 다룰 때도 같은 순서를 씁니다. 데이터 정합성과 운영 중 변경에 관한 관점은 업무 자동화 운영 체크리스트에서 알림과 재시도 구조로 다뤘습니다.



