상세 컨텐츠

본문 제목

AI 영화 리뷰 감성 분석 서비스 아키텍처 설계

AI & Python Lab/Concept Notes

by 코딩은 내 여친 2026. 6. 29. 02:51

본문

반응형

이번에는 가상의 서비스로 AI 영화 리뷰 감성 분석 웹 서비스를 선정해보았다.

이 서비스는 사용자가 영화 리뷰를 입력하면 AI 모델이 해당 리뷰를 분석하여
긍정 리뷰인지, 부정 리뷰인지를 예측해주는 서비스이다.

지금까지 학습한 Docker, 추론 최적화, Streamlit, FastAPI를 활용한다고 가정하면
전체 아키텍처는 다음과 같이 구성할 수 있다.

1. 전체 서비스 구조

서비스는 크게 네 부분으로 나눌 수 있다.

  • 사용자 화면: Streamlit
  • API 서버: FastAPI
  • AI 모델 추론 서버: ONNX 또는 TensorRT 기반 모델
  • 배포 환경: Docker와 클라우드 서버

전체 흐름은 다음과 같다.

사용자
  ↓
Streamlit 웹 화면
  ↓
FastAPI 서버
  ↓
AI 모델 추론
  ↓
분석 결과 반환
  ↓
Streamlit 화면에 결과 출력

사용자는 Streamlit 화면에서 영화 리뷰를 입력한다.
입력된 리뷰는 FastAPI 서버로 전달되고, FastAPI는 AI 모델을 이용해 감성 분석을 수행한다.
이후 예측 결과를 다시 Streamlit 화면으로 보내 사용자에게 보여준다.

2. Streamlit 역할

Streamlit은 사용자가 직접 이용하는 웹 화면 역할을 한다.

사용자는 Streamlit 화면에서 영화 리뷰 문장을 입력하고,
분석 버튼을 누르면 결과를 확인할 수 있다.

Streamlit에서 담당하는 기능은 다음과 같다.

  • 리뷰 텍스트 입력
  • 분석 요청 버튼
  • FastAPI 서버로 요청 전송
  • 예측 결과 출력
  • 긍정/부정 결과 시각화

예를 들어 사용자가
“이 영화는 스토리가 좋고 배우 연기도 훌륭했다.”
라고 입력하면 Streamlit은 이 문장을 FastAPI 서버로 전달한다.

3. FastAPI 역할

FastAPI는 Streamlit과 AI 모델 사이에서 API 서버 역할을 한다.

FastAPI는 사용자의 요청을 받고, 입력 데이터를 검증한 뒤 모델 추론 함수로 전달한다.
그리고 모델이 예측한 결과를 JSON 형태로 다시 반환한다.

FastAPI에서 담당하는 기능은 다음과 같다.

  • /predict API 제공
  • 입력 데이터 검증
  • 모델 추론 요청 처리
  • 예측 결과 반환
  • 오류 발생 시 예외 처리

예시 응답 형태는 다음과 같다.

{
  "text": "이 영화는 정말 재미있었다.",
  "label": "긍정",
  "score": 0.92
}

이렇게 API 서버를 따로 분리하면 나중에 Streamlit뿐만 아니라 모바일 앱, 다른 웹 서비스에서도 같은 API를 사용할 수 있다.

4. AI 모델 추론 최적화

AI 모델은 학습이 끝난 후 그대로 사용하는 것이 아니라
ONNX 또는 TensorRT 형식으로 변환해 추론 속도를 높일 수 있다.

예를 들어 PyTorch로 학습한 감성 분석 모델을 ONNX로 변환하면
FastAPI 서버에서 더 가볍고 빠르게 실행할 수 있다.

추론 최적화의 목적은 다음과 같다.

  • 응답 속도 향상
  • 서버 자원 사용량 감소
  • 모델 배포 환경 호환성 향상
  • 동시에 여러 요청 처리 가능성 증가

만약 GPU 서버를 사용한다면 TensorRT를 활용해 더 빠른 추론도 가능하다.

5. Docker를 활용한 배포 구조

Docker는 서비스 실행 환경을 컨테이너로 묶어주는 역할을 한다.

Streamlit, FastAPI, 모델 추론 환경을 각각 Docker 이미지로 만들면
다른 컴퓨터나 클라우드 서버에서도 동일한 환경으로 실행할 수 있다.

예시 구조는 다음과 같다.

docker-compose.yml

streamlit-app 컨테이너
  - 사용자 웹 화면 실행

fastapi-server 컨테이너
  - API 서버 실행
  - 모델 로드 및 추론 처리

model 파일
  - ONNX 모델 저장

Docker를 사용하면 Python 버전, 라이브러리 버전, 실행 환경 차이로 생기는 문제를 줄일 수 있다.

6. 보안 요소

실제 서비스에서는 보안 설정도 필요하다.

가장 기본적으로 CORS 설정을 통해 허용된 프론트엔드 주소에서만 API 요청을 받을 수 있도록 제한할 수 있다.

예를 들어 Streamlit 주소만 FastAPI에 접근할 수 있도록 설정한다.

또한 다음과 같은 보안 요소도 고려할 수 있다.

  • CORS 설정
  • HTTPS 적용
  • API 요청 크기 제한
  • 악성 입력 필터링
  • 비정상적인 반복 요청 차단
  • 환경 변수로 API 키 관리

특히 사용자가 입력하는 텍스트 데이터는 서버로 전달되기 때문에
개인정보나 민감한 정보가 저장되지 않도록 주의해야 한다.

7. 멀티유저 요청 처리 방안

실제 서비스에서는 여러 사용자가 동시에 요청을 보낼 수 있다.

요청이 적을 때는 FastAPI가 바로 모델 추론을 처리해도 괜찮다.
하지만 사용자가 많아지면 요청이 밀리거나 서버가 느려질 수 있다.

이를 해결하기 위해 다음과 같은 방식을 사용할 수 있다.

  • 비동기 처리
  • 요청 대기 큐 사용
  • 여러 개의 API 서버 인스턴스 실행
  • 로드밸런서 사용
  • GPU 추론 서버 분리

예를 들어 사용자의 요청을 바로 처리하기 어렵다면
요청을 대기 큐에 넣고 순서대로 처리할 수 있다.

구조는 다음과 같다.

사용자 요청
  ↓
FastAPI 서버
  ↓
작업 큐
  ↓
모델 추론 Worker
  ↓
결과 반환

이렇게 하면 동시에 많은 요청이 들어와도 서버가 갑자기 멈추는 문제를 줄일 수 있다.

8. 클라우드 배포 구조

서비스를 외부에서 접속 가능하게 하려면 AWS, GCP 같은 클라우드에 배포할 수 있다.

예를 들어 AWS를 사용한다면 다음과 같이 구성할 수 있다.

사용자
  ↓
AWS Load Balancer
  ↓
Streamlit 서버
  ↓
FastAPI 서버
  ↓
AI 모델 추론 서버
  ↓
CloudWatch 로그 저장

GCP를 사용한다면 Cloud Run, Compute Engine, Vertex AI 등을 활용할 수 있다.

간단한 프로젝트라면 Docker 이미지를 만든 뒤
Cloud Run이나 EC2 같은 서버에 배포하는 방식이 적합하다.

서비스 규모가 커지면 다음과 같은 구조를 고려할 수 있다.

  • Load Balancer로 트래픽 분산
  • 컨테이너 기반 배포
  • 모델 서버 분리
  • 데이터베이스 연결
  • 로그 저장 시스템 구성
  • 자동 확장 설정

9. 모니터링 및 로깅 전략

서비스 배포 후에는 정상적으로 작동하는지 계속 확인해야 한다.

모니터링해야 할 항목은 다음과 같다.

  • API 응답 시간
  • 요청 성공률
  • 오류 발생률
  • 서버 CPU 사용량
  • 메모리 사용량
  • 모델 추론 시간
  • 사용자 요청 수

로그에는 다음과 같은 정보를 남길 수 있다.

  • 요청 시간
  • 입력 데이터 길이
  • 예측 결과
  • 추론 소요 시간
  • 오류 메시지

단, 사용자의 실제 입력 문장을 그대로 저장하면 개인정보 문제가 생길 수 있다.
따라서 필요한 경우 입력 원문은 저장하지 않고, 길이나 통계 정보만 저장하는 것이 좋다.

10. 전체 아키텍처 정리

AI 영화 리뷰 감성 분석 서비스의 전체 아키텍처는 다음과 같이 정리할 수 있다.

[사용자]
   ↓
[Streamlit 프론트엔드]
   ↓
[FastAPI 백엔드 API]
   ↓
[전처리 로직]
   ↓
[ONNX/TensorRT 모델 추론]
   ↓
[후처리 로직]
   ↓
[JSON 결과 반환]
   ↓
[Streamlit 결과 화면 출력]

배포 환경에서는 각 기능을 Docker 컨테이너로 분리하고,
클라우드 서버에서 실행할 수 있다.

정리

AI 웹/앱 서비스를 구현할 때는 단순히 모델만 만드는 것이 아니라
사용자 화면, API 서버, 모델 추론, 배포, 보안, 모니터링까지 함께 고려해야 한다.

이번 예시에서는 AI 영화 리뷰 감성 분석 서비스를 기준으로 전체 구조를 설계했다.

  • Streamlit은 사용자 화면을 담당한다.
  • FastAPI는 API 요청과 응답을 처리한다.
  • ONNX 또는 TensorRT는 모델 추론 속도를 최적화한다.
  • Docker는 실행 환경을 컨테이너로 묶어 배포를 쉽게 만든다.
  • CORS, HTTPS, 요청 제한 등을 통해 보안을 강화한다.
  • 비동기 처리와 대기 큐를 통해 여러 사용자 요청을 안정적으로 처리한다.
  • AWS 또는 GCP를 활용해 클라우드 환경에 배포할 수 있다.
  • 로그와 모니터링을 통해 서비스 상태를 지속적으로 확인한다.

결국 AI 서비스 아키텍처는 모델 성능뿐만 아니라
사용자가 안정적으로 서비스를 이용할 수 있는 전체 시스템 구조를 설계하는 과정이라고 볼 수 있다.

반응형

관련글 더보기