Skip to content

gnar-rengar/backend

Repository files navigation

듀오해듀오

Frame 9125

듀오해듀오는 내 플레이스타일 기반 찰떡 듀오를 매칭해주는 서비스에요

1️⃣ 롤비티아이 기반 알고리즘으로 찰떡 듀오를 매칭해드려요 🤝
2️⃣ 전적만으로 알 수 없었던 플레이스타일과, 실제 듀오후기도 확인해보세요 👀
3️⃣ 실시간으로 듀오를 찾고 있는 소환사도 만날 수 있어요
4️⃣ 마음에 드는 소환사가 있다면, 바로 1:1 채팅으로 롤약속을 잡아보세요

아래 링크를 클릭하면 롤비티아이 검사와 3초 안에 회원가입이 가능해요!
심심하실 때 가입해주시면 정말 감사드리겠습니당
(어쩌면 알고리즘으로 절 만나실 수도..? 😋)

👉듀오해듀오 바로가기
https://duoduo.lol/tendency-test?type=direct

1️⃣ 프로젝트 기간

2022.07 ~ 2022.08 (6주)

2️⃣ 서비스 화면

온보딩 및 롤비티아이(플레이스타일 검사)

duo-tendency_test

duo-home

맞춤 추천 소환사

duo-recommendjpg

최신 소환사

duo-recommend_new

유저 프로필

duo-profile

전적

duo-match_history

채팅

duo-chat duo-chat_notice

리뷰 작성

duo-review_positive duo-review_netgative duo-review_complete

마이 페이지

duo-mypage

회원 탈퇴

duo-withdrawl

로그인

duo-login

비로그인 화면

duo-home_blured duo-profile_blured image

404

duo-404

3️⃣ Service Architecture

Frame 1

4️⃣ BE Core Tools

image

Library

image

5️⃣ Trouble Shooting

issue 1

🤔 situation

  • 로그인 시 서버에서 Set-cookie 해준 쿠키를 클라이언트에서 꺼내서 로그인 여부를 판별하고 싶었는데, 사용할 수 없었음
  • 개발자 도구의 Network탭에서 Request cookies에는 잘 왔다갔다 하는게 보였으나 Application탭의 cookie, 즉 클라이언트의 브라우저에는 저장이 되지 않아 사용할 수 없었음

😙 solution

  • httpOnly, secure, domain, samesite 등 Set-cookie의 옵션들을 다양하게 바꾸어 보았지만 원하는 방식대로 작동하지 않음
  • → 서버와 클라이언트의 도메인이 달라 서버 측 도메인에 쿠키가 저장되고 있었음
  • → 여전히 클라이언트에서 그 쿠키를 사용할 순 없었기에 클라이언트 주소인 https://duoduo.lol의 하위 도메인인 https://server.duoduo.lol로 서버 주소를 이전함
  • → 원하던 대로 네트워크 헤더에도, 브라우저 쿠키에도 둘 다 저장이 됨!

issue 2

🤔 situation

  • 하루에 한번 나의 플레이스타일에 맞는 유저 3명을 추천해주는 가장 중요한 API가 있었는데, 모든 유저를 불러와서 알고리즘을 적용시키는 것은 말도 안되는 방법이었기에 DB에서 가져올 때 애초에 3명을 뽑아와야 했는데 이전 프로젝트를 하면서 익숙해진 mySQL이 아닌 mongoDB를 사용하였기에 그 방법이 떠오르지 않음

😙 solution

  • 오랜 검색 끝에 mongoose의 aggregate를 사용하여 해결
  • 이 때 mongoDB도 mySQL처럼 관계형은 아니지만, 관계형처럼 사용할 수 있는 방법이 많다는 것을 알아냄

issue 3

🤔 situation

  • 최근 전적을 불러올 때, 유저고유ID를 통해 MongoDB에서 해당 유저의 롤 닉네임을 가져온 뒤, axios를 이용하여 riot api와 통신하여 소환사 데이터를 받고, 받은 데이터에서 소환사 puuid를 가지고 다시 한번 riot api와 통신하여 매치id 리스트를 100개를 받아왔다. 그 후 최근 전적 페이지네이션에 따라 5개씩 또 riot api와 통신해서 각 매치의 정보를 받아왔다. 최근전적 5개를 가져올 때 axios통신만 7번씩 해야해서 응답속도가 너무 오래걸렸고 유저에게 불편한 경험을 줄 것 같았다.

😙 solution

  • redis를 이용하여 캐싱을 해서 해결
  • 캐시 데이터가 만료되기 전까지는 응답속도를 평균 3.03 s → 389 ms 로 88%가량 단축시켰다.

6️⃣ Members

image

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published