피드로 돌아가기
컬리 기술블로그AI/ML
원문 읽기
Kurly만의 MLOps 구축하기 - 쿠브플로우 도입기
컬리가 SageMaker 대신 Kubeflow를 선택해 기존 Kubernetes 인프라를 활용하면서 데이터 사이언티스트의 MLOps 추상화 환경 구축
AI 요약
Context
Kurly는 Jupyter Hub, MLFlow, Airflow 등 여러 오픈소스 도구를 EKS에 배포했으나, 도구 간 연결성이 낮아 데이터 사이언티스트가 관리할 범위가 증가하고 시스템 복잡도가 높아지고 있었다. 머신러닝 모델 실험·서빙 수요가 증가하면서 인프라 관리 부담을 줄이고 통합된 MLOps 플랫폼이 필요한 상황이었다.
Technical Solution
- 플랫폼 선택: SageMaker(AWS 완전 관리형)와 Kubeflow(Kubernetes 기반 오픈소스) 중 Kubeflow 채택. 기존 Kubernetes 인프라 재활용 가능 및 벤더 락인 회피.
- Elyra 도입: Kubeflow Pipeline DAG 생성을 위한 새로운 문법 학습 부담을 제거하기 위해 JupyterLab UI에서 Python 파일의 의존성 설정으로 KFP DAG 자동 변환 가능하도록 구성.
- 커스텀 JupyterLab 이미지: Elyra 익스텐션이 설치된 이미지를 ECR에서 관리하고,
spawner_ui_config.yaml수정으로 드롭다운 메뉴 방식 제공. - Artifact 저장소 변경: MinIO(PV 기반) 대신 AWS S3를 KFP 기본 저장소로 설정. Argo Workflow의
workflow-controller-configmap수정으로 구현. - IRSA 적용: Kubernetes Pod에 AWS IAM Role을 자동 할당하는 IAM Roles for Service Accounts로 자격증명 관리.
- 자격증명 보안화: Dex ConfigMap을 Secret으로 변환 후 SealedSecrets로 암호화.
kubeseal클라이언트로 Secret을 SealedSecret CR로 변환해 Git 저장소 관리. - 실수 방지: Pre-commit Git Hook으로 평문 Secret이 커밋되는 것을 자동 차단.
Key Takeaway
복합적인 MLOps 환경 구축 시 완전 관리형 클라우드 서비스보다 기존 인프라(Kubernetes) 위의 오픈소스를 선택하면, 초기 도입 난도는 높지만 기술 내재화와 비용 절감 및 유연성을 동시에 확보할 수 있다. 단, 사용자 경험 추상화(Elyra)와 보안 강화(SealedSecrets) 등 운영 편의성을 위한 추가 투자가 필수적이다.
실천 포인트
Kubernetes 기반 인프라를 보유한 데이터 엔지니어링 조직에서 MLOps 플랫폼 도입 시, Kubeflow의 오픈소스 컴포넌트 조합(KFP + Elyra)으로 데이터 사이언티스트의 인프라 학습 곡선을 낮추고, SealedSecrets + Pre-commit Hook으로 자격증명 노출 위험을 제거하면서 Git 기반 선언형 관리를 구현할 수 있다.