Skip to Content
📜 전체 프로젝트OTT추천 선택의왕

OTT추천 서비스개발 선택의왕 프로젝트

📅 2024.05 ~ 2024.05👥 2명🛠 Django, Vue.js🎯 팀장 · 추천/유저 도메인

image.png

1. 프로젝트 개요

  • 목표:

    사용자가 선호하는 영화와 장르를 기반으로 최적의 OTT 플랫폼을 순위별로 추천해주는 서비스 개발.

  • 배경:

    다양한 OTT 플랫폼 중 어떤 서비스가 사용자 취향에 맞는지, 또는 가장 많은 영화 콘텐츠를 제공하는지 파악하기 어려운 사용자들을 위해 맞춤형 추천 서비스를 제공하기 위해 기획된 프로젝트.

  • 주요 기능:

    • 사용자가 선호하는 영화와 OTT 선택.
    • 선택 기반으로 OTT 순위 추천 제공.
    • ChatGPT 챗봇을 활용해 선호 장르 기반 영화 및 추가 추천 제공.

2. 담당 역할 및 기여

  • 역할:

    팀장, 영화 및 추천 도메인, 유저 도메인 개발 담당.

  • 기여:

    • ERD 작성: 데이터베이스 설계.
    • 목업 작성: 서비스 인터페이스 기획 및 설계.
    • 도메인 개발: 영화, 추천 및 유저 도메인 설계 및 구현.
    • OAuth2 로그인 기능 구현: 카카오 로그인 및 로그아웃 기능 개발.
    • 추천 챗봇 개발: ChatGPT를 활용해 영화 장르 취향 기반 추천 기능 구현.

3. 사용 기술 및 이유

  • 사용 기술:
    • Vue.js: 프론트엔드 인터페이스 구축.
    • Bootstrap: 빠르고 효율적인 UI 디자인.
    • Django: 백엔드 프레임워크로 사용, 빠른 API 개발 가능.
  • 선택 이유:
    • 팀원들의 기술 스택과 짧은 개발 기간을 고려해 가장 익숙한 기술을 선택하여 효율성을 높임.

4. 구현 사항

  • OTT 및 영화 추천: 사용자가 선택한 영화와 OTT 데이터를 기반으로 가입할 만한 OTT를 추천.
  • 외부 데이터 활용: OpenAPI를 통해 영화 및 OTT 데이터를 수집, 데이터베이스에 저장한 뒤 추천 로직 구현.
  • 추천 로직 개발: 사용자의 취향과 데이터를 분석해 맞춤형 OTT 플랫폼 순위 추천.
  • 챗봇 기능: ChatGPT를 통해 사용자가 선택한 영화 및 장르를 기반으로 개인화된 영화 추천 제공.

ERD

선택의왕_ERD.png


5. 문제 해결 사례

📦 문제 1: 외부 API 원본을 추천용 데이터 모델로 재가공

상황:
외부 API는 “전체 영화 소개, 장르, 인기도, 발매일” 정도만 제공했고, 우리가 필요한 건 장르별 영화 리스트/개수, OTT별 장르 보유량, 인기도 지표(조회수·평점) 집계였음. 원본을 그대로 쓰면 추천 가중치를 계산할 수 없었음.

해결 방법:

  1. 스테이징→정규화 파이프라인 구축
    • 원본을 스테이징 테이블에 적재 후 장르/OTT 코드를 내부 코드셋으로 매핑
    • 장르별 영화 수, OTT별 장르 보유량, 인기도(조회수·평점) 기준 가중치를 계산해 파생 컬럼으로 추가
    • 중복·누락 레코드 필터링 후 단일 추천용 스키마로 변환
  2. 집계 테이블로 분리 저장
    • 추천 로직이 바로 쿼리할 수 있도록 “장르별 영화 리스트/개수, OTT별 장르 가중치, 인기도 스코어”를 집계 테이블에 저장

결과:
추천에 필요한 통계·지표를 한 번에 조회 가능해졌고, 이후 추천 로직이 외부 API에 의존하지 않고 내부 집계 데이터를 바로 사용.


🧩 문제 2: OTT 추천 시 API 직접 호출 대신 집계 테이블로 속도·한도 해결

상황:
추천 요청마다 외부 API를 직접 호출하면 응답 지연과 rate limit에 막혀 핵심 기능이 느려지는 문제가 있었음.

해결 방법:

  1. 집계 테이블 도입
    • 추천에 필요한 지표(장르·제공 OTT별 가중치/랭킹)를 배치로 계산해 별도 테이블에 저장
  2. 하루 1회 배치 업데이트
    • 스케줄러로 집계 테이블을 일괄 갱신, 실시간 요청 시에는 집계 테이블만 조회
  3. 이미 가입한 OTT 필터링 + 결과 캐싱
    • 사용자가 이미 가입한 OTT는 추천 후보에서 제외
    • “가장 선호 장르를 가장 많이/인기 있게 보유한 OTT” 추천 결과를 사용자별로 저장해 재조회 시 재사용, 선호 장르나 선택이 바뀔 때만 API→집계 재계산 트리거

결과:
추천 응답 속도 향상(외부 API 호출 없음), rate limit 우회, 일관된 추천 결과 유지.

6. 프로젝트 성과 및 결과

  • 성과:
    • 짧은 개발 기간 내 프로젝트 기획부터 구현까지 완료.
    • OAuth2, OpenAPI, ChatGPT 등의 기술을 성공적으로 통합.
  • 결과: 사용자가 원하는 OTT 플랫폼을 손쉽게 찾을 수 있는 서비스를 구현하여 사용자 편의성을 극대화.
Last updated on