블로그로 돌아가기

Reliability · 2026년 6월 10일

Contentful 버전 충돌은 안전하게 재시도되어야 합니다

편집자와 자동화는 같은 항목을 동시에 다루는 경우가 많습니다. 신뢰할 수 있는 현지화 워크플로는 어느 한쪽의 변경도 잃지 않고 Contentful 버전 충돌을 처리합니다.

Contentful 버전 충돌은 안전하게 재시도되어야 합니다

Contentful는 낙관적 잠금으로 항목을 보호합니다. 모든 업데이트에는 클라이언트가 자신이 편집 중이라고 믿는 버전이 포함됩니다. 다른 변경이 먼저 적용되면, Contentful는 오래된 업데이트가 더 새로운 작업을 덮어쓰도록 두는 대신 이를 거부합니다.

이 충돌은 안전장치입니다. 현지화에서 막다른 길이 되어서는 안 됩니다.

건강한 팀에서 충돌이 발생하는 이유

번역 요청에는 시간이 걸릴 수 있습니다. 생성되거나 검토되는 동안 편집자가 원본 항목을 수정할 수 있고, 다른 로케일이 업데이트될 수 있으며, 자동화가 메타데이터를 변경할 수도 있습니다.

현지화된 값을 푸시할 준비가 되었을 때쯤이면, 앞서 캡처한 항목 버전은 이미 오래된 상태입니다.

이것이 누군가 실수했다는 뜻은 아닙니다. 퍼블리싱 시스템의 여러 부분이 동시에 작동하고 있다는 뜻입니다.

같은 오래된 페이로드를 무작정 다시 시도하지 마세요

가장 단순한 재시도는 거부된 요청을 그대로 반복하는 것입니다. 이는 같은 오래된 버전을 담고 있으므로 성공할 수 없습니다.

위험한 대안은 최신 버전 번호를 가져온 뒤, 예전의 전체 항목 페이로드를 다시 보내는 것입니다. 이렇게 하면 버전 검사는 통과할 수 있지만, 번역이 시작된 이후 변경된 필드를 덮어쓸 수 있습니다.

안전한 재시도에는 최신 상태와 범위를 좁힌 패치가 필요합니다.

다시 읽고, 병합하고, 업데이트하세요

Contentful가 버전 충돌을 보고하면, 워크플로는 다음을 해야 합니다:

  1. 같은 space와 environment에서 현재 항목을 가져옵니다
  2. 최신 필드와 버전을 확인합니다
  3. 번역 요청에서 승인된 대상 로케일 값만 병합합니다
  4. 관련 없는 필드와 로케일 값은 보존합니다
  5. 최신 버전으로 업데이트를 제출합니다

이렇게 하면 재시도가 사용자의 실제 의도와 일치하게 유지됩니다. 번역 요청은 특정 현지화 필드를 변경하려는 것이지, 전체 항목의 오래된 스냅샷을 복원하려는 것이 아닙니다.

재시도하지 말아야 할 때를 결정하세요

자동 충돌 복구에는 한계가 필요합니다.

검토가 시작된 뒤 정확히 그 대상 로케일 필드가 변경되었다면, 시스템은 실제 편집 충돌을 발견한 것입니다. 자동 재시도는 더 새로운 사람의 작업을 대체할 수 있습니다. 이런 경우에는 중단하고 검토를 요청해야 합니다.

마찬가지로, 반복되는 충돌은 바쁘게 도는 자동화 루프나 항목을 지속적으로 쓰는 통합을 나타낼 수 있습니다. 제한된 재시도 횟수는 현지화가 그 루프에 무한정 합류하는 일을 막아줍니다.

오류는 여전히 조치 가능해야 합니다: 항목, 영향을 받은 로케일과 필드, 그리고 충돌이 발생한 단계를 식별해야 합니다.

원본과 대상의 소유권 경계를 명확히 유지하세요

워크플로에 엄격한 쓰기 경계가 있으면 충돌 처리가 더 쉬워집니다. 번역 푸시는 승인된 대상 로케일만 변경해야 합니다. 원본 필드, 콘텐츠 유형 메타데이터, 태그 또는 관련 없는 로케일 값은 기록해서는 안 됩니다.

이 경계는 병합 복잡성을 줄이고 감사 로그를 의미 있게 만듭니다. 재시도가 성공하면 팀은 어떤 현지화 필드가 왜 변경되었는지 정확히 확인할 수 있습니다.

핵심 요점

버전 충돌은 협업형 CMS에서는 정상입니다. 모든 충돌을 번역 실패로 취급하면 워크플로는 취약하게 느껴지고, 충돌을 무시하면 안전하지 않게 됩니다.

최신 항목을 가져오고, 승인된 가장 작은 변경만 병합하고, 명확한 한도 안에서 재시도하세요. 같은 필드가 양쪽에서 모두 변경되었다면 사람의 검토를 위해 중단하세요. 신뢰성은 동시 작업을 존중하는 데서 오지, 그런 일이 없다고 가장하는 데서 오지 않습니다.