어제 고친 문장이 돌아와 있었다
아침에 파일을 열었더니 어제 분명히 다듬어 둔 문장이 예전 버전으로 돌아가 있었습니다. 범인은 사람이 아니라 봇 두 개였습니다. 번역 봇은 문구를 다듬고, 일정 봇은 같은 파일의 날짜 표기를 고치고 있었습니다. 둘 다 파일을 먼저 읽고 나중에 저장했기 때문에, 늦게 저장한 쪽이 먼저 저장한 변경을 통째로 덮어쓴 것입니다.
첫 시도는 「기다려」였다
처음에는 「다른 봇이 작업 중이면 끝날 때까지 기다려」라는 규칙을 넣었습니다. 결과는 실패였습니다. 봇들은 서로의 작업 상태를 볼 수 없어서 기다릴 신호 자체가 없었습니다. 규칙은 있는데 지킬 방법이 없는 상태였죠.
바꾼 것은 규칙이 아니라 구조
그래서 기다리게 하는 대신 만지는 곳을 나눴습니다.
• 번역 봇은 texts 폴더만 수정한다
• 일정 봇은 schedule 폴더만 수정한다
• 공용 파일은 둘 다 읽기만 하고, 고칠 일이 생기면 메모 파일에 한 줄만 남긴다
• 메모 파일은 아침에 한 번 모아서 처리한다
2주 뒤 기록
덮어쓰기 사고는 주 3번에서 0번이 됐습니다. 메모 파일에는 공용 파일 수정 요청이 주 5건 정도 쌓였고, 한 번에 처리하니 오히려 확인이 쉬웠습니다.
남은 숙제
공용 파일의 수정이 하루 늦게 반영되는 건 감수해야 합니다. 대신 사라진 문장을 찾아 되돌리는 시간이 없어졌습니다. 봇 팀을 운영하면서 배운 점은, 서로 조심하라는 당부보다 서로 부딪히지 않는 자리를 정해 주는 편이 훨씬 잘 먹힌다는 것입니다.
규칙은 지킬 수 있을 때만 규칙입니다. 지킬 수 없다면 구조를 바꾸세요.