파이프라인 (Pipelines)
D.Hub의 파이프라인은 노드 기반 비주얼 편집기로 데이터 처리 워크플로우를 설계하고 실행하는 기능입니다. 코드와 데이터셋을 노드로 배치하고, 연결선으로 데이터 흐름을 정의하여 복잡한 데이터 처리 과정을 시각적으로 구성할 수 있습니다.
핵심 기능
파이프라인 모듈은 다음 기능을 제공합니다:
- 비주얼 워크플로우 편집: 드래그 앤 드롭으로 노드를 배치하고 연결하여 데이터 흐름을 설계합니다
- 다양한 노드 유형: Dataset 노드(Delta Lake, Kafka 등)와 Code 노드(Python, SQL)를 조합합니다
- 자동 실행 관리: 워크플로우 엔진을 통해 파이프라인을 배포하고, 스케줄링 및 모니터링을 수행합니다
- 실행 이력 추적: 배치 단위로 실행 기록을 관리하고, 스텝별 트레이스를 확인합니다
파이프라인 유형
파이프라인은 배치(batch)와 이벤트(event) 두 가지 실행 모드 중 하나로 동작하며, 생성 시 유형을 선택합니다.
| 유형 | 설명 | 실행 방식 |
|---|---|---|
batch | 일괄 데이터 처리를 위한 파이프라인 | Run/Stop 버튼으로 수동 실행, Cron 스케줄 자동 실행 |
event | 이벤트 기반 실시간 데이터 처리를 위한 파이프라인 | 이벤트 토픽 구독으로 자동 실행 (options.event 에 토픽명 저장) |
Event 파이프라인에서는 설정의 일정(Schedule) 탭이 숨겨지고, 대신 토픽 구독 설정을 사용합니다. 이벤트 수신 시 자동으로 실행됩니다.
파이프라인 목록 화면
파이프라인 목록 페이지(/pipelines)에서 생성된 파이프라인들을 관리합니다. 목록은 테이블로 표시됩니다(데이터 플랫폼 목록 공통 규칙 — 카드 뷰는 없습니다). 우측 상단의 파이프라인 만들기 버튼을 누르면 워크플로우 편집기(/pipelines/edit)로 이동해 새 파이프라인을 만듭니다.
목록은 소유자 컬럼을 표시하며, 아바타에 호버하면 소유자 미리보기(직접/그룹 경유 부여 경로 포함) 팝오버가 열립니다. 정렬·페이지네이션·행 상호작용 규칙은 컬렉션/지식/대시보드 등 다른 목록과 동일합니다.
상태별 필터
파이프라인을 상태별로 필터링하여 원하는 항목만 조회할 수 있습니다.
| 필터 | 설명 |
|---|---|
| 전체 (All) | 모든 파이프라인 표시 |
| 실행 중 (Running) | 현재 실행 중인 파이프라인 |
| 예약됨 (Scheduled) | 스케줄이 등록된 파이프라인 |
| 준비됨 (Ready) | 실행 완료 또는 대기 상태의 파이프라인 |
| 실패 (Failed) | 마지막 실행이 실패한 파이프라인 |
Event 파이프라인이 이벤트를 수신 대기 중일 때는 이벤트 대기(Listening) 상태로 표시됩니다. 스케줄이 등록된 파이프라인은 행에 스케줄 배지가 함께 표시됩니다.
아키텍처 개요
파이프라인은 편집부터 실행 결과 확인까지 다음과 같은 흐름으로 동작합니다:
실행(Run)을 누르면 저장된 파이프라인이 워크플로우 엔진으로 전달되어 실행됩니다(별도의 배포 단계는 없습니다).
구성 요소
| 구성 요소 | 역할 |
|---|---|
| Editor | 노드 기반 비주얼 편집기에서 워크플로우를 설계 |
| Workflow Engine | 저장된 파이프라인 정의를 워크플로우로 변환하여 실행 |
| Batch | 파이프라인의 개별 실행 단위로, 각 실행에 고유 ID가 부여 |
| Traces | 각 스텝의 상태·시각·오류(설명·스택트레이스) 정보를 기록 |
노드 타입
파이프라인은 다음 노드 타입으로 구성됩니다. 편집기의 빠른 추가 팔레트는 데이터셋(delta·kafka·rest) · 온톨로지(엔티티·관계) · 코드(Python·SQL) 로 묶여 있습니다.
Dataset Node (입력/출력)
데이터의 소스(Source) 또는 싱크(Sink) 역할을 합니다. 데이터셋의 서브타입(delta / kafka / rest / object)에 따라 적절한 백엔드 어댑터가 연결됩니다(빠른 추가 팔레트에는 델타·카프카·REST가 노출됩니다).
| 데이터셋 서브타입 | 설명 |
|---|---|
delta | Delta Lake 테이블 읽기·쓰기 (배치) |
kafka | Kafka 토픽 스트리밍 |
rest | 외부 REST 엔드포인트 |
object | 파일/객체 스토리지 |
Entity / Relation Node (온톨로지 자원 I/O)
온톨로지로 정의된 엔티티(Entity) / 관계(Relationship) 도 step의 입출력으로 사용할 수 있습니다. 노드는 backing dataset 위에 얹힌 의미 레이어를 사용하므로, PK가 정의되어 있어야 하며 PK가 없는 경우 편집기에서 경고가 노출됩니다.
Code Node (처리 로직)
입력 데이터를 변환·처리하는 로직을 수행합니다. 코드 자원의 유형(python 또는 sql)에 따라 실행 엔진이 자동 선택됩니다.
Code type | 용도 |
|---|---|
python | 범용 데이터 처리, ML 모델 적용, 외부 API 호출 |
sql | 데이터 변환, 집계, 조인, 필터링 |
기본 파이프라인 패턴
가장 기본적인 파이프라인 구성은 입력 → 처리 → 출력 패턴입니다:
일반적인 사용 사례
| 패턴 | 입력 | 처리 | 출력 | 설명 |
|---|---|---|---|---|
| ETL | Delta Lake | Python/SQL | Delta Lake | 데이터 추출·변환·적재 |
| 실시간 변환 | Kafka | Python | Kafka | 스트리밍 데이터 실시간 처리 |
| 집계 보고 | Delta Lake | SQL | Delta Lake | 일별/월별 통계 집계 |
| ML 추론 | Delta Lake | Python | Delta Lake | 학습된 모델로 예측 수행 |
파이프라인 설계 시 작은 단위로 나누어 테스트한 후 결합하면, 디버깅과 유지보수가 훨씬 쉬워집니다.
주요 화면
| 화면 | 경로 | 설명 |
|---|---|---|
| 파이프라인 목록 | /pipelines | 전체 파이프라인 조회, 생성, 삭제 |
| 워크플로우 편집기 | /pipelines/edit | 노드 기반 비주얼 편집 및 실행 |