본문 바로가기
데이터 분석

AI 이미지 분석 서비스 아키텍처 설계

by hidden-state 2026. 6. 26.

이번 글에서는 가상의 AI 이미지 분석 서비스를 예시로 잡고 전체 아키텍처를 정리한다.

이 서비스는 사용자가 이미지를 업로드하면 AI 모델이 이미지를 분석하고 결과를 웹 화면에 보여주는 구조이다.

지금까지 학습한 Docker, 추론 최적화, Streamlit, FastAPI를 연결하면 하나의 AI 웹 서비스 흐름을 구성할 수 있다.


1. 서비스 예시

가상의 서비스 이름은 AI 이미지 불량 탐지 서비스로 설정한다.

사용자는 제품 이미지를 업로드하고 시스템은 이미지 속 제품이 정상인지 불량인지 예측한다.

결과 화면에는 예측 결과, 신뢰도, 처리 시간이 함께 표시된다.

  • 입력: 제품 이미지
  • 출력: 정상 또는 불량 예측 결과
  • 사용 기술: Streamlit, FastAPI, Docker, 최적화된 AI 모델

2. 전체 아키텍처 흐름

전체 시스템은 사용자가 접근하는 화면과 AI 모델이 실제로 동작하는 서버를 분리해서 구성할 수 있다.

사용자
  ↓
Streamlit 웹 화면
  ↓
FastAPI 서버
  ↓
전처리
  ↓
최적화된 AI 모델
  ↓
예측 결과 반환
  ↓
Streamlit 화면 출력

Streamlit은 사용자가 이미지를 업로드하고 결과를 확인하는 화면을 담당한다.

FastAPI는 요청을 받아 모델 추론을 수행하고 결과를 JSON 형태로 반환하는 API 서버 역할을 한다.


3. Streamlit의 역할

Streamlit은 사용자와 직접 만나는 프론트엔드 역할을 한다.

사용자는 웹 화면에서 이미지를 업로드하고 분석 버튼을 누른다.

Streamlit은 업로드된 이미지를 FastAPI 서버로 전송하고 응답으로 받은 결과를 화면에 출력한다.

  • 이미지 업로드 UI 제공
  • FastAPI 서버로 요청 전송
  • 예측 결과와 신뢰도 표시
  • 처리 시간 시각화

Streamlit은 빠르게 데모 화면을 만들기 좋기 때문에 AI 모델 결과를 확인하는 용도로 적합하다.


4. FastAPI의 역할

FastAPI는 AI 모델 추론을 담당하는 백엔드 API 서버이다.

Streamlit에서 이미지가 전달되면 FastAPI는 입력 파일을 검증하고 모델에 맞게 전처리한 뒤 추론 결과를 반환한다.

  • 이미지 업로드 요청 처리
  • 입력값 검증
  • 이미지 리사이징과 정규화
  • AI 모델 추론 실행
  • 결과를 JSON 형태로 반환

FastAPI 서버는 모델을 요청마다 새로 불러오지 않고 서버 시작 시 한 번만 로드한 뒤 재사용하는 구조가 좋다.


5. 모델 최적화와 추론 속도 개선

AI 모델을 실제 서비스에 사용하려면 정확도뿐만 아니라 추론 속도도 중요하다.

이미지 한 장을 처리하는 시간이 너무 길면 사용자는 서비스가 느리다고 느낄 수 있다.

따라서 학습된 모델을 ONNX나 TensorRT 형태로 변환하여 추론 속도를 개선할 수 있다.

  • ONNX: 다양한 환경에서 모델을 실행하기 위한 표준 포맷
  • TensorRT: NVIDIA GPU 환경에서 추론 속도를 높이기 위한 최적화 엔진
  • 양자화: 모델 크기를 줄이고 연산량을 줄이는 최적화 방법

예를 들어 PyTorch로 학습한 모델을 ONNX로 변환한 뒤 TensorRT로 최적화하면 GPU 서버에서 더 빠르게 추론할 수 있다.


6. Docker를 이용한 배포 구조

Docker는 Streamlit과 FastAPI 서버를 각각 독립된 컨테이너로 실행하는 데 사용할 수 있다.

컨테이너로 실행하면 개발 환경과 배포 환경의 차이를 줄일 수 있다.

docker-compose.yml

streamlit-app
  - 사용자 화면 제공

fastapi-server
  - AI 모델 추론 API 제공

서비스가 커지면 Redis나 데이터베이스 컨테이너를 함께 구성할 수도 있다.

이 경우 Docker Compose를 사용하면 여러 컨테이너를 하나의 설정 파일로 관리할 수 있다.


7. 보안 요소

AI 웹 서비스에서도 기본적인 보안 설정이 필요하다.

Streamlit과 FastAPI가 서로 다른 주소에서 동작한다면 CORS 설정이 필요할 수 있다.

FastAPI에서는 허용할 도메인을 명시하여 원하지 않는 외부 요청을 제한할 수 있다.

  • CORS 설정
  • 파일 확장자 검사
  • 업로드 파일 크기 제한
  • API 요청 제한

특히 이미지 업로드 서비스에서는 너무 큰 파일이나 허용되지 않은 파일 형식이 들어오지 않도록 검사하는 과정이 필요하다.


8. 멀티유저 요청 처리

여러 사용자가 동시에 이미지를 업로드하면 FastAPI 서버에 많은 추론 요청이 들어올 수 있다.

이때 모든 요청을 즉시 처리하면 서버 자원이 부족해지거나 응답 시간이 길어질 수 있다.

이를 해결하기 위해 비동기 처리나 대기 큐를 사용할 수 있다.

  • FastAPI 비동기 엔드포인트 사용
  • Redis Queue 또는 Celery를 이용한 작업 큐 구성
  • 요청 순서대로 추론 작업 처리
  • 사용자에게 처리 상태 반환

이미지 분석 시간이 긴 경우에는 요청을 큐에 넣고 처리가 끝난 뒤 결과를 조회하는 구조가 더 안정적이다.


9. 클라우드 배포 구조

클라우드 환경에서는 Streamlit과 FastAPI를 컨테이너 이미지로 빌드한 뒤 AWS나 GCP에 배포할 수 있다.

예를 들어 AWS에서는 다음과 같은 구성이 가능하다.

  • EC2 또는 ECS: 컨테이너 실행
  • S3: 업로드 이미지 저장
  • CloudWatch: 로그와 모니터링
  • Load Balancer: 요청 분산

GCP를 사용한다면 Cloud Run, Cloud Storage, Cloud Logging 등을 활용할 수 있다.

작은 규모의 서비스라면 Cloud Run처럼 컨테이너 기반으로 간단히 배포할 수 있는 환경이 적합하다.


10. 모니터링과 로깅

서비스를 운영할 때는 모델이 정상적으로 동작하는지 계속 확인해야 한다.

단순히 서버가 켜져 있는지만 보는 것이 아니라 요청 수, 응답 시간, 오류 발생률, 모델 예측 결과 분포도 함께 확인하는 것이 좋다.

  • API 요청 로그
  • 추론 시간 기록
  • 에러 로그 저장
  • 모델 예측 결과 분포 확인
  • 서버 CPU와 GPU 사용량 모니터링

예를 들어 특정 시간대에 추론 시간이 급격히 증가한다면 서버 자원 부족이나 요청 증가를 의심할 수 있다.

또한 모델이 갑자기 한 클래스만 계속 예측한다면 입력 데이터나 모델 상태를 점검해야 한다.


전체 구조 요약

구성 요소 역할
Streamlit 사용자 화면 구성과 이미지 업로드
FastAPI AI 모델 추론 API 제공
AI 모델 이미지 분석과 예측 수행
ONNX / TensorRT 추론 속도 최적화
Docker 실행 환경 컨테이너화
Redis Queue / Celery 멀티유저 요청 대기열 처리
Cloud 서비스 배포와 확장
Logging / Monitoring 운영 상태 확인과 오류 추적

 


정리

AI 이미지 분석 서비스는 사용자 화면, API 서버, AI 모델, 배포 환경이 함께 구성되어야 한다.

Streamlit은 사용자가 이미지를 업로드하고 결과를 확인하는 화면을 담당한다. FastAPI는 모델 추론 API를 제공하고 AI 모델은 최적화된 형태로 빠르게 예측을 수행한다.

Docker를 사용하면 각 구성 요소를 독립된 컨테이너로 실행할 수 있으며 클라우드 환경에서는 이를 기반으로 배포와 확장을 구성할 수 있다.

서비스가 실제로 운영되기 위해서는 보안 설정, 멀티유저 요청 처리, 모니터링과 로깅 전략까지 함께 고려해야 한다.