FastAPI 백그라운드의 한계를 넘어 쿠버네티스 기반의 안정적인 RAG 파이프라인 구축 여정
채널톡 AI 팀이 겪은 RAG 시스템의 문서 전처리 병목 현상을 Dagster 도입으로 해결한 실무 기록입니다. 리소스 경합으로 인한 파드 다운 문제를 K8s 기반 격리 환경으로 극복하고, 개발 생산성을 높이는 코드 로케이션 분리 전략을 공유합니다.
이벤트 기반의 무거운 데이터 처리가 필요하거나 리소스 격리가 중요한 ML 엔지니어링 팀에 강력히 추천합니다. 특히 쿠버네티스 환경에서 파이프라인의 가시성과 운영 안정성을 동시에 잡고 싶다면 Dagster가 훌륭한 대안이 될 것입니다.
기존 FastAPI 백그라운드 태스크 기반의 문서 전처리 시스템은 동시 요청 증가 시 리소스 경합과 OOM(Out of Memory)으로 인한 파드 충돌 문제가 발생했습니다. 이로 인해 전체 작업이 취소되고 재시도가 빈번해지며, 로그에만 의존하는 디버깅 환경으로 인해 운영 안정성과 예측 가능성이 저하되었습니다.
데이터 자산 중심의 오케스트레이션 도구인 Dagster를 도입하고, 모든 워크플로우 실행을 Kubernetes 파드 단위로 격리하는 K8sRunLauncher를 적용했습니다. 웹서버, 데몬과 별개로 워크플로우 로직을 담은 코드 로케이션(Code Location)을 분리 배포하여 인프라 변경 없이 독립적인 CI/CD가 가능한 구조를 구축했습니다.
파드 단위의 리소스 격리를 통해 리소스 경합 문제를 근본적으로 해결했으며, 하루 1만 건 이상의 대규모 전처리 요청을 안정적으로 처리하게 되었습니다. Dagster 대시보드를 통해 워크플로우 가시성을 확보하여 디버깅 효율을 높였고, 실패한 지점부터 재시도할 수 있는 환경을 마련했습니다.
Trade-off
OSS 버전의 Dagster는 세밀한 RBAC(권한 관리)을 지원하지 않아 SSO를 통한 접근 제한 등 별도의 방어 기제가 필요했습니다. 또한 기본 대시보드만으로는 고도화된 모니터링 요구사항을 충족하기 어려워 외부 시스템과의 추가 연동 리소스가 발생했습니다.
데이터의 흐름이 아닌 데이터 자산(Asset) 자체를 중심으로 워크플로우를 정의하고 관리하는 오케스트레이션 프레임워크입니다.
Dagster 워크플로우가 실행될 때마다 쿠버네티스 상에 별도의 파드를 동적으로 생성하여 실행하는 메커니즘입니다.
워크플로우 정의와 실행 로직을 포함하는 파이썬 모듈로, Dagster 인프라와 논리적으로 분리된 배포 단위입니다.