파이프라인 (Pipelines)
D.Hub의 파이프라인은 노드 기반 비주얼 편집기로 데이터 처리 워크플로우를 설계하고 실행하는 기능입니다. 코드와 데이터셋을 노드로 배치하고 연결선으로 데이터 흐름을 정의하면, 복잡한 처리 과정을 한눈에 보면서 구성할 수 있습니다.
핵심 기능
파이프라인 모듈은 다음 기능을 제공합니다:
- 비주얼 워크플로우 편집: 드래그 앤 드롭으로 노드를 배치하고 연결하여 데이터 흐름을 설계합니다
- 다양한 노드 유형: Dataset 노드(테이블·스트리밍 등)와 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 | 버전 관리 테이블 읽기·쓰기 (배치) |
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 | 테이블 | Python/SQL | 테이블 | 데이터 추출·변환·적재 |
| 실시간 변환 | 스트리밍 | Python | 스트리밍 | 스트리밍 데이터 실시간 처리 |
| 집계 보고 | 테이블 | SQL | 테이블 | 일별/월별 통계 집계 |
| ML 추론 | 테이블 | Python | 테이블 | 학습된 모델로 예측 수행 |
파이프라인 설계 시 작은 단위로 나누어 테스트한 후 결합하면, 디버깅과 유지보수가 훨씬 쉬워집니다.
주요 화면
| 화면 | 경로 | 설명 |
|---|---|---|
| 파이프라인 목록 | /pipelines | 전체 파이프라인 조회, 생성, 삭제 |
| 워크플로우 편집기 | /pipelines/edit | 노드 기반 비주얼 편집 및 실행 |