업계에 있는 사람에게 모델을 학습시키는 것이 가장 쉬운 부분이고, 그것이 서비스되거나 배포되지 못한다면 아무 소용이 없다고 들었습니다.
API를 구축하는 것만 배워도 충분할까요, 아니면 MLOps에도 집중해야 할까요?
머신러닝 엔지니어나 딥러닝 엔지니어 역할에 MLOps는 얼마나 필수적인가요?
최근에 면접 본 머신러닝 엔지니어 포지션에서는 핵심적인 머신러닝 기술 외에도 DevOps와 풀스택에 대한 지식이 있는 지원자를 원하더라고요.
그렇기도 하고 아니기도 해요. 출처: 오랜 시간 동안 과학을 프로덕션으로 옮기는 엔지니어로 일한 경험에서 나온 이야기입니다.
제 생각에 제대로 운영되는 곳이라면, 맞아요, 대부분은 정말 말도 안 되게 요구하죠.
하지만 프로덕션까지 가고 제품을 유지하기 위해 무엇이 필요한지는 알아야 해요. 최소한 뭐가 합리적인지는 판단할 수 있어야 하니까요.
제가 봤던 최고의 사례는, 결과를 재현하면서 동시에 프로덕션 시스템을 구축하는 별도의 팀이 있었던 경우였습니다.
작동하는 프로덕션 시스템 외에도 여러 가지 이점이 있었죠. 어쨌든 재현 가능성은 좋은 과학의 핵심이니까요.
문제는 아무도 그런 데 돈을 쓰려고 하지 않는다는 거예요.
그래서 결국 전체 스택을 알아야 하나 봐요.
많은 소규모 회사에서는 1~2명의 머신러닝 엔지니어가 데이터 팀 전체인 경우가 많다고 생각해요.
저희 회사에도 두 명이 있고, 모든 걸 다 합니다.
데이터 엔지니어링 작업(파이프라인 구축, 데이터 변환/ELT, 테이블 설계 등),
머신러닝 작업(모델 구축, 테스트, 학습, 데이터 준비 등),
API 구축(Lambda/컨테이너/Step Functions),
백엔드 및 인프라 구성(예: MLflow 서버, 데이터 버전 관리, OpenMetadata 등),
배포 작업 및 BI(대시보드 및 커스텀 요청 처리)까지 전부 맡고 있어요.
사실 우리가 안 쓰는 건 GitHub 액션 워크플로우랑 프론트엔드 정도뿐이에요.
이해돼요. 팀에 엔지니어가 거의 없었고, 인터뷰어는 심지어 제가 자바스크립트를 아는지도 물어봤어요!
근데 기대하는 일에 비해 급여는 정말 형편없었어요.
누가 모델 구축이 간단하다고 하나요???
데이터에 대한 깊은 이해, 적절한 모델 선택 및 적용, 하이퍼파라미터 튜닝, 커스텀 손실 함수 작성, 견고한 파이프라인 설계 등이 필요합니다.
높은 정확도를 달성하고 모델 성능을 최적화하는 것은 광범위한 실험, 디버깅, 그리고 세밀한 개선을 요구하는 작업이지, 단순히 데이터를 가져와 .fit(input, target)으로 맞추는 문제가 아니에요.
게다가 MLOps는 데이터 과학의 범위를 훨씬 넘어섭니다.
MLflow, TensorBoard 같은 실험 추적 및 모델 모니터링 도구에 대한 숙련도는 물론이고,
Flask나 FastAPI 같은 프레임워크를 사용한 API 개발 지식도 필요하죠.
또한, 모델을 서버에 배포하고, CI/CD 파이프라인을 설정하며, 확장성을 보장하는 것도 중요한 업무입니다.
피처 파이프라인 구축, 예측 파이프라인 관리, 운영 중인 모델 모니터링(드리프트 감지 등), 재학습 워크플로우 운영도 전부 필수적인 과정이에요.
그리고 S3 같은 클라우드 기능이나 Docker, Kubernetes 같은 도구들에 대한 지식도 있어야 하죠.
많은 분들이 “모델을 만드는 것이 핵심”이라고 생각하지만, 실제 산업 현장에서는 말씀하신 것처럼 모델을 어떻게 운영 환경에서 안정적으로 배포하고 서비스할 수 있는가가 훨씬 더 어려운 부분이자, 더 큰 가치를 가지는 영역입니다. 모델을 학습시키는 일 자체는 점점 더 쉬워지고 있으며, 좋은 프레임워크와 사전학습 모델이 이미 풍부하게 제공되고 있기 때문입니다. 반면, 실제 서비스 환경에서는 모델이 지속적으로 작동해야 하고, 성능이 떨어지거나 데이터가 변하면 자동으로 다시 조정될 수 있어야 합니다. 결국 모델이 “사용되는지”가 핵심이며, MLOps는 바로 그 사용과 운영을 책임지는 영역입니다.
API 구현을 익히는 것만으로도 초반에는 충분히 실제 배포 경험을 쌓을 수 있습니다. 하지만 장기적으로 머신러닝 엔지니어 또는 딥러닝 엔지니어 역할을 목표로 한다면, MLOps에 대한 기본 이해와 경험은 사실상 필수에 가깝습니다. 모델을 학습시키는 역량은 더 이상 차별점이 되기 어렵고, 팀과 조직은 대부분 “운영 가능한 모델”, “지속적으로 개선되는 모델”, “문제가 생겼을 때 자동 회복되는 파이프라인”을 필요로 하기 때문입니다.
물론 모든 머신러닝 엔지니어가 완전한 DevOps나 인프라 수준의 전문성을 갖출 필요는 없습니다. 다만, 모델 개발자라면 다음 세 가지는 반드시 이해하고 있어야 합니다.
-
모델을 서비스 형태(API)로 배포하는 기본 과정
-
데이터 버전 관리와 모델 버전 관리의 필요성과 방법
-
운영 환경에서 모델 성능이 어떻게 관리·감독(Monitoring)되는지
이 정도만 갖추어도 실무에서 상당히 높은 경쟁력을 가지게 되며, 이는 MLOps 전체를 깊게 파고드는 것과는 또 다른 수준의 “필수 기본역량”이라고 볼 수 있습니다.
결론적으로, 학습 → 배포 → 모니터링 → 재학습 흐름을 이해하지 못한 ML 엔지니어는 실제 제품 개발에서 중요한 역할을 수행하기 어렵습니다. 반대로 이 흐름을 이해하고 있다면, 모델이 실제로 사용되는 전 과정에서 의미 있는 기여를 할 수 있습니다.