프로젝트 소개
저희 나아가는 사용자 주변의 장소 중 랜덤하게 사진을 제공하여 사용자가 해당 위치를 추측해서 직접 찾아가는 추리 게임입니다.
목적지를 사진을 보며 찾으러 가며, 목적지가 현재 위치에서 동, 서, 남, 북 어디에 위치해 있는지 힌트를 볼 수 있습니다. 다른 유저들이 볼 수 있는 쪽지를 남길 수 있습니다.
깃허브
https://github.com/woowacourse-teams/2023-naaga
다운로드
🔗플레이 스토어 다운
기간
2023.06 ~
구성원
안드로이드 - 3명
백엔드 - 4명
인프라 아키텍쳐
공간 인덱스로 쿼리 성능 개선
문제
- 나아가는 지도 기반한 게임 서비스이기 때문에, 사용자 위치 반경 안에 필요한 데이터를 조회하는 일이 많음
- Place 테이블에 각각 존재하던 latitude, longitude 컬럼으로 WHERE 절에서 복잡한 수식의 조건이 걸림
- 해당 쿼리는 유저가 게임 시작하면 무조건 발생하는 쿼리
- 쪽지 기능은 구현하기 전이였지만, 쪽지는 폴링 방식으로 사용자가 이동하면서 반경 50m의 쪽지들을 지속적으로 조회해오는 요청을 할 가능성이 높음
해결
CREATE SPATIAL INDEX idx_location ON place (location)
- GEOMETRY 타입 추가 및 공간 인덱스 생성
- 단건 쿼리 속도가 0.03초에서 0.0046초로 6배의 성능 향상
로그인 기능 구현 및 인터셉터 프록시
문제