버전 관리의 기초
- 버전 관리는 소프트웨어의 모든 구성요소(코드, 데이터, 환경 설정 등)의 변경 상황을 추적하고 관리하는 프로세스
- MLOps에서는 재연성, 안정성, 협업 효율성을 높이기 위해 필수적으로 사용
- MLOps에서는 4가지 주요 버전 관리 영역이 존재: 코드 버전, 데이터 버전, 모델 버전, 환경 및 구성 버전
코드 버전 관리
- Git: 소스코드 변경사항 추적을 위한 표준 도구
- 브랜치 생성, 병합, 이력 관리, 협업 기능 제공
- GitHub: Git 리포지토리 호스팅 서비스
- 이슈 트래킹, 풀 리퀘스트, CI/CD 인테그레이션 등 추가 기능 제공
- 코드 리뷰와 품질 관리에 도움
데이터 버전 관리
- DVC(Data Version Control): Git과 유사한 인터페이스를 제공하는 오픈소스 툴
- 대용량 데이터 관리, 데이터셋 버전 관리, 파이프라인 관리 기능
- Git과의 통합이 용이하고 확장성이 우수함
- Git LFS(Large File Storage): Git의 확장 도구
- 대용량 파일 포인터를 Git 저장소에 저장하고 실제 파일은 별도 서버에 보관
- Git 버전 관리 체계를 그대로 활용할 수 있어 편리함
- Delta Lake: 아파치 스파크 기반의 오픈소스 저장 레이어
- ACID 트랜잭션 지원으로 데이터 무결성 보장
- 타임 트래블 기능으로 이전 버전 데이터로 쉽게 롤백 가능
- 스트리밍 및 배치 데이터 처리 지원
서버 통신 기본 개념
- HTTP(Hypertext Transfer Protocol): 웹상에서 데이터 교환을 위한 프로토콜
- 텍스트, 이미지, 비디오 등 다양한 형태의 데이터 전송
- 요청-응답 프로세스로 동작
- HTTP 메소드: GET(조회), POST(생성), PUT(업데이트), DELETE(삭제)
- 상태 코드: 요청 처리 상태를 나타냄 (200: 성공, 404: 리소스 없음, 500: 서버 오류)
클라이언트-서버 아키텍처
- 클라이언트(웹브라우저, 모바일 앱)가 서버에 요청을 보내고 서버가 응답
- 클라이언트: HTTP를 통해 서버에 페이지 요청, 데이터 전송 등 수행
- 서버: 클라이언트의 요청을 처리하고 데이터를 제공하는 역할
REST API
- 웹 표준 기반으로 서버-클라이언트 간 통신을 구현하는 인터페이스
- HTTP 메소드(GET, POST, PUT, DELETE)를 활용해 리소스에 대한 CRUD 작업 수행
- 특징: Statelessness(상태 비저장성) - 서버가 클라이언트 상태를 유지하지 않음
- MLOps 활용 예시:
- 데이터 수집 및 처리: REST API를 통한 실시간 데이터 수집
- 모델 서빙: 훈련된 모델을 API로 제공하고 실시간 추천 등 구현
- 모델 파이프라인 동작: 워크플로우 자동화를 위한 API 활용