여러 홈페이지를 관리하면 같은 CSS와 실행 파일을 반복해서 보관하게 된다. 공통 파일을 공유하면 관리가 편해지지만 특정 사이트의 수정이 다른 사이트의 내용까지 바꾸는지 확인해야 한다. 원래 수정 프로그램은 NTFS 하드링크를 고려해 파일 내용을 바로 덮어쓰는 대신 새 파일로 교체하는 방식을 택했다.

나는 그 설명과 실제 쓰기 함수를 대조했다. 임시 파일에 수정한 문자열을 쓰고 그 파일을 대상 경로로 교체하는 작은 함수였다. 이 설계의 목적은 개별 경로를 고칠 때 같은 저장 내용을 참조하는 다른 경로의 바이트를 직접 수정하지 않는 것이다. 공통이라는 단어가 모든 변경을 함께 적용하라는 뜻은 아니었다.

공유한 것은 디자인 규칙인가 실제 파일 내용인가

같은 파일을 복사해 여러 폴더에 두는 것과 여러 경로가 같은 저장 내용을 가리키는 것은 다르다. 화면에서 파일 이름이 같아 보여도 변경의 영향을 받는 범위가 달라진다. 원래 문서가 하드링크를 언급한 이유는 개별 사이트를 고치는 작업에서 그 영향 범위를 의식해야 했기 때문이다.

공통 디자인을 의도적으로 갱신하는 경우에는 대상 복사본을 정해 함께 반영할 수 있다. 그러나 한 사이트만의 문구와 자료를 고치는 경우에는 다른 대상이 같이 바뀌면 안 된다. 디자인의 공통 정본과 실제 저장 관계를 따로 확인한다. 폴더가 다르다는 사실만으로 파일 내용도 독립적이라고 가정하지 않는다.

새 내용을 쓰고 대상 경로를 교체하는 선택

원래 함수는 대상 파일 옆의 임시 경로에 문자열을 쓴 뒤 os.replace로 교체한다. 기존 파일을 열어 안쪽 바이트를 수정하는 대신 새 내용을 담은 파일로 그 경로를 바꾸려는 방식이다. 이 선택은 공유된 파일의 내용을 직접 바꾸지 않으려는 설계 의도를 보여 준다. 텍스트 자료를 다루는 함수이며 모든 자산을 수정하는 도구는 아니다.

같은 프로그램은 변경할 페이지를 보관하고 변환한 결과를 쓰는 순서를 둔다. 원본 보존과 교체는 별도의 목적이다. 교체가 중간 상태 노출을 줄이려는 선택이라도 잘못 변환한 내용은 그대로 교체될 수 있다. 무엇을 쓸지 확인하는 검사와 어느 경로를 바꿀지 확인하는 검사를 함께 두어야 한다.

공통 자산 갱신과 개별 설정 변경을 나눈다

공통 자산 동기화는 같은 CSS와 실행 파일을 각 사이트의 공유 폴더로 옮긴다. 반면 실제 시공사 값처럼 확인 근거가 다른 항목은 해당 사이트의 입력 설정을 갱신한다. 연락처나 자료 경로까지 공통 파일에 한꺼번에 넣으면 개별 수정의 경계가 사라질 수 있다. 공통 동작과 개별 값을 다른 층에 둘 이유다.

동기화 후에는 파일 내용이 정본과 일치하는지, 개별 설정과 정상 기능은 유지되는지 확인한다. 최신 파일의 이름이 같다는 것보다 실제 바이트와 연결 경로가 중요하다. 일부 파일을 교체했다고 관련 HTML과 캐시까지 같은 버전을 읽는 것은 아니다. 공개 전달 확인은 그 다음 단계에서 다른 근거로 남긴다.

작은 쓰기 함수도 실행 조건을 가진다

읽은 함수는 고정된 임시 파일 이름을 사용한다. 같은 대상을 동시에 쓰는 여러 실행의 충돌까지 해결하는 코드는 아니다. 원래 작업은 한 개씩 순차 진행하는 흐름이었고 그 조건과 함께 이해해야 한다. 파일 교체라는 이름만으로 모든 동시 실행과 저장 장치에서 안전하다고 설명하지 않는다.

이 글은 원래 소스의 쓰기 방식과 문서의 의도를 읽은 기록이다. 실제 하드링크 두 경로를 만들어 현재 파일시스템에서 비교한 새로운 실험은 수행하지 않았다. 파일 권한과 실패 복구, 중간 임시 파일과 병렬 실행을 다루려면 별도의 조건과 검사가 필요하다. 검토한 설계와 검증한 운영 결과를 나눠 둔다.

변경 범위를 의뢰자가 이해할 수 있게 남긴다

작업 기록에는 바꾼 경로와 보관한 원본, 공통 적용 대상과 개별 유지 대상을 함께 적을 수 있다. 한 곳만 고쳐 달라는 요청에 전체 사이트가 바뀌면 빠른 수리여도 요청을 지키지 못한 것이다. 제작자는 재사용 구조 안에서 어느 부분을 함께 바꾸고 어느 부분을 분리할지 설명해야 한다.

내가 남길 노하우는 특정 파일 교체 명령을 모든 환경에 복사하는 방법이 아니다. 파일이 공유되는 관계를 먼저 읽고, 개별 변경이 공유 바이트를 건드리지 않게 설계하며, 변경 후 다른 대상의 보존을 확인하는 순서다. 홈페이지가 많아질수록 공통화의 편리함과 개별 수정의 책임을 같이 관리해야 한다.