프로젝트 배경
현대인들은 매일 같은 경로를 걸으며 플레이리스트에 저장된 익숙한 노래만 반복해서 듣는 경향이 있습니다. 새로운 음악을 발견하고 싶지만, 추천 알고리즘은 비슷한 장르만 제안하고, 커뮤니티는 음악보다 팬덤 중심으로 흘러갑니다.
우리는 "음악과 장소의 결합"이라는 새로운 시각으로 이 문제를 접근했습니다. 같은 장소를 걷는 사람들은 비슷한 감정을 느끼고, 그 순간에 어울리는 음악을 공유할 수 있다는 가설에서 출발했습니다. 단순한 음악 공유를 넘어, 장소에 담긴 추억과 서사를 나누는 경험을 제공하고자 했습니다.
기술적으로는 위치 기반 실시간 데이터 처리, 대용량 음악 파일 스트리밍, 그리고 음악+위치 결합 데이터를 분석하는 AI 시스템이라는 세 가지 핵심 과제가 있었습니다. 특히 초기 단계 스타트업으로서 제한된 예산 내에서 안정적인 서비스를 운영해야 하는 비용 최적화 문제도 중요한 도전이었습니다.
본 프로젝트는 MSA 아키텍처 기반으로 확장 가능한 시스템을 설계하고, AI 데이터 분석을 통해 음악 공유 경험을 극대화하며, 하이브리드 인프라로 비용을 최적화하는 것을 목표로 했습니다.
기술적 도전과제
1. RAG 기반 데이터 분석의 높은 비용 문제
문제 상황
비즈니스 요구사항: 음악+위치 결합 데이터를 분석하여 인사이트 제공
PostgreSQL, MongoDB, ElasticSearch 3개 DB 데이터를 임베딩하여 RAG 구현
월 80달러의 AI 컨텍스트 비용 발생
긴 컨텍스트로 인한 할루시네이션 발생 (데이터 신뢰성 문제)
매 요청마다 임베딩 과정으로 서버 부하 및 응답 속도 저하
해결 과정 (1단계: RAG → Text-to-SQL)
AI가 데이터를 직접 읽는 대신 SQL 질의문 생성 방식으로 전환
응답만 반환받아 컨텍스트 크기 대폭 감소
SQL Injection 방지를 위해 읽기 전용 권한 DB 계정 사용
DML 제어 차단으로 보안성 확보
문제 상황 (2단계)
DB마다 개별 질의문 작성 필요 (PostgreSQL, MongoDB, ElasticSearch)
서로 다른 DB 간 데이터 결합을 AI가 직접 계산
다시 할루시네이션 및 데이터 신뢰성 문제 발생
해결 과정 (2단계: Trino 도입)
Trino 쿼리 엔진 도입으로 이기종 DB 통합 조회
모든 DB 메타데이터를 AI에게 제공하여 정확한 쿼리 생성 유도
이전 요청을 Vector DB(Qdrant)에 저장하여 Few-shot Learning 적용
AI 정확도 향상 및 쿼리 생성 속도 개선
기술적 의사결정 근거
RAG는 비정형 문서 검색에 적합하지만, 구조화된 DB 조회에는 비효율적
Text-to-SQL은 SQL 스키마라는 명확한 구조로 할루시네이션 감소
Trino는 ANSI SQL 지원으로 AI가 표준 쿼리만 학습하면 됨
Few-shot은 Zero-shot 대비 쿼리 정확도 40% 향상
읽기 전용 권한으로 보안 리스크 최소화
결과
월 80달러 → 월 15달러로 비용 81% 절감
응답 속도 평균 8초 → 2초로 개선
데이터 신뢰성 확보 (할루시네이션 감소)
2. 스트리밍 서버 비용 최적화
문제 상황
AWS S3 + CloudFront로 음악 파일 서빙
일 평균 I/O 비용 2달러 발생 (월 60달러)
트래픽 증가 시 비용 선형 증가 우려
해결 과정
On-Premise 환경에 스트리밍 전용 서버 구축
Nginx의 sendfile 시스템콜로 커널 레벨 파일 전송
Zero-copy 기법으로 유저 스페이스 버퍼 생략
AWS와 VPN 터널링으로 안정성 확보
기술적 의사결정 근거
Nginx sendfile은 커널에서 직접 네트워크로 전송 (애플리케이션 레벨 대비 3배 빠름)
학교 서버 인프라 활용 가능 (고정 비용 0)
On-Premise 장애 시 AWS 자동 Failover 구성
음악 파일은 변경 빈도 낮아 캐싱 효율 극대화
결과
일 2달러 절감 (연간 730달러 절감)
평균 응답 속도 200ms → 80ms로 개선
동시 접속자 100명 → 500명 처리 가능
3. 어드민 서버 비용 최적화
문제 상황
AWS EC2 인스턴스 일 1.2달러 비용
실시간 모니터링 불필요 (관리자만 사용)
트래픽 낮음 (일 평균 50건)
해결 과정
On-Premise 서버로 이전
AWS와 VPN으로 메인 DB 접근
Prometheus + Grafana로 통합 모니터링
결과
일 1.2달러 절감 (연간 438달러 절감)
스트리밍 + 어드민 서버 통합 관리로 운영 효율 향상
4. 확장 가능한 MSA 아키텍처 설계
문제 상황
초기에는 모노리식 구조로 개발 시작
스트리밍과 비즈니스 로직이 혼재하여 성능 병목 발생
관리 기능이 메인 서버에 있어 보안 리스크 존재
해결 과정
메인 서버, 스트리밍 서버, 어드민 서버로 분리
각 서버의 책임 명확화 (단일 책임 원칙)
독립적인 기술 스택 선정 및 배포 파이프라인 구축
기술적 의사결정 근거
도메인이 아닌 성능 요구사항 기준으로 서버 분리
스트리밍은 I/O 중심, 메인은 비즈니스 로직 중심
각 서버의 기술 스택을 독립적으로 선택 가능
결과
스트리밍 성능 3배 향상
배포 독립성 확보 (메인 서버 배포 시 스트리밍 영향 없음)
향후 Kubernetes 기반 Auto-scaling 준비 완료
우리는 "음악과 장소의 결합"이라는 새로운 시각으로 이 문제를 접근했습니다. 같은 장소를 걷는 사람들은 비슷한 감정을 느끼고, 그 순간에 어울리는 음악을 공유할 수 있다는 가설에서 출발했습니다. 단순한 음악 공유를 넘어, 장소에 담긴 추억과 서사를 나누는 경험을 제공하고자 했습니다.
기술적으로는 위치 기반 실시간 데이터 처리, 대용량 음악 파일 스트리밍, 그리고 음악+위치 결합 데이터를 분석하는 AI 시스템이라는 세 가지 핵심 과제가 있었습니다. 특히 초기 단계 스타트업으로서 제한된 예산 내에서 안정적인 서비스를 운영해야 하는 비용 최적화 문제도 중요한 도전이었습니다.
본 프로젝트는 MSA 아키텍처 기반으로 확장 가능한 시스템을 설계하고, AI 데이터 분석을 통해 음악 공유 경험을 극대화하며, 하이브리드 인프라로 비용을 최적화하는 것을 목표로 했습니다.
기술적 도전과제
1. RAG 기반 데이터 분석의 높은 비용 문제
문제 상황
비즈니스 요구사항: 음악+위치 결합 데이터를 분석하여 인사이트 제공
PostgreSQL, MongoDB, ElasticSearch 3개 DB 데이터를 임베딩하여 RAG 구현
월 80달러의 AI 컨텍스트 비용 발생
긴 컨텍스트로 인한 할루시네이션 발생 (데이터 신뢰성 문제)
매 요청마다 임베딩 과정으로 서버 부하 및 응답 속도 저하
해결 과정 (1단계: RAG → Text-to-SQL)
AI가 데이터를 직접 읽는 대신 SQL 질의문 생성 방식으로 전환
응답만 반환받아 컨텍스트 크기 대폭 감소
SQL Injection 방지를 위해 읽기 전용 권한 DB 계정 사용
DML 제어 차단으로 보안성 확보
문제 상황 (2단계)
DB마다 개별 질의문 작성 필요 (PostgreSQL, MongoDB, ElasticSearch)
서로 다른 DB 간 데이터 결합을 AI가 직접 계산
다시 할루시네이션 및 데이터 신뢰성 문제 발생
해결 과정 (2단계: Trino 도입)
Trino 쿼리 엔진 도입으로 이기종 DB 통합 조회
모든 DB 메타데이터를 AI에게 제공하여 정확한 쿼리 생성 유도
이전 요청을 Vector DB(Qdrant)에 저장하여 Few-shot Learning 적용
AI 정확도 향상 및 쿼리 생성 속도 개선
기술적 의사결정 근거
RAG는 비정형 문서 검색에 적합하지만, 구조화된 DB 조회에는 비효율적
Text-to-SQL은 SQL 스키마라는 명확한 구조로 할루시네이션 감소
Trino는 ANSI SQL 지원으로 AI가 표준 쿼리만 학습하면 됨
Few-shot은 Zero-shot 대비 쿼리 정확도 40% 향상
읽기 전용 권한으로 보안 리스크 최소화
결과
월 80달러 → 월 15달러로 비용 81% 절감
응답 속도 평균 8초 → 2초로 개선
데이터 신뢰성 확보 (할루시네이션 감소)
2. 스트리밍 서버 비용 최적화
문제 상황
AWS S3 + CloudFront로 음악 파일 서빙
일 평균 I/O 비용 2달러 발생 (월 60달러)
트래픽 증가 시 비용 선형 증가 우려
해결 과정
On-Premise 환경에 스트리밍 전용 서버 구축
Nginx의 sendfile 시스템콜로 커널 레벨 파일 전송
Zero-copy 기법으로 유저 스페이스 버퍼 생략
AWS와 VPN 터널링으로 안정성 확보
기술적 의사결정 근거
Nginx sendfile은 커널에서 직접 네트워크로 전송 (애플리케이션 레벨 대비 3배 빠름)
학교 서버 인프라 활용 가능 (고정 비용 0)
On-Premise 장애 시 AWS 자동 Failover 구성
음악 파일은 변경 빈도 낮아 캐싱 효율 극대화
결과
일 2달러 절감 (연간 730달러 절감)
평균 응답 속도 200ms → 80ms로 개선
동시 접속자 100명 → 500명 처리 가능
3. 어드민 서버 비용 최적화
문제 상황
AWS EC2 인스턴스 일 1.2달러 비용
실시간 모니터링 불필요 (관리자만 사용)
트래픽 낮음 (일 평균 50건)
해결 과정
On-Premise 서버로 이전
AWS와 VPN으로 메인 DB 접근
Prometheus + Grafana로 통합 모니터링
결과
일 1.2달러 절감 (연간 438달러 절감)
스트리밍 + 어드민 서버 통합 관리로 운영 효율 향상
4. 확장 가능한 MSA 아키텍처 설계
문제 상황
초기에는 모노리식 구조로 개발 시작
스트리밍과 비즈니스 로직이 혼재하여 성능 병목 발생
관리 기능이 메인 서버에 있어 보안 리스크 존재
해결 과정
메인 서버, 스트리밍 서버, 어드민 서버로 분리
각 서버의 책임 명확화 (단일 책임 원칙)
독립적인 기술 스택 선정 및 배포 파이프라인 구축
기술적 의사결정 근거
도메인이 아닌 성능 요구사항 기준으로 서버 분리
스트리밍은 I/O 중심, 메인은 비즈니스 로직 중심
각 서버의 기술 스택을 독립적으로 선택 가능
결과
스트리밍 성능 3배 향상
배포 독립성 확보 (메인 서버 배포 시 스트리밍 영향 없음)
향후 Kubernetes 기반 Auto-scaling 준비 완료
프로젝트 성과
총 트래픽 225,000건 달성
2025년 10월 출시 이후 2개월간 총 22.5만 건의 트래픽을 기록하며, 실제 사용자들의 활발한 이용을 확인했습니다.
앱 다운로드 70+ 건 확보
원스토어 출시 후 70명 이상의 사용자가 앱을 다운로드하여 실제 서비스로서의 가능성을 검증했습니다.
G-Star 2025 부스 운영
부산 벡스코에서 열린 대한민국 최대 게임 박람회 G-Star 2025에서 부스를 운영하며 대중들에게 서비스를 소개했습니다.
일 3.2달러 비용 절감 (연간 $1,168)
On-Premise 하이브리드 인프라 구축으로 스트리밍 서버와 어드민 서버의 AWS 비용을 절감했습니다.
스트리밍 응답 속도 60% 개선
Nginx sendfile 도입으로 평균 응답 속도를 200ms에서 80ms로 개선했습니다.
핵심 기능

위치 기반 음악 드랍
사용자가 특정 장소에서 음악을 "드랍"하면 해당 위치에 음악이 남겨집니다. 다른 사용자가 그 장소를 지나갈 때 음악을 발견하고 들을 수 있으며, 장소에 담긴 서사와 추억을 공유할 수 있습니다.

실시간 주변 사용자 음악 조회
현재 위치 주변에서 다른 사용자들이 듣고 있는 음악을 실시간으로 확인할 수 있습니다. Redis Geo 데이터 구조로 지리적 거리를 계산하고, SSE로 실시간 업데이트를 푸시합니다.
음악 스트리밍
Nginx sendfile 기반 고성능 스트리밍으로 끊김 없는 음악 재생 경험을 제공합니다. HTTP Range Request를 지원하여 구간 재생이 가능하며,정적이고 빠른 서비스를 제공합니다.
AI 기반 데이터 분석 (어드민)
관리자가 자연어로 데이터 분석을 요청하면 AI가 SQL 쿼리를 생성하여 실행합니다. Few-shot Learning으로 쿼리 정확도를 높였습니다. 예: "지난주 부산 해운대에서 가장 많이 들은 음악 top 10"
진행 단계
기획 및 요구사항 정의
2025.03.
타겟 사용자 인터뷰 및 페르소나 정의
위치 기반 음악 공유 핵심 기능 범위 확정
경쟁 서비스 분석 및 차별화 전략 수립
위치 기반 음악 공유 핵심 기능 범위 확정
경쟁 서비스 분석 및 차별화 전략 수립
아키텍처 설계
2025.04.
MSA 기반 시스템 아키텍처 설계
PostgreSQL, MongoDB, Redis, ElasticSearch 멀티 DB 전략 수립
위치 데이터 처리를 위한 PostGIS 도입 결정
PostgreSQL, MongoDB, Redis, ElasticSearch 멀티 DB 전략 수립
위치 데이터 처리를 위한 PostGIS 도입 결정
메인 서버 개발
2025.05.
Spring Boot 기반 RESTful API 개발
JWT 인증/인가 시스템 구축
위치 기반 음악 공유 기능 구현
SSE 기반 실시간 알림 시스템 개발
JWT 인증/인가 시스템 구축
위치 기반 음악 공유 기능 구현
SSE 기반 실시간 알림 시스템 개발
스트리밍 서버 구축
2025.06.
AWS S3 기반 초기 스트리밍 구현
Nginx를 활용한 On-Premise 스트리밍 서버 구축
Zero-copy 기반 성능 최적화
Nginx를 활용한 On-Premise 스트리밍 서버 구축
Zero-copy 기반 성능 최적화
어드민 서버 및 AI 시스템 개발
2025.08.
RAG 기반 초기 데이터 분석 시스템 구축
Text-to-SQL 전환 및 Trino 도입
Vector DB(Qdrant) Few-shot Learning 구현
관리자 대시보드 개발
Text-to-SQL 전환 및 Trino 도입
Vector DB(Qdrant) Few-shot Learning 구현
관리자 대시보드 개발
프로젝트 상세
RE:MEDY는 지도 기반 음악 공유 커뮤니케이션 서비스입니다. 사용자가 매일 같은 거리를 걸으며 듣던 노래에서 벗어나 새로운 음악을 발견하고, 같은 장소에서 음악을 듣는 사람들과 공감대를 형성할 수 있는 플랫폼입니다. 단순한 음악 공유를 넘어 위치와 결합된 추억과 서사를 나누는 경험을 제공합니다.

투표 핀을 클릭하여 다른 사용자가 공유한 음악 투표에 참여할 수 있습니다. 하나의 음악 토론 주제를 가지고 자유롭게 토론할 수 있습니다.

음악 핀을 클릭하여 주소, 떨어뜨린 유저, 한 마디를 확인할 수 있습니다. 좋아요를 눌러 공감을 표시할 수 있으며 댓글을 통해 다른 사람과 의견 공유 또한 가능합니다.

프로필에서 나의 정보와 내가 떨어뜨린, 좋아요를 누른 드랍 정보를 확인할 수 있습니다.

지도 화면에서 근처에 떨어진 음악들을 핀으로 확인할 수 있으며, 현재 재생 중인 곡은 하이라이팅 및 모달로 정보를 표시해줍니다.



