내가 구현해야 할 기능

나와 비슷한 소비를 한 사람들이 많이 참여한 챌린지를 띄워주는 것.

스크린샷 2024-09-26 오전 10.32.01.png

개발 전 생각해야 할 것들

나와 비슷한 소비를 한 사람들이 많이 참여한 챌린지를 띄워주기 위해서는

협업 필터링 > 메모리 기반 접근 방식 > 사용자 기반 추천 을 사용해야 한다. 그 이유는 아래를 참고.

유사도 알고리즘은 코사인 유사도를 사용하기로 하였다.

어떤 추천시스템을 사용해야 할까? (1) - 협업 필터링 모델과 한계점

문서화가 잘 되어 있어 빠르게 배우기 쉬운 FastAPI를 파이썬 프레임워크로 선택하였다.

Python Web Framework 3종 비교

코사인 행렬을 저장할 데이터베이스로 MySQL, ****캐싱을 위한 인메모리 데이터베이스로 Redis를 선택하였다.

[개발] Redis란, Redis의 캐싱 기능에 대해서

전체 흐름 구상하기

메인 서버

  1. 메인 서버가 user_action 테이블을 생성한다.
CREATE TABLE user_action (
    id INT AUTO_INCREMENT NOT NULL,
    challenge_id INT NOT NULL,
    user_email VARCHAR(255) NOT NULL,
    category ENUM('TRAVEL', 'DIGITAL', 'FASHION', 'TOYS', 'INTERIOR', 'ETC') NOT NULL,
    start_time DATETIME NOT NULL,
    PRIMARY KEY (id)
);