DevLog

엔지니어링 블로그를 한 곳에서 탐색하고, 최근 발행 흐름을 빠르게 파악할 수 있는 서비스 입니다.

Quick Links

  • Latest Feed
  • Engineering Directory

Support

  • 소개
  • 개인정보처리방침

Contribute

  • 원하는 블로그 추가 (준비 중)
  • Feedback

© 2026 DevLog Inc. All rights reserved.

본 사이트는 공개 RSS 피드를 통해 콘텐츠를 수집하며, 모든 콘텐츠의 저작권은 원저작자에게 있습니다.

Back to Feed
Read Original

Contents

Continue Reading

  • More from 토스
  • Related reads#MLOps
#AI

DS와 MLE가 함께 일하는 법

DS와 MLE가 함께 일하는 법
01

Summary

며칠씩 걸리던 모델 서빙 배포를 단 '하루' 만에 끝낸 토스뱅크의 협업 비결

노트북 코드에서 완벽한 추상화 계약과 모노레포로 나아간 DS와 MLE의 3단계 협업 진화기

토스뱅크 ML 서비스 팀이 데이터 사이언티스트(DS)와 머신러닝 엔지니어(MLE) 간의 협업 갈등을 해결하고 생산성을 극대화한 여정을 다룹니다. 주피터 노트북 파일 직접 전달의 한계에서 시작해 공통 패키지 추상화 설계, uv 기반 모노레포, 그리고 AI 코딩 스타일 통합 팩까지 단계별로 진화한 과정을 생생하게 풀어냅니다.

  • 01단순 Hand-off 방식에서 벗어나 추상 클래스를 기반으로 한 인터페이스 계약 중심 협업 구축
  • 02전처리-추론-후처리 전 단계를 규격화하여 로깅, 추적, 메트릭 수집을 공통 영역에서 자동 처리
  • 03모노레포와 Rust 기반 Python 패키지 도구 'uv'의 워크스페이스 기능을 이용해 빌드 타임 3~5배 최적화
  • 04AI 코딩 보조 도구 사용으로 인한 불일치 문제를 해결하는 컨벤션 도구 'pfmls-stylepack' 가드레일 도입

+RECOMMENDATION

ML 모델 이관 과정에서 환경 불일치와 모호한 R&R로 배포 주기가 지연되는 팀, 혹은 파편화된 AI 작성 코드로 인해 리뷰 피로도가 높은 MLOps 엔지니어 및 테크 리더에게 강력 추천합니다.

The Problem

데이터 사이언티스트(DS)가 개발한 모델을 머신러닝 엔지니어(MLE)가 서빙 환경으로 이관하는 과정에서 환경 차이와 불명확한 역할 분담으로 소통 비용이 증가했습니다. 또한, 각 모델의 실행 구조가 다르고 AI 기반 코드 작성 스타일마저 제각각이어서 일관된 유지보수가 어려웠습니다.

The Solution

전처리, 추론, 후처리 과정을 규격화한 공통 추상 클래스 기반의 패키지를 정의하여 협업을 코드 계약 형태로 전환하고, 'uv' 모노레포를 통해 이를 관리했습니다. 추가적으로 AI 도구 도입으로 다양해진 스타일의 격차를 좁히기 위해 'pfmls-stylepack' 규칙 모음을 적용하여 컨벤션을 자동 정렬했습니다.

The Result

이전 작업에 수일씩 소요되던 과정을 단 하루 만에 완료(첫 커밋부터 배포까지 당일 완료)할 수 있도록 단축시켰습니다. 더불어 패키지 매니저를 기존 'poetry'에서 'uv' 워크스페이스로 전면 전환하며 빌드 속도를 기존 대비 3~5배 개선했습니다.

Trade-off

공통 인터페이스를 고치면 이에 의존하는 모노레포 내 모든 모델이 영향을 받아 고도의 주의와 추가 영향도 평가가 요구됩니다. 또한 모델 수가 점차 누적되면서 장기적으로 저장소가 무거워져 지속적인 경량화 및 툴링 최적화 노력이 동반되어야 합니다.

03

Key Concepts

Concept · 01

추상 클래스 (Abstract Class)

상속받는 여러 하위 클래스가 특정 인터페이스나 핵심 구조적 기능을 반드시 상속 및 구현하도록 규칙을 정의해 두는 설계 기법입니다.

  • 'commons-ml-model' 라이브러리에 모델 전처리, 추론, 후처리 인터페이스를 약속으로 지정하는 데 적용했습니다.
  • DS가 세부 처리를 구현하면 이와 동시에 로깅 및 관측 메트릭 수집 기능이 공통 부모 단에서 매끄럽게 호출되도록 설계했습니다.
Concept · 02

모노레포 (Monorepo)

여러 라이브러리나 앱 등 독립적으로 구분되는 프로젝트 소스 코드를 단일 저장소 내에서 유기적으로 조율하며 개발하는 아키텍처 모델입니다.

  • 다양한 서비스의 ML 모델 패키지들을 여러 레포지토리로 쪼개지 않고 하나의 통합 환경 내에서 일괄 버전 관리하도록 구성했습니다.
  • 공통 규격과 여러 모델의 구성을 한 번의 PR로 편리하게 함께 수정하고 지속적 통합(CI) 가치를 고유화할 수 있게 되었습니다.
Concept · 03

uv 패키지 매니저

Rust 기반으로 개발되어 신속함을 무기로 앞세운 최신 Python 패키지 인스톨러 겸 대규모 워크스페이스 관리 도구입니다.

  • 점차 확장되던 토스뱅크 ML 모노레포 환경에서 배포 빌드 시 병목을 일으키던 'poetry'의 대체 수단으로 도입되었습니다.
  • 워크스페이스 캐싱과 고도화된 타겟 패키징 속도를 바탕으로 모노레포의 총합 배포 속도를 기존보다 최고 5배 수준으로 단축했습니다.
Continue reading · same source

토스More from 토스

View all posts from 토스
  • 1%가 겪은 버그 고쳐야할까요?

    HotfixProgressive DeliveryQA Platform
    1일 전
  • 토스증권 추천과 검색은 어떻게 진화하고 있을까?

    Vector DatabaseRAGEmbedding Model
    4일 전
  • LLM 서빙, 띄우는 것과 잘 띄우는 것 사이

    LLM ServingvLLMObservability
    1주 전
  • 전체 데이터를 브라우저에 두는 광고 대시보드 만들기

    State ManagementPerformance OptimizationAPI Design
    1주 전
  • 토스는 어떻게 광고 속에 게임을 넣었을까

    MRAIDWebViewJS Bridge
    1주 전

Related reads#MLOps

Explore #MLOps
여기어때

우리가 여기어때에서 다시 만난 이유

#MLOps1주 전
여기어때·LLM Agents

코드를 거의 타이핑하지 않고 3주 만에 DL모델 만들기

#MLOps2주 전
NAVER D2·vLLM

우리 팀만의 vLLM 플러그인 만들기 2편 - 모델 변환부터 배포까지 AI-native로 자동화하기

#MLOps2주 전
NAVER D2·vLLM

우리 팀만의 vLLM 플러그인 만들기 1편 - 검색 AI 모델 서빙 성능 극대화하기

#MLOps2주 전
NAVER D2·Kubernetes

MLXP : Kubernetes LLM Serving 최적화 기술 도입기

#MLOps2개월 전

Source

토스
토스
Engineering Blog

Published · August 3, 2026

Topics

MLOpsMonorepoPythonuvAbstraction