#Backend

팀 내 전처리 프레임워크 dagster 도입기

팀 내 전처리 프레임워크 dagster 도입기
01

Summary

하루 1만 건의 AI 문서 전처리, Dagster로 '리소스 갈등' 끝내기

FastAPI 백그라운드의 한계를 넘어 쿠버네티스 기반의 안정적인 RAG 파이프라인 구축 여정

채널톡 AI 팀이 겪은 RAG 시스템의 문서 전처리 병목 현상을 Dagster 도입으로 해결한 실무 기록입니다. 리소스 경합으로 인한 파드 다운 문제를 K8s 기반 격리 환경으로 극복하고, 개발 생산성을 높이는 코드 로케이션 분리 전략을 공유합니다.

  • 01리소스 경합 원천 차단: K8sRunLauncher를 통한 실행 단위별 파드 격리
  • 02데이터 자산 중심(Asset-based) 모델로 복잡한 RAG 파이프라인 구조화
  • 03인프라와 로직의 분리: Helm Chart와 GitHub Actions를 활용한 독립적 배포 체계
  • 04관측 가능성(Observability) 증대: 시각화된 대시보드를 통한 스텝별 추적 및 재시도
  • 05비용 최적화: 문서 크기에 따른 유동적 리소스 할당 기반 마련

RECOMMENDATION

이벤트 기반의 무거운 데이터 처리가 필요하거나 리소스 격리가 중요한 ML 엔지니어링 팀에 강력히 추천합니다. 특히 쿠버네티스 환경에서 파이프라인의 가시성과 운영 안정성을 동시에 잡고 싶다면 Dagster가 훌륭한 대안이 될 것입니다.

The Problem

기존 FastAPI 백그라운드 태스크 기반의 문서 전처리 시스템은 동시 요청 증가 시 리소스 경합과 OOM(Out of Memory)으로 인한 파드 충돌 문제가 발생했습니다. 이로 인해 전체 작업이 취소되고 재시도가 빈번해지며, 로그에만 의존하는 디버깅 환경으로 인해 운영 안정성과 예측 가능성이 저하되었습니다.

The Solution

데이터 자산 중심의 오케스트레이션 도구인 Dagster를 도입하고, 모든 워크플로우 실행을 Kubernetes 파드 단위로 격리하는 K8sRunLauncher를 적용했습니다. 웹서버, 데몬과 별개로 워크플로우 로직을 담은 코드 로케이션(Code Location)을 분리 배포하여 인프라 변경 없이 독립적인 CI/CD가 가능한 구조를 구축했습니다.

The Result

파드 단위의 리소스 격리를 통해 리소스 경합 문제를 근본적으로 해결했으며, 하루 1만 건 이상의 대규모 전처리 요청을 안정적으로 처리하게 되었습니다. Dagster 대시보드를 통해 워크플로우 가시성을 확보하여 디버깅 효율을 높였고, 실패한 지점부터 재시도할 수 있는 환경을 마련했습니다.

Trade-off

OSS 버전의 Dagster는 세밀한 RBAC(권한 관리)을 지원하지 않아 SSO를 통한 접근 제한 등 별도의 방어 기제가 필요했습니다. 또한 기본 대시보드만으로는 고도화된 모니터링 요구사항을 충족하기 어려워 외부 시스템과의 추가 연동 리소스가 발생했습니다.

03

Key Concepts

Concept · 01

Dagster

데이터의 흐름이 아닌 데이터 자산(Asset) 자체를 중심으로 워크플로우를 정의하고 관리하는 오케스트레이션 프레임워크입니다.

  • 기존 Task 중심의 Airflow와 달리 데이터의 최종 상태와 계보(Lineage)를 관리하는 데 특화되어 있습니다.
Concept · 02

K8sRunLauncher

Dagster 워크플로우가 실행될 때마다 쿠버네티스 상에 별도의 파드를 동적으로 생성하여 실행하는 메커니즘입니다.

  • 개별 전처리 작업 간의 리소스 간섭을 방지하고 작업별로 독립적인 컴퓨팅 자원을 할당하는 데 사용되었습니다.
Concept · 03

Code Location

워크플로우 정의와 실행 로직을 포함하는 파이썬 모듈로, Dagster 인프라와 논리적으로 분리된 배포 단위입니다.

  • 플랫폼 팀의 인프라 관리와 ML 팀의 워크플로우 개발 주기를 분리하여 개발 생산성을 극대화했습니다.