데이터/측정 Koal & KoalStudio

Gevrey-Chambertin은 이름인가 산지인가 — 와인을 데이터로 잡는 11가지 결정

와인 한 병의 정체는 라벨에 다 안 적혀 있어요. 생산자, 빈티지, 산지, 품종, 등급을 어떻게 구조화하고 큐레이션하는지 — WineDuck이 와인의 정체성을 데이터로 잡으며 내린 11개의 결정을 풀어봐요.

셀러를 관리한다는 것 글에서 셀러 운영의 네 차원을 봤어요. 그 글이 셀러의 운영 모델이었다면, 이번 글은 그 앞에 와야 하는 질문이에요 — 와인 한 병의 정체를 데이터로 어떻게 잡을까.

와인은 데이터로 잡기 까다로운 대상이에요. “Gevrey-Chambertin”은 이름일까 산지일까. 같은 마을·같은 해 와인인데 왜 다른 와인일까. 빈티지가 안 적힌 샴페인은 빈 칸으로 둘까. “Bordeaux”라고만 검색했는데 왜 다 나와야 할까. 이 질문들에 답을 안 정해두면 와인 데이터는 금방 흐트러져요. WineDuck이 자기 안에 박은 11개를 풀어볼게요.


결정 1) 와인의 “이름”은 한 가지가 아니에요

가장 먼저 깨야 했던 가정이에요. “와인엔 이름이 있겠지” — 없어요. 정확히는, 이름을 짓는 방식이 와인마다 달라요.

  • Type A (구세계, 아펠라시옹 기반)Gevrey-Chambertin 1er Cru. 마을·밭 이름이 곧 와인의 정체예요. 품종은 라벨에 거의 안 적혀요.
  • Type B (신세계, 생산자+품종)Penfolds Bin 389 Cabernet Shiraz. 생산자 이름과 품종이 정체를 만들어요.
  • Type C (브랜드)Dom Pérignon. 산지도 품종도 아닌 브랜드 자체가 이름이에요.

이 셋을 하나의 “이름” 칸에 욱여넣으면 검색도 큐레이션도 무너져요. Type A를 품종으로 찾으면 안 나오고, Type B를 아펠라시옹으로 찾으면 안 나와요.

그래서 와인의 정체를 단일 문자열로 안 잡아요. 생산자 · 산지 · 품종 · 빈티지를 각각 따로 들고, 표시용 이름은 그것들로 조립해요. 한 줄 이름은 결과물이지 입력이 아니에요.


결정 2) 생산자(도멘)는 비워둘 수 없어요

이게 와인 데이터에서 가장 강한 강제 규칙이에요.

같은 마을, 같은 빈티지여도 — 생산자가 다르면 다른 와인이에요.

Vosne-Romanée 2019 한 줄로는 와인을 특정 못 해요. DRC가 만든 것과 옆 도멘이 만든 것은 가격도, 평가도, 큐레이션 가치도 완전히 달라요. 산지만 같다고 같은 와인 취급하면 셀러 안에서 두 와인이 섞여버려요.

그래서 생산자를 필수 입력으로 못 박았어요. 산지는 비어도 받고, 품종도 자유롭게 받지만, 생산자만은 비우고 등록할 수 없어요. 와인의 정체를 떠받치는 가장 단단한 기둥이에요.


결정 3) 빈티지의 “빈 칸”과 “NV”는 다른 답이에요

빈티지를 안 적은 와인이 두 종류예요. 이걸 같은 데이터로 처리하면 큐레이션이 틀려요.

  • 빈 칸 = “수확연도를 모르거나 아직 안 적었어요”
  • Non-Vintage (NV) = “이 와인은 원래 빈티지가 없어요” — 샴페인·셰리처럼 여러 해를 블렌딩한 와인

후자는 라벨에 빈티지가 없는 게 정상이에요. 빈 칸으로 두면 “정보 누락”으로 보여서 다음에 또 채우라고 재촉하게 돼요. NV 와인을 매번 “빈티지 입력하세요”로 괴롭히는 셈이죠.

그래서 NV는 빈티지를 명시적으로 “없음”으로 표시해요. “안 적었다”가 아니라 “원래 없다”예요. 둘을 구분하니 빈티지 차트도, 숙성 추천도 NV 와인을 헷갈리지 않아요.


결정 4) 산지는 네 단계 계층이에요

와인의 산지는 한 줄로 안 들어가요. 큰 데서 작은 데로 내려가는 계층이에요.

국가 → 지역 → 서브지역 → 아펠라시옹
프랑스 → 부르고뉴 → 코트 드 뉘 → 본 로마네

왜 굳이 네 단계로 쪼개냐면 — 사용자는 여러 층위로 와인을 찾기 때문이에요. 어떤 날은 “프랑스 와인”, 어떤 날은 “부르고뉴”, 어떤 날은 “본 로마네”로 찾아요. 산지를 한 줄 문자열로 두면 “부르고뉴”로 검색했을 때 그 아래 마을 와인들이 안 딸려와요.

계층으로 잡으면 상위에서 검색해도 하위가 다 따라와요. 산지 트리는 검색의 골격이자 큐레이션의 골격이에요.


결정 5) 트리의 깊이는 권역마다 달라요

계층을 네 단계로 잡았다고 모든 와인이 네 단계를 다 쓰진 않아요. 와인 산지는 비대칭이거든요.

부르고뉴는 깊어요. 마을 아래 밭(climat)까지 의미가 있어요.

프랑스 → 부르고뉴 → 코트 드 뉘 → 본 로마네 → (climat)

신세계는 보통 얕아요.

미국 → 캘리포니아 → 나파 밸리

“모든 와인은 4단계를 채워야 한다”고 강제하면 신세계 와인은 빈 단계가 생기고, 부르고뉴는 단계가 모자라요. 그래서 트리 깊이를 권역마다 자유롭게 뒀어요. 산지 항목이 자기 상위를 가리키게만 해두면, 부르고뉴는 깊게 신세계는 얕게, 같은 구조 안에서 공존해요. 와인 도메인의 비대칭을 데이터에 그대로 박은 자리예요.


결정 6) 등급 표기는 자유 문자열로 둬요

와인 등급은 나라마다 체계가 달라요.

  • 프랑스: AOC
  • 이탈리아: DOCG / DOC
  • 스페인: DOCa
  • 미국: AVA
  • 그 외: IGT

처음엔 “등급을 정해진 목록(ENUM)으로 잡자”는 유혹이 있었어요. 깔끔해 보이니까요. 그런데 와인 세계는 새 등급이 계속 생기고, 나라마다 예외가 넘쳐요. 목록을 고정하는 순간 거기 없는 등급은 등록 자체가 막혀요.

그래서 등급은 자유 문자열로 받아요. “이 칸은 이런 값들이 들어와요” 정도의 느슨한 약속만 두고, 실제 값은 라벨에 적힌 대로 받아요. 데이터의 깔끔함보다 현실의 다양함을 못 막는 게 더 중요한 자리예요.


결정 7) “화이트”와 “스파클링”은 한 묶음이에요

와인 종류를 나눌 때 의외의 결정이에요. 보통 red / white / sparkling / rosé 넷으로 나눌 것 같지만, WineDuck은 셋이에요.

  • red
  • rosé
  • white_sparkling (화이트 + 스파클링)

왜 화이트와 스파클링을 묶었냐면 — 큐레이션·음용 추천에서 이 둘이 거의 같은 자리에 서기 때문이에요. 차갑게, 식전이나 가벼운 음식과, 비슷한 글라스로. 스파클링을 따로 떼면 분류는 늘지만 추천 로직은 거의 똑같은 게 둘이 돼요.

물론 “이 와인은 기포가 있나”는 별도로 들고 있어요. 큰 분류는 셋, 세부 속성은 따로 — 분류는 단순하게 두되 정보는 안 잃어요.


결정 8) 품종은 자유 텍스트로, 비율까지 받아요

품종도 목록으로 못 박지 않았어요. 블렌딩 때문이에요.

Cabernet Sauvignon 60% / Merlot 40% 같은 와인이 흔해요. 품종을 “하나만 고르는 칸”으로 두면 블렌딩 와인이 안 들어가요. 여러 개 고르게 해도 비율이 안 들어가요. 그런데 보르도 블렌드에서 비율은 와인의 성격을 결정하는 정보예요.

그래서 품종은 자유 텍스트로 받아요. 비율을 적어도 되고, 품종만 나열해도 되고, 모르면 비워도 돼요. 정형화된 칸의 정확함보다 현실의 블렌딩을 그대로 담는 유연함을 택했어요.


결정 9) 공식 산지와 검색용 산지는 달라요

이게 산지 데이터에서 가장 미묘한 결정이에요.

병 하나의 공식 산지(canonical appellation)는 보통 하나예요. 라벨에 박힌 AOC/DOC/AVA는 법적으로 한 곳에 귀속되는 경우가 많아요. 그래서 와인 한 병엔 공식 산지를 하나만 매달아요.

그런데 사용자가 찾는 방식은 여러 층이에요. 같은 쥬브레-샹베르탱 와인을 누구는 “부르고뉴”, 누구는 “코트 드 뉘”, 누구는 “쥬브레-샹베르탱”으로 찾아요.

그래서 둘을 분리했어요.

  • 공식 산지 = 하나. 와인의 법적 정체.
  • 탐색·큐레이션용 산지 매핑 = 여럿. 상위 권역과 관련 산지를 별도로 연결.

라벨의 정체는 흔들지 않으면서, 검색은 어느 층에서 들어와도 그 와인을 찾아내요. “이 와인이 무엇인가”와 “이 와인을 어떻게 찾는가”는 다른 질문이고, 데이터도 따로 잡아요.


결정 10) 라벨에 없는 정보가 큐레이션의 핵심이에요

지금까지는 다 라벨에서 읽을 수 있는 정보였어요. 그런데 와인을 큐레이션하려면 라벨 밖의 정보가 필요해요.

  • 도멘 티어 — 이 생산자가 어느 급인가. 라벨엔 안 적혀 있지만 추천 가중치를 완전히 바꿔요.
  • 빈티지 차트 — 같은 와인이라도 2019는 좋고 2017은 평범한 해. 이것도 라벨엔 없어요.

이 둘은 와인 자체의 속성이 아니라 와인 위에 얹는 메타 정보예요. 그래서 와인 데이터 본체와 따로 들어요. 와인은 “라벨에 적힌 사실”만 담고, 티어·빈티지 평가 같은 “해석”은 별도 층에 둬요.

이 분리가 중요한 이유는 — 해석은 바뀌어도 사실은 안 바뀌거든요. 빈티지 평가가 업데이트돼도 와인 본체 데이터는 그대로예요. 사실과 해석을 섞어두면 둘 중 하나를 고칠 때마다 다른 하나가 흔들려요.


결정 11) 데이터에 없는 산지는 우회 매핑으로 받아요

마지막은 운영하면서 부딪힌 현실이에요. 산지 트리가 아무리 촘촘해도, 세상의 모든 산지를 다 담을 순 없어요.

한 번은 South Australia 와인을 등록하려는데, 그 아래 세부 권역(서브지역)이 데이터에 아직 없었어요. 여기서 두 선택지가 있었어요.

  1. “지원 안 하는 산지예요” — 등록 막기
  2. 임시로 상위 권역에 매핑 — 일단 받기

1번을 택하면 사용자는 멀쩡한 와인을 등록 못 해요. 데이터의 완벽함을 지키려다 실제 와인 한 병을 놓치는 거예요.

그래서 2번을 택했어요. 세부 권역이 아직 없으면 임시로 상위 권역(예: Barossa Valley)에 매핑해서 일단 받고, 나중에 산지 트리가 채워지면 정밀하게 옮겨요. “완벽한 산지 트리”를 기다리느라 등록을 막느니, 일단 받고 나중에 정리하는 쪽이 맞았어요.

데이터는 항상 현실보다 늦게 와요. 그 시차를 우회로로 메우지 않으면 사용자만 답답해져요.


그래서 와인을 데이터로 잡는다는 것은

11개를 다 모아놓고 보면 결이 하나로 모여요.

  • 단일 이름은 결과물 — 생산자·산지·품종·빈티지를 따로 들고 이름은 조립
  • 정체를 떠받치는 기둥은 생산자 — 산지가 같아도 도멘이 다르면 다른 와인
  • “없음”의 종류를 구분 — 빈 칸 ≠ NV, 공식 산지 ≠ 검색용 산지
  • 현실의 다양함을 못 막게 — 등급·품종은 자유롭게, 트리 깊이는 가변
  • 사실과 해석을 분리 — 라벨의 사실 따로, 도멘 티어·빈티지 차트 따로

와인을 데이터로 잡는다는 건 라벨 한 장을 그대로 베끼는 일이 아니에요. “이 와인이 무엇인가”라는 질문에 — 생산자는 누구고, 산지는 어느 층위까지고, 빈티지는 진짜 없는 건지 모르는 건지, 등급은 어느 체계고, 품종은 어떻게 섞였고, 어떻게 찾을 수 있고, 라벨 밖의 가치는 어떤지까지가 다 다른 결정이에요.

그 결정들이 잘 박혀 있으면, 와인이 수천 병 쌓여도 정체가 안 흐트러져요. 셀러를 관리한다는 것이 셀러의 운영 모델이었다면, 이 글은 그 위에서 굴러갈 와인 한 병 한 병의 정체성 모델이에요. 정체가 분명해야 운영도 흔들리지 않아요.


링크

댓글

댓글 남기기

댓글 삭제 시 사용됩니다
공개되지 않습니다
0/2000
← 목록으로