안녕하세요, makeviibe 팀입니다.
최근 LLM, 챗봇, 크롤링 등 Python 기반 기능이 요구되는 프로젝트가 많아지면서, 저희도 기존의 Spring 서버와 별도로 Python 서버를 분리해 운영하는 경우가 많아졌습니다.
오늘은 왜 Spring MVC와 Python 서버를 나누는지, 그리고 실제 서비스에서는 어떤 흐름으로 동작하는지 소개드리려 합니다.
🧠 왜 분리하는 걸까?

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

✅ Spring MVC 서버가 하는 일
- 로그인, 회원가입, 인증 처리
- DB 저장, 사용자 데이터 관리
- API 응답 통합 포맷 관리
- 요청 전처리 및 결과 후처리
- 로깅, 모니터링, 에러 핸들링 등 인프라 기능
🐍 Python 서버가 하는 일
- LLM 응답 처리 (예: OpenAI, Claude, KoAlpaca 등)
- 크롤링, 자연어 처리, 이미지 분석 등
- 챗봇 대화 문맥 관리
- 복잡한 연산, 외부 API 연동
💬 예시: AI 챗봇 구축 시 역할 분리
[사용자 시나리오]
사용자가 “서울 내일 날씨 알려줘”라고 챗봇에 질문함
[실제 처리 흐름]
- Web/App → Spring 서버에 질문 전달
- Spring 서버
- 사용자 인증 확인
- 대화 이력 저장
- Python 서버로 질문 전송 (HTTP POST)
- Python 서버
- 질문을 LLM에 전달
- 결과 요약 및 문맥 처리
- 응답 반환
- 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 서버 개발까지 모두 진행하며,
클라이언트가 원하는 결과를 가장 빠르게 낼 수 있도록 지원하고 있습니다.
'개발일지' 카테고리의 다른 글
| [2편] DB 마이그레이션, 안전하게 하려면? (8) | 2025.08.14 |
|---|---|
| [1편] DB 데이터 이전(Migration) 전략 (10) | 2025.08.13 |
| 📊 A/B 테스트, 정말 필요한가요? (5) | 2025.07.31 |
| 🛠 [3편] 소규모 프로젝트에서 꼭 필요한 로그 시스템 구성법 (2) | 2025.07.30 |
| 📊 [2편] 기능 추가보다 중요한 건 ‘데이터’입니다 – 사용자 로그의 진짜 활용법 (1) | 2025.07.30 |