본문 바로가기
끄적/나만봐

[토이프로젝트1] 1. 기획 - 음식 랜덤 추천 웹/앱

by iwbap 2024. 9. 16.
728x90

1. 위치 정보 받아오기 및 API 전환 시스템

기본 구조:

  • Google Maps API OpenStreetMap (OSM) API 를 기본으로 사용합니다.
  • 실시간 사용량 체크: Google Maps API의 무료 사용량이 끝나가면 OpenStreetMap (OSM) API로 전환합니다.
  • 한국용 앱: 한국에서는 기본적으로 네이버 또는 카카오 지도 API를 사용합니다.
    • 네이버/카카오 무료 사용량이 끝나면 Google Maps API로 전환.
    • Google Maps 무료 사용량이 끝나면 OSM API로 전환.
    • 네이버 지도 API 사용. (월 10,000,000건의 무료 이용량을 제공)

구현 방법:

  1. API 사용량 모니터링:
    •    각 API에서 제공하는 사용량 체크 엔드포인트를 주기적으로 호출하여 현재 사용량을 모니터링합니다.
    •    무료 사용 한도에 도달하면 다음 우선순위 API로 전환합니다.
  2. API 전환 로직:
    •    API 키와 사용량 정보를 관리하는 서비스 또는 모듈을 작성하여, 각 API의 사용량을 실시간으로 체크하고 전환합니다.
    •    예를 들어, Google -> OSM 또는 Naver/ Kakao -> Google -> OSM의 순서로 전환하도록 설정합니다.

2. 메뉴 설정 및 랜덤 선택 기능

  • 사용자 입력: 사용자가 특정 메뉴를 검색할 수 있도록 검색창 제공.
  • 랜덤 메뉴 선택: 메뉴를 랜덤으로 추천하는 기능 제공.

구현 방법:

  1. 메뉴 데이터베이스:
    •    음식 메뉴 데이터베이스를 구축하거나 외부 API (예: Yelp, Foursquare)에서 메뉴 데이터를 가져옵니다.
  2. 랜덤 선택 알고리즘:
    •    사용자 입력이 없는 경우, 전체 메뉴에서 랜덤으로 하나를 선택합니다.
    •    사용자 입력이 있는 경우, 해당 입력과 일치하는 메뉴를 검색하여 선택합니다.

3. 선택한 메뉴와 설정 위치 반경 내 음식점 랜덤 선택

  • 사용자가 선택한 메뉴설정된 위치 반경 내에서 음식점을 랜덤으로 선택하여 추천합니다.

구현 방법:

  1. 반경 내 음식점 검색:
    •    선택한 메뉴에 맞는 음식점들을 지도 API에서 검색합니다 (예: Google Places API, Naver Places API).
    •    설정한 반경 내에서 해당 메뉴를 제공하는 음식점 리스트를 가져옵니다.
  2. 랜덤 추천:
    •    검색된 음식점 목록에서 하나를 랜덤으로 선택하여 사용자에게 추천합니다.

추가 구현 고려사항

  • 성능 최적화: API 호출 빈도 최소화 및 캐싱 전략을 통해 성능을 최적화합니다.
  • 사용자 경험 향상: 사용량 한도에 따른 API 전환이 원활하게 이루어지도록 하여 사용자에게 중단 없는 경험을 제공합니다.
  • 로그 및 모니터링: 각 API의 사용량을 기록하고 로그를 통해 시스템 상태를 모니터링합니다.

 

1. 웹으로 먼저 모든 기능구현 완료하기 (추후 코틀린 웹뷰 사용하여 어플 빌드)

2. 추가로 호스팅을 하여 load할 것인지, 로컬에서 로드할 것인지 생각해볼 것 (호스팅 비용 고려)

2. api키 노출 우려 때문에 무조건 호스팅 필요. 로컬에서 절대x

3. 회원제를 추가해서 결제시스템 추가 후, 회원인 사람은 횟수제한을 둘 것인지 말 것인지 생각해볼 것

3-1. 회원제를 한다면, db는 어떤 서비스로 관리할 것인지 생각해 볼 것 (몽고, 마리아, 포스트그레 중 1)

3. 간단한 회원가입으로 회원제, 결제시스템 적용 / 비회원 하루 3회 무료 / 회원가입 후 하루 15회 무료

3-1. 유료 결제는 후원 형태로. 후원 결제 시 하루 100건 무료 (1회 결제시 평생 무료. 추후 네이버 지도 api 요금에 따라 변경될 소지 있음)

3-2. 회원 db는 몽고db사용

4. 사용되어질 음식이나 식당 이미지들이 저작권에 걸리는지, 피해갈 수 있는 방법

5. 왠만한 모든 아이콘은 ai 생성 사용

6. 사용자 경험에 불편함이 없게 멀티스레드 느낌으로 코드 구현 하도록

7. 고민하지말고 일단 당장 시작

728x90