AI 시스템 구축: 배포 방식
ㅁ 배포 방식
ㅇ 정의:
AI 모델을 실제 서비스 환경에 배포하여 외부 애플리케이션이나 사용자와 상호작용할 수 있도록 하는 방법론과 기술.
ㅇ 특징:
– 모델을 외부에서 호출 가능하도록 API나 서비스 형태로 제공
– 성능, 확장성, 지연시간, 유지보수 용이성에 따라 다양한 배포 방식 존재
– 클라우드, 온프레미스, 하이브리드 환경 모두 적용 가능
ㅇ 적합한 경우:
– 모델 예측 결과를 실시간 또는 배치 형태로 제공해야 하는 경우
– 다양한 클라이언트(웹/모바일/IoT)에서 모델 호출이 필요한 경우
ㅇ 시험 함정:
– 배포 방식의 특징을 혼동 (예: REST API와 gRPC의 차이)
– 서버리스와 컨테이너 기반 배포 개념 혼동
ㅇ 시험 대비 “패턴 보기” 예시:
O: “gRPC는 바이너리 직렬화를 통해 빠른 통신을 지원한다.”
X: “REST API는 항상 gRPC보다 빠르다.”
================================
1. REST API
ㅇ 정의:
HTTP 프로토콜 기반으로 자원(Resource)을 URL로 표현하고, 표준 메서드(GET, POST, PUT, DELETE)를 사용하여 모델 서비스를 호출하는 방식.
ㅇ 특징:
– 언어와 플랫폼에 독립적
– JSON, XML 등 다양한 포맷 지원
– 브라우저, 모바일 앱 등에서 쉽게 호출 가능
ㅇ 적합한 경우:
– 클라이언트 다양성이 높은 환경
– 요청-응답 구조가 명확한 서비스
ㅇ 시험 함정:
– REST API는 항상 실시간 처리에 최적이라는 오해
– 상태를 유지하는 방식으로 잘못 이해
ㅇ 시험 대비 “패턴 보기” 예시:
O: “REST API는 HTTP 기반으로 동작하며, JSON 응답을 주고받을 수 있다.”
X: “REST API는 TCP/IP를 사용하지 않는다.”
================================
2. gRPC
ㅇ 정의:
구글이 개발한 고성능 원격 프로시저 호출(RPC) 프레임워크로, Protocol Buffers를 직렬화 포맷으로 사용.
ㅇ 특징:
– 바이너리 데이터 전송으로 속도와 효율성 높음
– 양방향 스트리밍 지원
– 강력한 타입 검사
ㅇ 적합한 경우:
– 마이크로서비스 간 통신
– 대규모 데이터 전송 및 저지연 요구 환경
ㅇ 시험 함정:
– gRPC는 HTTP/1.1만 지원한다고 착각
– JSON만 사용 가능하다고 오해
ㅇ 시험 대비 “패턴 보기” 예시:
O: “gRPC는 HTTP/2 기반으로 동작하며, 양방향 스트리밍을 지원한다.”
X: “gRPC는 텍스트 기반 직렬화를 사용한다.”
================================
3. 서버리스
ㅇ 정의:
서버 인프라를 직접 관리하지 않고, 클라우드 제공자가 실행 환경을 자동으로 관리하는 방식.
ㅇ 특징:
– 사용량 기반 과금
– 자동 확장
– 인프라 관리 부담 감소
ㅇ 적합한 경우:
– 간헐적 요청 처리
– 빠른 개발 및 배포 필요
ㅇ 시험 함정:
– 서버리스는 서버가 없다는 의미로 오해
– 장기 실행 작업에 적합하다고 착각
ㅇ 시험 대비 “패턴 보기” 예시:
O: “서버리스는 이벤트 기반으로 함수가 실행된다.”
X: “서버리스는 항상 지속적으로 실행된다.”
================================
4. BentoML
ㅇ 정의:
머신러닝 모델을 쉽게 패키징, 배포, 관리할 수 있는 오픈소스 프레임워크.
ㅇ 특징:
– 다양한 프레임워크(PyTorch, TensorFlow 등) 지원
– REST API/gRPC 엔드포인트 자동 생성
– 컨테이너 이미지로 배포 가능
ㅇ 적합한 경우:
– 빠른 프로토타입 배포
– 표준화된 모델 배포 파이프라인 구축
ㅇ 시험 함정:
– BentoML이 특정 ML 프레임워크 전용이라고 오해
– API 서버를 직접 구현해야 한다고 착각
ㅇ 시험 대비 “패턴 보기” 예시:
O: “BentoML은 모델을 컨테이너 이미지로 패키징하여 배포할 수 있다.”
X: “BentoML은 TensorFlow 모델만 지원한다.”
================================
5. TorchServe
ㅇ 정의:
PyTorch 모델을 위한 배포 및 서빙 도구로, AWS와 Facebook이 공동 개발.
ㅇ 특징:
– REST API 및 gRPC 지원
– 다중 모델 서빙 가능
– 모델 버전 관리 지원
ㅇ 적합한 경우:
– PyTorch 모델 배포
– 대규모 트래픽 환경에서의 모델 서빙
ㅇ 시험 함정:
– TorchServe는 PyTorch 외 모델도 지원한다고 착각
– gRPC 미지원으로 오해
ㅇ 시험 대비 “패턴 보기” 예시:
O: “TorchServe는 PyTorch 모델을 REST API로 서빙할 수 있다.”
X: “TorchServe는 gRPC를 지원하지 않는다.”
================================
6. Truss
ㅇ 정의:
머신러닝 모델을 표준화된 API 서버 형태로 패키징하여 배포할 수 있게 하는 도구.
ㅇ 특징:
– 로컬 및 클라우드 환경 모두 지원
– 모델 의존성 자동 관리
– Docker 기반 배포 가능
ㅇ 적합한 경우:
– 다양한 환경에서 동일한 배포 형태 유지 필요
– 재현성 높은 배포 요구
ㅇ 시험 함정:
– Truss가 특정 클라우드 전용이라고 오해
– 모델 의존성을 수동으로 설정해야 한다고 착각
ㅇ 시험 대비 “패턴 보기” 예시:
O: “Truss는 모델과 의존성을 함께 패키징하여 배포할 수 있다.”
X: “Truss는 로컬 환경에서는 사용할 수 없다.”
================================
7. Cog
ㅇ 정의:
머신러닝 모델을 Docker 컨테이너로 패키징하여 재현 가능한 환경에서 실행할 수 있게 하는 오픈소스 도구.
ㅇ 특징:
– 표준화된 Docker 환경 제공
– CLI 기반 모델 실행
– 재현성 보장
ㅇ 적합한 경우:
– 모델 실행 환경을 정확히 재현해야 하는 경우
– 협업 프로젝트에서 환경 차이 최소화
ㅇ 시험 함정:
– Cog가 클라우드에서만 동작한다고 착각
– Docker 없이 실행 가능하다고 오해
ㅇ 시험 대비 “패턴 보기” 예시:
O: “Cog는 모델을 Docker 컨테이너로 패키징하여 재현 가능한 환경을 만든다.”
X: “Cog는 Docker 없이도 동일한 재현성을 보장한다.”
ㅁ 추가 학습 내용
[학습 정리]
1. REST API vs gRPC
– 성능 차이:
REST API는 HTTP/1.1 기반으로 텍스트(JSON) 전송이 일반적이며 직렬화·역직렬화 오버헤드가 큼. gRPC는 HTTP/2 기반, 바이너리 프로토콜(Protocol Buffers) 사용으로 더 빠르고 효율적.
– 직렬화 방식:
REST API → JSON, XML 등 텍스트 기반
gRPC → Protocol Buffers(바이너리)
– 스트리밍 지원 여부:
REST API → 일반적으로 요청-응답 단일 패턴
gRPC → 서버 스트리밍, 클라이언트 스트리밍, 양방향 스트리밍 모두 지원
2. 서버리스(Serverless) 제약사항
– Cold Start 문제: 요청 시 함수 인스턴스가 처음 로드될 때 지연 발생
– 최대 실행 시간 제한: 서비스별로 몇 초~몇 분 제한 존재
– 상태 관리 한계: 함수 실행 간 상태를 유지하지 못해 외부 스토리지 필요
3. 모델 배포 자동화 도구 비교 포인트
– BentoML, TorchServe, Truss, Cog 공통점: 모델 배포 자동화 지원
– 비교 항목:
지원 프레임워크 범위 (PyTorch, TensorFlow 등)
배포 대상 환경 (로컬, 클라우드, 컨테이너, 서버리스 등)
의존성 관리 방식 (패키징, Docker 이미지, 환경 파일 등)
4. 배포 방식 차이
– 컨테이너 기반 배포: 이미지 빌드 후 어디서나 실행 가능, 환경 일관성 보장, 지속 실행 가능
– 서버리스 배포: 이벤트 기반 실행, 자동 확장, 사용량 기반 과금, 실행 시간·환경 제약 존재
5. 클라우드 벤더별 서버리스 AI 서비스 특징
– AWS Lambda: 다양한 언어 지원, 최대 실행 시간 15분, AWS 생태계와 밀접 연동
– Google Cloud Functions: GCP 서비스와 통합 용이, 단일 함수 단위 배포, 실행 시간 제한 존재
– Azure Functions: Azure 서비스와 통합, 이벤트 기반 트리거 다양, 소비 요금제와 전용 요금제 제공
[시험 대비 체크리스트]
– REST API와 gRPC의 성능, 직렬화 방식, 스트리밍 지원 차이를 구체적으로 설명할 수 있는가?
– 서버리스의 Cold Start, 최대 실행 시간 제한, 상태 관리 한계의 의미와 영향도를 이해했는가?
– BentoML, TorchServe, Truss, Cog의 지원 프레임워크, 배포 환경, 의존성 관리 방식 차이를 표로 정리했는가?
– 컨테이너 기반 배포와 서버리스 배포의 장단점을 비교할 수 있는가?
– AWS Lambda, Google Cloud Functions, Azure Functions의 특징과 차이를 설명할 수 있는가?