Project 20

[Project] 칵테일 추천 알고리즘 설계 - 협업 필터링 구상-

앞선 포스팅으로, 비교적 간단하고 직관적인 칵테일 추천 알고리즘을 만들었다.대부분의 사용자들이 관심있어하는 칵테일, 또 웹 페이지에서 도출된 사용자들의 행동을 바탕으로 칵테일을 추천해주는 방식이었는데, 이러한 방식은 모든 사용자들에게 동일한 추천 알고리즘이 적용된다. 이에 좀 더 개인화된 추천 알고리즘 설계를 위해 넷플릭스의 협업 필터링 알고리즘에서 아이디어를 얻어, 보다 개인적인 취향에 맞는 칵테일을 추천할 수 있는 알고리즘을 설계해보고자 한다.즉 비슷한 취향의 다른 사용자들이 좋아한 콘텐츠를 추천하는 알고리즘을 만들어 보자. ( A와 B가 비슷한 콘텐츠를 시청한 경우, A가 아직 보지 않은 B가 좋아한 콘텐츠를 추천한다)이러한 설계로 보다 차별화된 알고리즘을 만들어서 웹 페이지의 특징을 살리고, 시간..

[Project] 칵테일 추천 알고리즘 설계 - 기본 추천 알고리즘 -

현재 진행 중인 프로젝트에서, 사용자 (로그인 사용자 혹은 비로그인 사용자) 에게 칵테일을 추천해주는 기능을 담당하고 있고, 이 추천 칵테일을 어떠한 알고리즘으로 설계하여 노출시킬지에 대한 과정을 기록하고자 한다.포스팅의 흐름은 먼저 알고리즘에 대한 소개를 시작으로, 왜 해당 자료들을 사용해서 알고리즘을 만드려고 하는지에 대한 타당성을 기술한다. 이후 실제 알고리즘을 통한 칵테일 순위를 도출하는 예시를 보여주는 것으로 마무리 하고자 한다.  1. 소개 알고리즘의 목적 로그인 사용자와 비로그인 사용자에게 맞춤형 칵테일을 추천하여, 각 사용자에게 최적화된 경험을 제공하고자 한다. 추천 알고리즘의 효과개인화된 추천은 사용자가 원하는 콘텐츠를 쉽게 찾을 수 있게 하여 만족도를 높인다. 또 사용자가 관심 있는 칵..

[프로젝트] Naver API 응답을 DTO로 변환하여 프로젝트에 사용하기

https://cs-study1.tistory.com/53 [프로젝트] Naver 데이터랩의 통합검색어 트랜드 API 를 SpringBoot 프로젝트를 통해 요청하고 응답받이전 내용에서는 현재 진행 중인 SpringBoot 프로젝트에서 Google Trend API 를 사용하는 방법을 시도 해 봤다. 이번엔 추가로 국내 사용자들이 많이 이용하는 검색포털인 Naver 의 검색량도 API로 받아와cs-study1.tistory.com 이전 포스팅에서는 Naver 데이터랩의 통합검색어 트랜드 API 에 대한 요청문을 만들고, SpringBoot Project 에서 이 요청문을 전송하여 응답을 받는 과정까지 진행하였다. 이제 이 요청에 대한 응답문을 서버에서 DTO로 받아들여서 필요한 정보만 추출하고, DB에 ..

[프로젝트] SerpAPI + SpringBoot 로 Google Trend API 응답을 서버에서 활용하기

이전글https://cs-study1.tistory.com/48 응답문의 구조에서 필요한 데이터는 현재 날짜를 기준으로, 전 달의 data , query, value 값 이다.이러한 값만 이용하기 위해서, 일단 응답문에 대응하는 DTO 를 만들고, 이 DTO 에서 필요한 값을 추출하기로 한다. 1. DTO 클래스 작성응답 데이터를 담기 위한 DTO 클래스를 생성한다. 필요한 필드만 명시하여 서버로 가져올 때 불필요한 리소스 낭비를 줄인다.(필요한 데이터 = 이전 달의 data , query, value 값 )DateCalculator 클래스를 만들어놨고, 정적 메서드들로 필요한 날짜들을 반환하는 기능들을 모아 놓았다.     2. API에 대한 응답을 DTO 로 받아오도록 DTO convert  메서드와..

[프로젝트] SerpAPI + SpringBoot 로 Google Trend API 요청하고 응답 받기

기존 아이디어 였던, Python Server 를 이용한 방법에 대해 팀원들과 회의 해 본 결과, 1. Python Server 만을 위한 ec2 추가 할당 및 설정에 대한 이슈->한 기능만을 위한 서버 할당은 리소스 낭비 아닐까? 2. S3 bucket 에 파일로 저장하는 것에 대한 이슈-> 간단한 파일을 읽어오기 위해 입/출력 기능을 사용해야 한다 3. 오픈소스 라이브러리에 대한 의존도 이슈-> 오픈소스 인 만큼 예상치 못한 장애에 대한 대처가 힘들 수 있음. 해당 이슈들 때문에, 검색 키워드를 파일로 저장하고 이를 SpringBoot 에서 읽어오는 방법 보다는 다른 방법을 채택하기로 하는게더 좋을 것 같다는 결론에 도달하였다.  파이썬 서버와 AWS 를 사용하지 않으면 상대적으로 더 간단하게 구현 ..

💡[프로젝트 아이디어] 구글 키워드 검색 API 활용 (Python, SpringBoot)

1. 기존 Project 에서의 키워드 검색 API 활용 방식현재 진행 중인 프로젝트에서, 특정 키워드의 검색량 변화를 바탕으로, 검색량의 증가가 가장 많은 키워드를 사용자 화면에 전달하도록 설계 및 구현 하고 있었다. 좀 더 자세히 설명하자면, 네이버 데이터랩 에서, 통합검색어 트랜드 API 를 활용해서, 특정 칵테일의 이름을 검색한 검색량을2개월 단위로 받아오고, 전전달과 전달의 검색량의 차이를 계산해서, 검색량이 많아진 칵테일 5개를 DB로 저장하는 방식이였다.  의존성 주입을 받은 trendCocktailServece 인스턴스는 키워드가 저장된 List 자료구조를 인자로 넣으면, API 요청문을 Naver 데이터랩에 전송하고 응답을 반환하는 메서드 naverRequest 를 사용할 수 있다. (요..

🐳 Docker 의 localStack 을 활용한 AWS S3 업로드메서드 테스트코드 작성하기

팀 프로젝트 에서 AWS 를 이용하여 이미지를 업로드하는 메서드를 SpringBoot 에서 구현해야 했다.하지만 AWS 계정이 팀원의 아이디로 만들어졌고, 처음에는 AWS에 접속이 가능했으나, 허용된 기기가 아니라는 둥인증메일을 보낼테니 입력하고 로그인 하라는 둥... AWS에 로그인 해서 내 업로드 메서드가 잘 동작하는지 확인 하려면 아이디를 만든 팀원에게 매번 실시간으로 메일 인증코드를 알려달라고 해야 하는 상황이였다. 테스트 코드, Swagger, Postman 을 사용하여 메서드 동작 테스트를 해도 괜찮지 않을까? 생각했지만 역시 실제로 파일이 업로드 되고, 삭제되는 모습을 봐야 내 메서드 로직에 확신을 같고 팀원들에게 설명해 줄 수 있을 것 같다고 생각했다. 이에 방법을 찾아보니 로컬 스택이라는..