클래스/└ 항해99

<WIL> 실전 프로젝트 2주차 (외부 API 활용시간 단축)

디벅잉 2022. 5. 16. 10:30
728x90

 

🌊

 

 # 10주차 

진행사항

실전 프로젝트를 진행하면서 NestJS, TypeORM, Jest를 다루는 훈련을 하고 있습니다.

 

이슈

프로젝트에서 유저 주변으로 퀘스트를 생성해서 뿌려주는 로직이 있습니다.

외부 API(kakaI, 공공API)로 좌표와 주소값을 가져오는데 걸리는 시간을 단축시키기 위해 여러가지 고민과 시도를 하는 중입니다.

 

아래는 해당 로직의 프로세스 입니다.

#1. (from 클라이언트) 유저의 좌표값을 받아옴

#2. (from kakao API) 유저의 좌표 값으로 지역(시/구/동) 데이터를 받아옴

#3. (from 공공 API) 지역 데이터로 지역의 개요(전체 주소 갯수 등)를 받아옴

#4. (from 공공 API) 지역의 개요를 활용해 지역 내 전체 주소 중 랜덤한 주소를 받아옴 (전체 주소 대비 약 1%)

#5. (from kakao API) 주소에 해당하는 좌표값을 받아옴

#6. 좌표값을 바탕으로 퀘스트 생성 및 응답

 

#2, #3 요청은 각각 1번의 필수적인 요청이라 개선하지 못했습니다.

#3 과정은 지역(동)별로 약 50번의 요청이 발생하기 때문에, 병렬적으로 처리하였습니다.

#4 과정도 병렬적으로 처리하고 싶었으나 kakao API의 경우 한번에 많은 요청을 보내면 429 (Too Many Request) 에러를 보내오기 때문에 20번씩 나누어 처리하고 있습니다.

 

API 처리 시간은 더이상 단축시키기 어려울 것으로 판단했습니다.

하지만 한 번이라도 퀘스트가 발생한 동네에서는 미리 퀘스트를 만들어 두면 좋을 것 같습니다.

유저의 접속이 발생한 지역(동)에 한해서 다음번 퀘스트를 특정시간에 미리 생성하는 로직을 구현하고자 합니다.

 

728x90