Besttech에서 첫 번째 주요 ML 파이프라인을 구축하면서 우리가 깨뜨린 5가지 (그리고 이를 고친 방법)

발행: (2026년 1월 5일 오후 02:36 GMT+9)
7 min read
원문: Dev.to

Source: Dev.to

“Hello World” 수준의 머신러닝은 쉽습니다. Scikit‑Learn을 임포트하고, 깨끗한 CSV에 모델을 학습시킨 뒤, 멋진 정확도 점수를 얻으면 됩니다.

하지만 프로덕션 머신러닝은 악몽과 같습니다.

Besttech에서는 최근 클라이언트의 예측‑분석 모델을 혼란스러운 로컬 Jupyter 노트북 모음에서 완전 자동화된 클라우드‑네이티브 파이프라인으로 옮겼습니다. 우리는 모든 과정을 설계했다고 생각했습니다. MLOps를 완전히 이해하고 있다고 생각했습니다.

그것은 오산이었습니다. 우리는 큰 문제들을 일으켰습니다. 그 과정에서 우리는 이제 테라바이트 규모의 데이터를 전혀 문제 없이 처리하는 견고한 엔진을 구축했습니다.

We Broke: The Concept of Time (Data Leakage) ⏳

Failure

초기 모델은 학습 단계에서 98 %라는 놀라운 성능을 보였습니다. 하지만 실제 환경에 배포했을 때 정확도가 60 %로 급락했습니다.

Root Cause

우리는 예측 시점에 존재하지 않을 피처(예: 월 초 이탈 모델에 사용된 “총 월 지출”)를 사용해 모델을 학습시켰습니다. 모델이 미래를 미리 보고 “속임수”를 부린 것이었습니다.

Fix

Feast를 이용해 모든 피처에 타임스탬프를 부여하는 엄격한 Feature Store를 구현했습니다. 학습 데이터를 만들 때 시스템이 시점‑정확한 조인을 수행해, 모델이 해당 과거 시점에 존재했던 데이터만 보도록 보장합니다.

We Broke: The Cloud Bill (Resource Hoarding) 💸

Failure

전체 파이프라인(추출, 정제, 학습, 배포)을 위해 거대한 GPU 인스턴스를 가동했습니다.

Root Cause

파이프라인의 90 %는 단순 데이터 정제(CPU 작업)였음에도 불구하고, 우리는 내내 비싼 GPU 비용을 지불하고 있었습니다.

Fix

Kubernetes 컨테이너를 이용해 단계별로 분리했습니다:

  1. ETL – 저렴하고 메모리가 큰 CPU 노드에서 실행.
  2. Training – GPU 노드를 가동해 모델을 학습하고 즉시 종료.
  3. Inference – 가벼운 서버리스 함수에서 실행.

결과: 컴퓨팅 비용이 약 65 % 절감되었습니다.

We Broke: Python Dependencies (The “It Works on My Machine” Classic) 🐍

Failure

데이터 과학자는 pandas 1.3.0을 사용했지만, 프로덕션 서버에는 pandas 1.1.5가 설치돼 있었습니다. 함수 시그니처가 변경돼 파이프라인이 조용히 충돌했습니다.

Fix

수동 환경 설정을 금지하고 엄격한 Docker화를 도입했습니다. 이제 각 파이프라인 단계는 고정된 requirements.txt를 가진 자체 Docker 컨테이너에서 실행됩니다. 컨테이너가 빌드되면 코드가 실행됩니다—그게 전부입니다.

We Broke: Trust (Silent Failures) 🤫

Failure

소스 데이터 피드가 깨져 특정 컬럼에 대해 모두 0값을 전송하기 시작했습니다. 파이프라인은 충돌하지 않았고, 0값을 그대로 받아들여 쓰레기 모델을 학습·배포했습니다. 클라이언트는 의미 없는 예측을 받았습니다.

Root Cause

테스트가 코드 오류에는 집중했지만 데이터 오류에는 집중하지 않았습니다.

Fix

인제션 레이어에 Great Expectations를 활용한 Data Expectations를 도입했습니다. 예시:

  • age 컬럼이 18~100 사이인가?
  • transaction_value가 음수가 아닌가?
  • Null 비율이 5 % 미만인가?

데이터가 어느 규칙이라도 위반하면 파이프라인이 중단되고 Besttech Slack 채널에 알림이 전송되어 피해가 발생하기 전에 차단됩니다.

We Broke: The Feedback Loop (Model Drift) 📉

Failure

배포 후 3개월이 지나자 클라이언트가 예측 정확도가 매주 점점 나빠진다고 보고했습니다.

Root Cause

시장이 변했으며, 정적인 모델이 현재 데이터 분포와 맞지 않게 되었습니다.

Fix

재학습 루프를 자동화했습니다. 이제 Evidently AI와 같은 도구로 드리프트 메트릭을 모니터링합니다. 실시간 데이터의 통계적 분포가 학습 데이터와 일정 임계값을 넘어 차이가 나면 새로운 학습이 자동으로 트리거됩니다. 파이프라인이 이제 자체 복구됩니다.

Takeaway

모델을 만드는 것은 과학입니다. 파이프라인을 만드는 것은 엔지니어링입니다.

Besttech은 그 간극을 메웁니다. 우리는 단순히 노트북을 건네주고 행운을 빌어주는 것이 아니라, 여러분의 인텔리전스를 지속적으로 운영하게 하는 복잡하고 지저분한 인프라를 구축합니다.

Back to Blog

관련 글

더 보기 »

RGB LED 사이드퀘스트 💡

markdown !Jennifer Davis https://media2.dev.to/dynamic/image/width=50,height=50,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%...

Mendex: 내가 만드는 이유

소개 안녕하세요 여러분. 오늘은 제가 누구인지, 무엇을 만들고 있는지, 그리고 그 이유를 공유하고 싶습니다. 초기 경력과 번아웃 저는 개발자로서 17년 동안 경력을 시작했습니다.