"제일 좋은 이사는 아예 안 하는 이사야. 파일이 이미 사는 자리에서 읽어."
옮기고 싶어지는 마음
기존 모델 파일을 써야 하는 새 엔진을 지을 때, 본능은 그걸 내 세계로 데려오는 거야. 내 폴더 구조로 복사하고, 내 관례대로 이름 바꾸고, 아니면 symlink 라도 걸어서 내 것처럼 보이게 하고. 그래야 내 것이 된 것 같거든. 실제로는 위험을 떠안는 거야. 실패할 수 있고, 기가바이트를 두 번 쓰고, 옛날 툴이 여전히 찾고 있는 파일을 미아로 만드는 단계 하나를 새로 만드는 거니까.
대신 제자리에서 받아들여
엔진은 반대로 가. 기존 모델 디렉토리를 훑고, 모든 파일을 이미 있는 자리에서 읽어. 옮기지도 않고, 이름도 안 바꾸고, 자기 구조로 symlink 도 안 걸어. 엔진은 모델 디렉토리를 옆에서 읽는 쪽이지 그걸 재배치하는 새 설치 프로그램이 아니야. 파일은 정확히 있던 자리에 남고, 엔진은 제자리에 있는 그것들을 가리키는 registry 만 만들어.
이게 왜 버그 한 부류를 통째로 없애냐면
이사는 데이터가 죽는 자리야. 하다 만 복사는 앞뒤가 안 맞는 상태를 남겨. 옛날 툴이 모르는 이름 변경은 그 툴을 깨고. symlink 는 경로가 바뀌면 썩고. 이 하나하나가 파일을 아예 안 옮기면 애초에 생기지도 않는 실패야. 제자리에서 받아들이는 건 더 깔끔한 정도가 아니라, 원인이 되는 행위 자체를 안 해서 실패 한 부류를 통째로 지우는 거야.
같이 쓸 수 있다는 게 기능이야
엔진이 제자리에서 읽고 배치를 안 바꾸니까, 옛날 툴도 정확히 같은 파일로 계속 돌아. 넘어가는 동안 새 엔진이랑 옛날 것 중에 하나를 고를 필요가 없어. 둘 다 같은 디렉토리를 읽고, 서로를 안 밟거든. 이 공존이 새 엔진을 부담 없이 써 보게 해 주는 거야. 뭔가 잘못돼도 옛날 툴이 바로 거기, 손도 안 댄 채로, 그대로 돌아가니까.