본문으로 건너뛰기

© 2026 Molayo

Dev.to헤드라인2026. 06. 18. 21:53

AI 기반 지리 점술 플랫폼을 구축하며 데이터 모델링을 재고하게 된 과정

요약

AI 기반 지리 점술 플랫폼 SAGE를 구축하며 직면한 데이터 모델링의 한계와 해결 과정을 다룹니다. 서로 다른 역사적 전통에 따라 달라지는 속성을 처리하기 위해 단일 진실 공급원 방식 대신 맥락(Context) 중심의 아키텍처로 전환하는 방법을 설명합니다.

핵심 포인트

  • 도메인 지식의 다양성이 데이터 모델링의 복잡성을 초래함
  • 단일 진실 공급원(SSOT) 가정이 특정 도메인에서는 한계가 있음
  • 해석을 고정된 사실이 아닌 맥락(Context)으로 취급하여 설계
  • 계보(Lineage)에 따라 속성이 변하는 레지스트리 패턴 활용

AI 기반 지리 점술 (Geomancy) 플랫폼을 구축하며 데이터 모델링을 재고하게 된 과정

대부분의 소프트웨어 시스템은 단일 진실 공급원 (Single Source of Truth)이 존재한다고 가정합니다.

사용자는 하나의 이메일 주소를 가집니다.

제품은 하나의 가격을 가집니다.

주문은 하나의 상태를 가집니다.

데이터베이스 (Databases), API, 그리고 검증 계층 (Validation layers)은 일반적으로 이러한 가정을 바탕으로 설계됩니다.

하지만 당신의 도메인에 여러 개의 유효한 진실이 포함되어 있다면 어떤 일이 벌어질까요?

이것은 우리가 서양 지리 점술 (Western Geomancy)과 인도 라말 (Indian Ramal)을 포함한 여러 역사적 전통을 지원하는 AI 기반 지리 점술 플랫폼인 SAGE를 구축하면서 직면한 문제였습니다.

예상치 못하게도, 가장 어려운 과제는 AI가 아니었습니다.

바로 데이터 모델링 (Data modeling)이었습니다.

문제 (The Problem)

지리 점술 (Geomancy)은 16개의 기초적인 형상 (Figures)을 중심으로 구축됩니다.

각 형상은 다음과 같은 다양한 속성을 가집니다:

  • 원소 (Element)
  • 행성 지배자 (Planetary ruler)
  • 황도대 연관성 (Zodiac association)
  • 해석적 의미 (Interpretive meanings)
  • 품격 및 조건 (Dignities and conditions)

복잡한 점은 무엇일까요?

서로 다른 역사적 전통들이 항상 일치하는 것은 아니라는 점입니다.

예를 들어, 어떤 형상은 서양 계보에서는 한 세트의 대응 관계를 가지지만, 인도-페르시아 라말 (Indo-Persian Ramal) 계보에서는 다른 세트를 가질 수 있습니다.

역사적 관점에서 이는 정상적인 일입니다.

하지만 소프트웨어 관점에서는 즉각적인 설계 문제를 야기합니다.

단순한 스키마 (Schema)는 다음과 같을 수 있습니다:

CREATE TABLE figures (
    id VARCHAR PRIMARY KEY,
    name VARCHAR,
...

괜찮아 보입니다.

두 개의 정당한 전통이 동일한 형상에 서로 다른 값을 할당하기 전까지는 말이죠.

이제 데이터베이스는 역사학자들이 수 세기 동안 논쟁해 온 질문을 던지게 됩니다:

어떤 버전이 옳은가?

잘못된 해결책 (The Wrong Solution)

많은 시스템이 하나의 권위 있는 대상을 선택함으로써 이 문제를 해결합니다.

사실상 다음과 같습니다:

하나의 형상 (One Figure)
↓
하나의 해석 (One Interpretation)
...

이 방식은 구현을 단순화합니다.

하지만 역사적 충실도 (Historical fidelity)를 파괴합니다.

우리가 하나의 해석을 하드코딩 (Hardcode)하는 순간, 소프트웨어에 따르면 다른 모든 계보는 "틀린" 것이 되어버립니다.

그것은 용납될 수 없는 일이었습니다.

전환점: 맥락으로서의 진실 (The Shift: Truth as Context)

우리가 해석을 사실 (Facts)로 취급하는 것을 멈추었을 때 돌파구가 마련되었습니다.

대신, 우리는 그것들을 맥락 (Context)으로 취급했습니다.

형상 (Figure)의 정체성은 일정하게 유지됩니다.

그 속성들은 계보 (Lineage)에 따라 달라집니다.

{
  "figure": "puer",
  "binary_signature": "1101",
...

이제 질문은 다음과 같이 바뀝니다:

이 계보 내에서
Puer의 원소는 무엇인가?

대신에:

Puer의 원소는 무엇인가?

이 차이가 전체 아키텍처 (Architecture)를 바꾸어 놓았습니다.

레지스트리 패턴 (The Registry Pattern)

모든 전통 (Tradition)마다 전체 데이터셋을 복제하는 것은 금방 유지보수가 불가능해질 것입니다.

대부분의 계보는 속성의 상당 부분에 동의합니다.

오직 적은 비율만이 서로 다릅니다.

이를 해결하기 위해, 우리는 계층형 레지스트리 패턴 (Layered Registry Pattern)을 구현했습니다.

class FigureRegistry:

    def get_attribute(
...

해결 순서 (Resolution order):

계보 오버라이드 (Lineage Override)
        ↓
전통 베이스라인 (Tradition Baseline)
...

이를 통해 우리는 다음과 같은 이점을 얻었습니다:

  • 더 작은 데이터셋
  • 더 쉬운 유지보수
  • 새로운 전통의 더 깔끔한 온보딩 (Onboarding)
  • 중복 감소

가장 중요한 것은, 기존 데이터를 다시 작성하지 않고도 시스템이 성장할 수 있게 해주었다는 점입니다.

스냅샷 (Snapshots)이 중요한 이유

다음 과제는 버전 관리 (Versioning)였습니다.

만약 오늘 하나의 점술 결과 (Reading)가 생성되었다고 가정해 봅시다.

6개월 후, 역사적 연구를 통해 계보 정의의 일부를 수정하게 되었습니다.

과거의 점술 결과들도 바뀌어야 할까요?

절대로 아닙니다.

점술 결과는 영원히 재현 가능 (Reproducible)해야 합니다.

해결책은 생성된 모든 점술 결과와 함께 해결된 스냅샷 (Resolved Snapshot)을 저장하는 것이었습니다.

{
  "reading_id": "rdg_892347",
  "tradition": "western_agrippa",
...

이를 통해 우리는 다음과 같은 이점을 얻습니다:

  • 감사 가능성 (Auditability)
  • 재현 가능성 (Reproducibility)
  • 역사적 일관성 (Historical consistency)
  • 더 쉬운 디버깅 (Debugging)

모든 점술 결과는 자기 완결적 (Self-contained)이 됩니다.

더 넓은 패턴 (The Broader Pattern)

이 프로젝트는 지리 점술 (Geomancy)을 다루었지만, 근본적인 문제는 어디에나 존재합니다.

예시:

법률 시스템 (Legal Systems)

각 관할 구역마다 규정을 다르게 해석합니다.

의학 (Medicine)

임상 가이드라인 (Clinical guidelines)은 시간이 흐름에 따라 변합니다.

금융 (Finance)

회계 표준 (Accounting standards)은 국가마다 다릅니다.

조세 (Taxation)

규칙은 지역과 버전에 따라 다릅니다.

역사적 기록물 (Historical Archives)

사료들은 종종 서로 모순됩니다.

공통적인 과제는 다음과 같습니다:

단일 시스템 내에 여러 개의 유효한 해석 (interpretations)이 공존해야 한다는 점입니다.

전통적인 CRUD 사고방식으로는 이를 우아하게 해결할 수 없습니다.

문맥 인식 (Context-aware) 아키텍처가 해결할 수 있습니다.

우리가 배운 것

가장 가치 있는 교훈은 AI에 관한 것이 아니었습니다.

그것은 지식 표현 (knowledge representation)에 관한 것이었습니다.

많은 도메인은 단일한 진실의 원천 (single source of truth)을 포함하지 않습니다.

대신 여러 개의 권위 있는 관점 (authoritative perspectives)을 포함합니다.

소프트웨어 아키텍처의 역할이 항상 불일치를 제거하는 것은 아닙니다.

때로는 불일치를 깔끔하게 모델링하는 것이 역할입니다.

우리가 그 아이디어를 받아들인 후, 아키텍처는 현저히 단순해졌습니다.

경쟁하는 전통들을 하나의 스키마 (schema)에 강제로 밀어 넣는 대신, 공통 프레임워크를 공유하면서도 여러 전통이 공존할 수 있는 시스템을 설계했습니다.

지나고 보니, 그것은 어떤 역사적 권위가 "옳은지" 결정하려고 노력하는 것보다 훨씬 더 확장 가능한 (scalable) 솔루션임이 드러났습니다.

마지막 생각

만약 당신의 도메인이 다음과 같은 요소를 포함한다면:

  • 경쟁하는 권위 (competing authorities)
  • 진화하는 표준 (evolving standards)
  • 다중 관할권 (multiple jurisdictions)
  • 역사적 해석 (historical interpretations)
  • 설정 가능한 비즈니스 규칙 (configurable business rules)

당신은 데이터 문제를 겪고 있는 것이 아닐 수도 있습니다.

당신은 문맥 (context) 문제를 겪고 있는 것일 수 있습니다.

그리고 문맥은 진실보다 모델링하기가 훨씬 쉬운 경우가 많습니다.

원래 서양 지리 점술 (Western Geomancy) 및 인도 라말 (Indian Ramal) 전통을 위한 AI 기반 플랫폼인 SAGE를 구축하는 과정에서 마주한 아키텍처적 과제에서 영감을 얻었습니다.

저는 서양 지리 점술 및 인도 라말을 위한 AI 기반 시스템을 구축하고 있는 SAGE (School of Ancient Geomantic Education)의 설립자입니다. 저는 소프트웨어 아키텍처, 지식 모델링, 그리고 역사적 시스템을 디지털화할 때 발생하는 과제들에 대해 글을 씁니다.

더 읽어보기

이 기사는 서양 지리 점술 및 인도 라말을 위한 AI 기반 플랫폼인 SAGE (School of Ancient Geomantic Education)를 구축하는 동안 직면했던 실제 아키텍처 과제를 바탕으로 각색되었습니다.

원문 기사와 추가 논의를 보려면 다음을 방문하세요:

👉 https://www.dotsofdestiny.com/blog-post-conflict-resolution

또한 다음에서 더 광범위한 프로젝트를 살펴볼 수 있습니다:

👉 https://www.dotsofdestiny.com

AI 자동 생성 콘텐츠

본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0