← 카탈로그

Dual-representation Artifact — 편집가능 데이터 + 불변 렌더 버전들

architecturescaler

하나의 서류(계약서 같은)를 두 얼굴로 나눠 가져요. 하나는 언제든 고칠 수 있는 '데이터', 다른 하나는 그 데이터로 찍어낸 '완성본'. 데이터를 고치면 완성본을 새 버전으로 다시 찍어 쌓아둬요.

비유: 요리 레시피와 완성 사진 🍳

요리 블로그를 떠올려 봐요.

  • 레시피(데이터) = 재료·분량·순서. 언제든 고칠 수 있어요. "설탕 2스푼 → 1스푼"
  • 완성 사진(렌더물) = 그 레시피대로 만든 요리를 찍은 사진. 한 번 찍으면 안 고쳐요.

만약 설탕을 줄이면? 사진을 포토샵으로 억지로 고치는 게 아니라, 레시피를 고치고 → 새로 요리해서 → 새 사진을 찍어요. 옛날 사진도 버리지 않고 1번, 2번, 3번 순서대로 앨범에 남겨둬요.

데이터 고치면 새 버전이 찍혀요

  • 데이터 는 계속 고쳐요.
  • 완성본 은 절대 손대지 않고, 바꿀 게 있으면 새 버전을 앨범 맨 뒤에 붙여요.
  • 그래서 "언제 어떤 모습이었는지" 이력이 통째로 남아요.

두 얼굴을 나눠 보기

옛날 것 데려오기 (backfill)

이미 완성본만 있고 데이터가 없는 옛날 계약서는? 완성본을 거꾸로 읽어서 데이터를 되살려 넣어요. 그러면 옛날 서류도 이제부터 데이터를 고쳐 새 버전을 찍을 수 있어요.

트레이드오프 (쉽게)

  • 👍 이력이 다 남아요. 계약서가 언제 어떻게 바뀌었는지 버전으로 추적.
  • 👍 데이터가 복잡해도(당사자 여러 명, 품목 목록) 잘 담겨요. 이게 template-roundtrip 보다 나은 점.
  • 👎 파일 하나 안에 다 넣는 것보다 구조가 조금 더 무거워요. 값이 단순하면 오히려 과해요.
  • 규칙: 완성본은 절대 직접 고치지 않기. 항상 데이터를 고치고 다시 찍어요.

핵심만 다시

  1. 아티팩트 하나를 고칠 수 있는 데이터 + 안 고치는 완성본들 두 얼굴로 나눠요.
  2. 데이터를 고치면 완성본을 새 버전으로 다시 찍어 앨범에 쌓아요 (1→2→3).
  3. 완성본만 있던 옛날 것도 거꾸로 읽어 데이터를 복원할 수 있어요.
  4. 데이터가 복잡할 때 딱 맞아요. 단순하면 더 가벼운 방식(template-roundtrip)으로.

더 자세한 진짜 코드·설계는 옆의 개요 / Variants / Apply Recipe 탭에서 볼 수 있어요.