개발일지

📌 Spring MVC와 Python 서버를 왜 분리할까? – AI 시대의 백엔드 아키텍처 전략

makeviibe 2025. 8. 7. 11:52

안녕하세요, makeviibe 팀입니다.

최근 LLM, 챗봇, 크롤링 등 Python 기반 기능이 요구되는 프로젝트가 많아지면서, 저희도 기존의 Spring 서버와 별도로 Python 서버를 분리해 운영하는 경우가 많아졌습니다.

오늘은 왜 Spring MVC와 Python 서버를 나누는지, 그리고 실제 서비스에서는 어떤 흐름으로 동작하는지 소개드리려 합니다.


🧠 왜 분리하는 걸까?


🔧 구성 흐름: 역할은 이렇게 나뉩니다

✅ Spring MVC 서버가 하는 일

  • 로그인, 회원가입, 인증 처리
  • DB 저장, 사용자 데이터 관리
  • API 응답 통합 포맷 관리
  • 요청 전처리 및 결과 후처리
  • 로깅, 모니터링, 에러 핸들링 등 인프라 기능

🐍 Python 서버가 하는 일

  • LLM 응답 처리 (예: OpenAI, Claude, KoAlpaca 등)
  • 크롤링, 자연어 처리, 이미지 분석 등
  • 챗봇 대화 문맥 관리
  • 복잡한 연산, 외부 API 연동

💬 예시: AI 챗봇 구축 시 역할 분리

[사용자 시나리오]

사용자가 “서울 내일 날씨 알려줘”라고 챗봇에 질문함

[실제 처리 흐름]

  1. Web/App → Spring 서버에 질문 전달
  2. Spring 서버
    • 사용자 인증 확인
    • 대화 이력 저장
    • Python 서버로 질문 전송 (HTTP POST)
  3. Python 서버
    • 질문을 LLM에 전달
    • 결과 요약 및 문맥 처리
    • 응답 반환
  4. Spring 서버 → 클라이언트로 응답 전달

🧩 장점과 단점 정리


💡 makeviibe 팀의 운영 경험

저희는 실제 프로젝트에서 다음과 같이 구성했습니다

  • Spring 서버: Kotlin + JPA + JWT + MySQL
  • Python 서버: FastAPI + LLM API + OpenSearch
  • Redis: 챗봇 세션 캐싱
  • Pulumi 기반 인프라 자동화 (AWS EC2, ALB, RDS 구성)
  • 슬랙 알림 + Sentry 연동으로 실시간 에러 추적

이 구조를 통해, 프론트팀은 API만 신경 쓰고, 백엔드와 AI팀은 각자의 언어와 도구로 개발할 수 있어 생산성과 품질이 모두 향상되었습니다.


✍️ 마무리

LLM, AI, 크롤링 등 복잡한 기능이 요구되는 지금,

Spring과 Python 서버를 나누는 구조는 점점 보편적인 전략이 되고 있습니다.

makeviibe 팀은 백엔드 구조 설계부터 Python 서버 개발까지 모두 진행하며,

클라이언트가 원하는 결과를 가장 빠르게 낼 수 있도록 지원하고 있습니다.