ONE QUESTION AT A TIME.

천천히 생각하고, 분명하게.

TODAY’S QUESTION502 / 1500
설계난이도 중하5분 답변 목표 · 보강본

설정 파일을 저장하는 중 프로세스가 꺼져 반쪽 파일이 남습니다. 임시 파일과 원자 교체는 어떻게 사용하나요?

잠깐, 답변을 보기 전에
먼저 내 말로 설명해 볼까요?

답변과 점검 포인트 펼치기답변 접기
01

구두 답변

정의를 외우기보다, 원리와 조건을 연결해 설명해 보세요.

완성되지 않은 내용을 기존 파일에 직접 덮기보다 새 임시 파일에 작성·검증하고 마지막에 이름을 교체하면 독자가 부분 내용을 보는 일을 줄일 수 있습니다. 원자적 공개와 내구화는 별도로 확인합니다.

동작 원리와 전제

같은 디렉터리·파일시스템에서 임시 파일을 만들고 형식·길이·권한을 확인한 뒤 rename합니다. 여러 writer가 동시에 저장하면 마지막 교체가 앞 변경을 잃을 수 있어 기준 버전이나 락이 필요합니다.

선택과 실패 처리

전원 장애 내구성에는 파일과 디렉터리의 flush 절차가 필요할 수 있습니다. 여러 파일의 관련 상태는 개별 rename만으로 한 번에 바뀌지 않으므로 manifest로 버전 집합을 가리키거나 transaction 로그를 둡니다.

구체적인 사례와 검증

한 writer가 만든 새 설정을 다른 writer가 더 오래된 기준으로 덮으면 각 rename은 원자적이어도 갱신이 유실됩니다. 파일 해시나 버전 조건을 확인하고 필요하면 락을 사용합니다. 설정을 읽는 프로세스가 이전 파일 핸들을 계속 들고 있으면 이름 교체 뒤에도 옛 inode를 읽을 수 있어 reload 계약이 필요합니다. 새 파일이 유효하지 않으면 게시하지 않고 마지막 정상값을 유지하며 오류를 알립니다. 정리할 임시 파일도 현재 작업이 사용 중인지와 내가 생성한 대상인지 확인합니다. 원자성은 동시 관찰의 속성이고 수명·인가·내구성은 별도로 설계해야 합니다.

작성 중·검증 후·교체 전후 중단과 동시 writer를 시험합니다. 실패한 임시 파일은 대상과 소유를 확인한 뒤 정리합니다. 설정 로더는 마지막 정상 버전과 오류를 구분하고 부분·오래된 파일을 조용히 성공으로 읽지 않게 합니다.

02

득점 포인트

이해가 드러나는 지점을 확인해 보세요.

  • 핵심 구분: 완성되지 않은 내용을 기존 파일에 직접 덮기보다 새 임시 파일에 작성·검증하고 마지막에 이름을 교체하면 독자가 부분 내용을 보는 일을 줄일 수 있습니다.
  • 선택 조건: 전원 장애 내구성에는 파일과 디렉터리의 flush 절차가 필요할 수 있습니다.
  • 검증 기준: 작성 중·검증 후·교체 전후 중단과 동시 writer를 시험합니다.
03

감점 포인트

놓치기 쉬운 조건과 오해를 짚어 보세요.

  • 임시 파일 rename 하나가 동시 writer·여러 파일·전원 장애까지 모두 해결한다고 한다.
04

더 파고들 거리

하나 더 질문하며 이해의 범위를 넓혀 보세요.

  • 파일 내용 flush와 이름 교체의 디렉터리 내구화는 어떤 순서로 처리하나요?
  • 설정 하나의 타입뿐 아니라 여러 값의 조합과 실제 적용 버전을 어떻게 검증하나요?
  • 여러 자동 작업자가 같은 기준 파일을 바꿀 때 텍스트 충돌과 의미 충돌을 어떻게 검증하나요?

득점·감점 포인트는 학습용 자기 점검 기준이며, 특정 회사의 실제 채점표가 아닙니다.

원리부터 공부하고 싶다면

답변을 보충하는 개념·예제·슈도코드를 읽어 보세요.

← 전체 질문 보기