Tech Stack
AI
java
mysql
springboot
python
📋 다봄[디지털 느린우채통]
🎯 프로젝트 개요
•
여행 전 일정 기획부터 여행 후 추억 기록과 정산까지 한 번에 관리할 수 있는 협업 중심 여행 서비스
•
여행 전 (Plan): WebSocket을 활용하여 친구들과 실시간으로 여행 장소를 동기화하며 계획을 수립하고, 한국관광공사 및 카카오맵 API를 연동해 방대한 장소 데이터를 제공합니다.
•
여행 후 (Record): 여행 후기를 작성하면 감성적인 AI 그림일기를 자동으로 생성합니다. 결제 금액만 입력하면 간편 정산 기능을 제공합니다.
👤 내 역할
•
역할: Backend Developer (AI Service & Core Logic)
•
담당 파트:
•
AI 그림일기 생성 (FastAPI, Gemini API):
•
Gemini API를 활용한 프롬프트 엔지니어링으로 사용자 후기를 분석하여 일러스트 스타일의 이미지 생성.
•
텍스트의 감정을 분석하여 어울리는 손글씨체(Font)로 변환하는 로직 구현.
•
REST API 개발 (Spring Boot):
•
게시글, 댓글 등 커뮤니티 기능 및 여행 기록 관리를 위한 CRUD API 설계 및 구현.
🛠️ 기술 스택
Frontend
•
React
Backend
•
Java, Spring Boot
•
JPA / MyBatis, MySQL
AI & Serving
•
Python, FastAPI (AI 모델 서빙)
•
Google Gemini API
⚠️ 트러블 슈팅
문제 1: 서로 다른 언어 간 데이터 통신 문제 (Java ↔ Python)
원인: Spring Boot(메인 서버)에서 FastAPI(AI 서버)로 대용량 이미지 데이터나 프롬프트를 전송할 때 지연 시간 발생 및 데이터 포맷 불일치.
해결: HTTP 통신(RestTemplate/WebClient)을 비동기로 처리하고, JSON 데이터 규격을 명확히 정의하여 통신 효율 최적화.
결과: 안정적인 AI 이미지 생성 및 응답 속도 개선.
문제 2: On-premise AI 모델 구축의 하드웨어 한계 및 결과물 품질 저하
원인:초기 기획 단계에서 실시간성보다 정확도가 중요하다고 판단함. Stable Diffusion 도입을 결정했으나 고사양 GPU가 요구되어 팀원 간 개발 환경 격차 발생 및 서버 구축 난항. 또한, LoRA 파인튜닝 모델의 결과물이 기획 의도에 미치지 못함.
해결:
하드웨어 의존성이 없는 클라우드 기반 Gemini API로 전환하고, 모델 튜닝 대신 정교한 프롬프트 엔지니어링을 적용하여 스타일 변환 최적화.
결과:서버 구축 비용 절감 및 개발 환경의 제약 해소.
예상치 못했던 실시간성 확보로 사용자 경험(UX) 대폭 개선.
확보된 리소스를 활용해 '느린 우체통' 등 추가 기능 구현 성공.
📚 배운 점
•
기술적 의사결정 능력: 프로젝트의 제약 사항(하드웨어, 시간)을 고려하여 최적의 기술(SaaS API)로 전환하는 유연한 사고의 중요성을 배움.
•
Prompt Engineering: LLM을 활용해 원하는 결과물을 얻어내는 프롬프트 최적화 역량 확보.
📊 성과
✅ 텍스트 후기를 1분 내에 고품질 그림일기로 변환하는 자동화 파이프라인 구축
✅ 느린 우체통 기능을 통해 사용자 리텐션(재방문) 유도 요소 마련
📸 스크린샷
[이미지]