MLOps 구현에 필요한 핵심 인프라 기술들을 이론과 실습을 통해 학습했다.
스토리지와 컴퓨팅
- 스토리지: 데이터의 안정성, 접근성, 확장성을 보장하는 시스템
- 컴퓨팅: 데이터 처리, 모델 트레이닝, 애플리케이션에 필요한 컴퓨팅 파워 제공
- 확장 가능성, 빠른 처리, 효율성이 중요한 요소
환경 관리 도구
- 프로젝트별 종속성과 설정을 관리하는 도구
- 다양한 프로젝트 간 종속성 충돌 방지, 일관된 개발 환경 보장
- 주요 기능: 환경 격리, 환경 재현, 종속성 및 버전 호환성 관리
- 실습 도구: Conda, Virtual ENV (소규모 프로젝트나 개인 포트폴리오에 적합)
컨테이너
- 도커(Docker): 애플리케이션 패키징 및 배포를 위한 플랫폼
- VM과 달리 경량화되고 독립적이며 이식성이 뛰어남
- 구현 과정: Dockerfile 작성 → 빌드(이미지 생성) → 실행(컨테이너 생성)
- 주의점: 빌드 명령어 끝에 점(.) 필수
오케스트레이션
- 여러 컨테이너를 조정하고 관리하는 시스템
- Kubernetes: 고가용성, 확장성, 신뢰성 제공
- 주요 개념: Pod, Service, Deployment, ReplicaSet
- 실습: Deployment를 통한 자동 복구 기능 구현
워크플로우 관리
- 머신러닝 프로젝트의 다양한 단계와 작업을 체계적으로 조율하는 프로세스
- Airflow: DAG(Directed Acyclic Graph) 기반 워크플로우 관리
- 실습: 피처 엔지니어링, 모델 학습(Random Forest, Gradient Boosting), 모델 선택 과정 자동화
CI/CD
- 코드 변경사항을 빠르게 통합하고 배포하는 솔루션
- 워크플로우 관리와는 다른 개념
- 실습: Jenkins를 이용한 파이프라인 구성
서버 통신 이론
- HTTP: 클라이언트와 서버 간의 요청-응답 기반 통신 프로토콜
- REST API: HTTP 메소드(GET, POST, PUT, DELETE) 기반 자원 표현 상태 전달 인터페이스
버전 관리
- 코드, 데이터, 환경 설정, 모델 등 모든 구성 요소의 변경 사항 추적 및 관리
- 프로젝트의 재현성, 안정성, 협업 효율성 향상에 중요
- MLOps 플랫폼들은 자체적인 버전 관리 기능 제공
프로젝트 기간을 포함해 약 두 달간 MLOps 전반을 학습했다. 실제로 다뤄보니 예상보다 구조가 복잡하고 난이도가 높았다. 데이터 파이프라인, 모델 학습 및 배포 자동화, CI/CD, 모니터링 등 각 구성 요소가 긴밀하게 연결되어 있으며, 전통적인 개발과는 다른 접근이 필요했다.
이번 기간 동안 프로젝트 실습과 강의를 병행하면서 핵심 개념을 체계적으로 익히려 노력했다. 그러나 현재의 이해 수준은 약 80% 정도로, 아직 완전한 숙련 단계에는 도달하지 못했다고 판단한다.
향후 목표는 각 구성 요소 간의 연계 구조를 더 명확히 파악하고, 실무 환경에서 재현 가능한 수준으로 MLOps 파이프라인을 구축할 수 있는 역량을 확보하는 것이다. 아이고 할 거 많다...