❗확인하고 들어갈 점
프로젝트 요구 사항
- 카카오지도 API를 활용하여 주소별 사용자 리뷰(후기) 데이터를 체계적으로 정리 및 분석합니다.
- 리뷰(후기) 데이터를 활용하여 사용자에게 맞춤형 정보를 제공하며, 데이터 기반의 비즈니스 의사결정에 기여할 수 있는 플랫폼을 구축합니다.
실제로 위와 같이 카카오지도 API를 활용하여 주소별 사용자 리뷰(후기) 데이터를 관리하는 것은 비효율적입니다. 비즈니스 이점도 없을 뿐더러 카카오지도 API에서는 주소별 사용자 리뷰(후기) 데이터를 제공하지 않습니다.
현재 상황
-
카카오맵에서 가게 정보는 API로 제공을 해주지만 가게 내 리뷰 데이터는 제공되지 않아 리뷰 데이터를 크롤링하여 직접 제공해야 한다.
-
리뷰 데이터와 가게 제목과 같은 요소는 자주 변경되지 않으며 실시간으로 반영되지 않아도 문제없다.
따라서 크롤링으로 데이터를 관리하는 작업의 주기는 상황에 맞게 선택하면 된다. (주기 : 1일, 3일, 1주, 2주)
실제 서비스로 적용한다면 최신 데이터 제공을 위해 주기는 당연히 짧을수록 좋다. 현재는 2주로 설정
-
크롤링으로 지도에 등록된 모든 가게의 정보를 모든 데이터를 가져오기엔 시간이 너무 많이 걸리며 적합하지 않는다.

문제점
- 사용자가 조합해서 검색할 키워드가 많으며 검색했을 때, 키워드에 대해 너무 많은 가게 정보가 나온다.
대안
- 키워드 제한
- 음식 메뉴로 한정짓기, 사용자가 고를 수 있는 메뉴 키워드를 10개 정도로 제한
- ex) 중식 : 짬뽕, 짜장, 마라탕 등 / 한식 : 찌개, 백반 등 / 일식 : …. 등
- 너무 많은 가게 정보
- 검색 결과, 1페이지 : 가게 15개 정보가 나온다. 페이지의 수가 많을 수 있기에 크롤링 범위는 최대 3페이지까지 제한한다. (상단 최대 45개 가게)
- 가게별 수많은 리뷰 정보
- 보통 리뷰 수는 적게는 수십개 ~ 수만개까지 존재한다. 리뷰 50개만 가져오게 제한하여 처리한다.
다만, 적은 리뷰 개수에 대한 신뢰성을 높이기 위해 최근 등록된 리뷰 순으로 크롤링한다.
구현 방안
크롤링 처리를 위해 java 대신 python 을 선정했습니다. python 관련 프레임워크를 활용하여 배포한 서비스를 배포하는 방법이 비용적으로 절약되지만 학습과 관리 측면에서 시간이 부족하기에 AWS Lambda 를 활용하여 구현하기로 했습니다.
AWS Lambda 선택 이유
- 서버리스 특징을 가지기에 배포 이후 관리할 필요가 없다. 이후 SQS를 도입하여 크롤링 실패를 고려한 재시도 처리와 검색 키워드 별 크롤링에 대한 단위 처리가 가능하다.
- 기본적으로 최대 1000 단위 병렬 처리가 가능하기에 크롤링 확장이 필요해도 변경 요소가 없다.