버전 관리
D.Hub의 모든 리소스(Dataset, Code, Pipeline, Knowledge)는 변경 이력이 버전별로 관리됩니다. 이 문서에서는 D.Hub의 버전 관리 체계와 활용 방법을 설명합니다.
버전 관리 개요
D.Hub은 두 가지 계층의 버전 관리를 제공합니다.
Manifest 기반 버전 관리
모든 리소스의 메타데이터와 구성 정보는 Manifest로 관리됩니다. Manifest는 S3 호환 오브젝트 스토리지에 저장되며, 오브젝트 버저닝(Object Versioning)을 통해 변경 이력이 자동으로 기록됩니다.
- 리소스를 생성하면 최초 Manifest가 저장됩니다.
- 메타데이터(이름, 태그, 설명 등)를 수정하면 새 버전의 Manifest가 생성됩니다.
- 이전 버전의 Manifest는 삭제되지 않고 유지됩니다.
Delta Lake 테이블 버전 관리
데이터셋의 실제 데이터는 Delta Lake 테이블로 관리됩니다. Delta Lake는 자체적인 트랜잭션 로그를 통해 데이터 버전을 추적합니다.
- CSV 업로드, 데이터 추가, 스키마 변경 시 새 버전이 생성됩니다.
- 각 버전에는 고유한 버전 번호와 타임스탬프가 부여됩니다.
- 타임 트래블(Time Travel): 특정 시점이나 버전 번호로 과거 데이터를 조회할 수 있습니다.
Manifest 버전과 Delta Lake 테이블 버전은 독립적으로 관리됩니다. Manifest는 리소스의 메타데이터 변경을, Delta Lake는 실제 데이터 변경을 추적합니다.
리소스별 버전 관리
Dataset 버전
데이터셋은 두 가지 수준의 버전이 존재합니다.
| 버전 유형 | 관리 대상 | 추적 방식 |
|---|---|---|
| Manifest 버전 | 이름, 스키마, 태그, 설명 등 메타데이터 | S3 Object Versioning |
| Table 버전 | 실제 테이블 데이터 (행/열) | Delta Lake 트랜잭션 로그 |
파이프라인에서 데이터셋을 입력으로 참조할 때, 특정 버전 번호를 지정하여 정확한 시점의 데이터를 사용할 수 있습니다.
Code 버전
코드 아티팩트는 오브젝트 스토리지에 버전별로 저장됩니다.
- 코드 내용을 수정하면 새 버전이 자동으로 생성됩니다.
- 버전 목록에서 각 버전의 수정 시각을 확인할 수 있습니다.
- 두 버전을 선택하여 변경 내역을 비교할 수 있습니다.
Pipeline 버전
파이프라인의 구성 정보(Step 목록, 의존 관계, 옵션 등)는 Manifest로 관리됩니다.
- Step 추가/제거, 의존 관계 변경 시 새 버전이 생성됩니다.
- 파이프라인 실행 시 해당 시점의 구성이 사용됩니다.
Knowledge 버전
지식(Knowledge) 리소스 역시 Manifest 기반으로 버전이 관리됩니다. 문서 추가, 설정 변경 등의 작업이 버전으로 기록됩니다.
버전 목록 조회
리소스의 상세 화면에서 Versions 탭 또는 버전 아이콘을 클릭하면 해당 리소스의 전체 버전 목록을 확인할 수 있습니다.
각 버전 항목에는 다음 정보가 표시됩니다.
| 항목 | 설명 |
|---|---|
| Version ID | 버전 고유 식별자 |
| Latest | 최신 버전 여부 |
| Last Modified | 해당 버전이 생성된 시각 |
특정 버전 확인
버전 목록에서 항목을 클릭하면 해당 시점의 리소스 상태를 확인할 수 있습니다.
- Dataset: 해당 버전의 스키마 및 데이터 프리뷰
- Code: 해당 버전의 코드 내용
- Pipeline: 해당 버전의 Step 구성
데이터셋의 경우, Delta Lake 테이블 버전 목록에서 특정 버전을 선택하여 해당 시점의 데이터를 프리뷰할 수 있습니다. 이를 통해 데이터 변경 이력을 추적할 수 있습니다.
Checkpoint
Checkpoint는 파이프라인의 배치(Batch) 처리 중 각 Step의 실행 상태를 기록하는 메커니즘입니다.
Checkpoint 구조
각 Checkpoint에는 다음 정보가 포함됩니다.
| 필드 | 설명 |
|---|---|
| State | 실행 상태 (running, completed, failed 등) |
| Offsets | 데이터 처리 오프셋 (재시작 시 이어서 처리) |
| Start Time | 실행 시작 시각 |
| End Time | 실행 종료 시각 |
| Comment | 추가 메모 |
Checkpoint 활용
Checkpoint는 다음과 같은 상황에서 유용합니다.
- 장애 복구: 파이프라인 실행 중 오류가 발생했을 때, 마지막 Checkpoint부터 재시작할 수 있습니다.
- 진행 상황 추적: 각 Step의 처리 오프셋을 통해 진행률을 확인합니다.
- 실행 이력 분석: 과거 배치 실행의 시작/종료 시각, 처리량 등을 분석합니다.
Checkpoint는 배치 처리 전용 기능입니다. 단일 실행(Ad-hoc) 파이프라인에서는 Checkpoint가 생성되지 않습니다.
다음 단계
- 데이터셋 — 데이터셋의 스키마 및 데이터 관리
- 코드 — 코드 아티팩트 관리
- 파이프라인 (컬렉션) — 파이프라인 상태 확인
- 파이프라인 실행 — 배치 실행 및 모니터링