피드로 돌아가기
Multi-site schemas: lessons from evolving one large system over time
Dev.toDev.to
Database

site_id에서 scope_id로의 전환을 통한 데이터 가시성 모델 단일화

Multi-site schemas: lessons from evolving one large system over time

Istvan Szabo2026년 4월 18일4intermediate

Context

초기 site_id 기반의 단순 필터링 구조에서 사이트 간 데이터 공유 요구사항 증가에 따른 확장성 한계 직면. many-to-many 관계 테이블 도입 시 엔티티 성격에 따라 쿼리 패턴이 이원화되어 코드 복잡도 및 유지보수 비용 상승.

Technical Solution

  • 가시성(Visibility) 개념을 도입한 scope_id 기반의 추상화 레이어 설계
  • scope_members 테이블을 통해 특정 scope에 포함된 site_id 집합을 관리하는 구조 채택
  • 모든 읽기 쿼리를 WHERE scope_id IN (...) 패턴으로 단일화하여 쿼리 일관성 확보
  • active site에 해당하는 허용 scope 리스트를 사전 조회 후 캐싱하여 DB 부하 최소화
  • 전역 가시성(Global Visibility)을 scope_id = 0으로 정의하여 특수 케이스 처리 로직 제거
  • 데이터 복제(Cloning) 방식 대신 단일 ID 기반의 가시성 제어로 데이터 정합성 및 저장 공간 효율화

1. 데이터 소유권(Ownership)과 접근 권한(Visibility)을 분리하여 설계했는가?

2. 엔티티 종류에 따라 쿼리 패턴이 달라지는 파편화 지점이 존재하는가?

3. 다중 지역/사이트 대응 시 데이터 복제보다 가시성 제어 모델이 유리한 상황인가?

4. 확장된 모델이 초기 단순 모델 대비 성능 저하나 구현 복잡도 증가가 미미한가?

원문 읽기