Skip to content

메타데이터 Drift Risk: 사이트 이름 설정 중복 구조 이슈 #49

Description

@glitter-gim

요약

현재 관리자 설정 구조에서는 사실상 동일한 공개 사이트 식별 개념이 두 곳에서 각각 입력 가능하게 되어 있습니다.

  • 일반 설정 → 사이트 이름

  • SEO 설정 → OG 사이트 이름

현재 두 값은 동일하게 유지되고 있지만,
운영자가 각각 독립적으로 수정할 수 있기 때문에 시간이 지나면 서로 달라질 수 있습니다.

이는 메타데이터 일관성 및 운영 Drift Risk를 발생시킵니다.


현재 구조

일반 탭

  • 사이트 이름

    • 공개 사이트 식별의 기본값 역할

    • 현재 다음 메타데이터들과 사실상 연동됨:

      • canonical metadata

      • JSON-LD WebSite name

      • SPA head metadata

      • bot SEO metadata

SEO 탭

  • OG 사이트 이름

    • Open Graph metadata 용도

    • 의미상 사이트 이름과 거의 동일한 역할

    • 별도로 수정 가능


문제점

두 설정은 의미적으로 거의 같은 공개 사이트 식별값인데,
운영 UI에서는 독립적인 설정값처럼 노출됩니다.

이 구조는 설정 Drift를 유발할 수 있습니다.

예시:

설정 | 값 -- | -- 사이트 이름 | Example Project Hub OG 사이트 이름 | ExampleHub

이 경우 다음 문제가 발생할 수 있습니다.

  • 검색 결과 사이트명 불일치

  • Open Graph 미리보기 불일치

  • JSON-LD metadata 불일치

  • 브랜딩 일관성 붕괴

  • 운영자 혼란 증가


왜 중요한가

현재 플랫폼은 이미 다음 구조로 수렴 중입니다.

general.site_name

이 값은 현재 사실상 아래 메타데이터들의 기준값 역할을 하고 있습니다.

  • canonical metadata

  • og:site_name

  • WebSite JSON-LD

  • SPA metadata

  • bot SEO rendering

즉 플랫폼은 이미 SSoT(Single Source of Truth) 구조로 이동 중입니다.

그런데 동일 의미의 별도 editable field를 유지하면,
이 아키텍처를 약화시키게 됩니다.


이슈 성격

이 문제는 렌더링 버그가 아닙니다.

성격상 다음에 가깝습니다.

  • configuration drift risk

  • metadata consistency issue

  • admin UX design issue


권장 방향

플랫폼은 공개 사이트 이름에 대해 단일 기준값 구조로 수렴하는 것이 바람직합니다.


가능한 해결 방향

Option A — OG 사이트 이름 입력 제거

  • general.site_name만 사용

  • 중복 설정 제거

장점:

  • 구조 단순화

  • Drift 제거

단점:

  • OG 전용 이름 override 불가능


Option B — OG 사이트 이름을 Optional Override로 변경

동작 구조:

og_site_name ?? general.site_name

UI 예시:

OG 사이트 이름 Override (선택사항)

장점:

  • SSoT 유지

  • 필요 시만 override 가능

  • Drift가 명시적이 됨

단점:

  • 설정 로직이 약간 복잡해짐


Option C — 자동 동기화

  • 사이트 이름 저장 시 OG 사이트 이름 자동 동기화

  • 운영자가 의도적으로 override하지 않는 이상 동일 상태 유지

장점:

  • 운영 실수 감소

단점:

  • 내부 동기화 로직 필요


현재 아키텍처 기준 권장안

현재 metadata resolver 구조를 고려하면,
가장 적절한 방향은 Option B에 가깝습니다.

즉:

  • general.site_name을 SSoT로 유지

  • OG 전용 override는 선택적으로만 허용

  • 기본적으로는 자동 fallback

구조 예시:

og_site_name ?? general.site_name

이 방식이 가장 운영 안정성이 높습니다.


현재 심각도 평가

심각도: Low ~ Medium

이유:

  • 현재 값은 일치 상태

  • 실제 SEO 오류는 없음

  • 검색 노출도 정상 동작 가능

다만:

  • 장기 운영 시 Drift 가능성 존재

  • 브랜드명 변경 시 불일치 가능성 높음

  • 관리자 UX 상 "동일 개념이 독립 설정처럼 보이는 문제"가 존재함


관련 운영 점검 및 runtime contract 관찰은 아래 글에도 정리해 두었습니다.

https://hub.glitter.kr/board/free/57

최근 실제 운영 환경에서 SEO renderer, SPA metadata, static asset, crawler response, API fallback contract가 서로 어떻게 어긋날 수 있는지 점검하던 흐름과 연결된 내용입니다.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions