콘텐츠로 이동

Schema Collector

Schema Collector는 데이터베이스 스키마를 사전에 수집해 Hub에 등록하는 운영 도구다. 주 목적은 Wrapper를 실제 배포하기 전에 스키마와 컬럼 구조를 미리 수집해, Hub에서 정책 매핑을 준비할 수 있게 하는 것이다.

Schema Collector는 자동 동기화를 보완하는 안전한 운영 도구다

Wrapper는 기본적으로 Hub에서 필요한 정책과 endpoint 정보를 동기화한다. 재기동 직후 첫 요청 타이밍을 더 안전하게 관리하려면 Schema Collector로 스키마를 미리 등록하고, Hub에서 정책을 준비한 뒤, refresh 결과를 선반영하는 방법을 사용할 수 있다.

사용하는 이유

Schema Collector를 사용하면 운영자는 Wrapper 기동 전에도 다음 작업을 준비할 수 있다.

  • 데이터베이스 스키마 구조 파악
  • 암복호화 대상 컬럼 후보 식별
  • Hub에서 정책 매핑 사전 준비
  • 동일 alias를 사용하는 Wrapper runtime과의 매핑 공유
  • 사용자 트래픽 유입 전에 Wrapper storage를 채우는 보조 절차 마련

동작 모델

  1. 도구가 대상 데이터베이스에 접속한다.
  2. 스키마와 컬럼 메타데이터를 수집한다.
  3. 암복호화 대상이 아닌 컬럼은 제외 규칙으로 걸러낸다.
  4. Hub 등록 모드라면 수집 결과를 alias와 함께 Hub에 전송한다.
  5. Hub가 schema/register 결과로 Wrapper tenantId와 runtime snapshot version을 반환한다.
  6. 실제 Wrapper는 같은 alias-scoped storage와 tenantId로 refresh를 수행한다.

핵심 식별자

alias

alias는 같은 DB/schema와 정책 매핑을 공유하는 논리 그룹이다. Schema Collector와 실제 Wrapper가 같은 alias를 사용하면 같은 schema/mapping 그룹을 참조한다.

tenantId

tenantId는 Hub가 발급한 개별 Wrapper runtime credential이다. refresh와 runtime schema sync는 X-DADP-Tenant-Id header의 tenant credential을 기준으로 인증된다.

policyCode

policyCode는 runtime 암복호화 요청에서 정책을 식별하는 기준값이다. schema/mapping 단계에서는 테이블/컬럼이 어떤 policyCode를 사용할지 결정한다.

적합한 사용 상황

  • Wrapper를 곧 도입할 예정인데 사전 정책 매핑을 미리 준비하고 싶을 때
  • 애플리케이션 기동 이전에 스키마 구조를 먼저 등록해야 할 때
  • 직접 동기화보다 수집과 등록을 분리해서 운영하고 싶을 때
  • 재기동 직후 첫 요청이 정책 동기화보다 먼저 들어오면 안 되는 환경

운영 원칙

  • Schema Collector는 Wrapper를 대체하지 않는다.
  • 수집 성공이 곧 런타임 실행 성공을 의미하지는 않는다.
  • 등록에 사용한 alias와 실제 Wrapper의 alias가 다르면 매핑을 공유할 수 없다.
  • tenantId는 runtime credential이므로 body가 아니라 runtime header와 local proxy-config.json 기준으로 다룬다.
  • 데이터베이스 접속 권한, 벤더별 메타데이터 조회 방식, 제외 규칙 해석을 함께 검토해야 한다.

권장 운영 순서

첫 요청 타이밍까지 제어해야 하는 환경에서는 다음 순서를 사용할 수 있다.

  1. Schema Collector로 대상 스키마를 수집한다.
  2. Hub에 alias/schema를 등록하고 Wrapper tenantId를 발급받는다.
  3. Hub에서 정책 매핑을 완료한다.
  4. dadp wrapper refresh 또는 동등한 runtime refresh로 로컬 storage를 갱신한다.
  5. Wrapper 또는 애플리케이션을 기동한다.
  6. 보호 동작이 확인된 뒤 사용자 트래픽을 연다.