v1.0.0 :toc: left :icons: font
이 프로젝트는 대한민국의 음식점 데이터를 활용하여 사용자에게 신뢰할 수 있는 맛집 리스트를 제공하는 애플리케이션입니다. 모범음식점 공공데이터와 전국 일반 음식점 공공데이터를 Go 언어로 전처리하여, "영업" 상태인 음식점 데이터만 선별하였습니다. 추가적으로, Naver 지역검색 API를 활용해 평점이 일정 기준 이상인 음식점만 필터링하고, 이를 데이터베이스에 저장하여 Spring 기반의 RESTful 애플리케이션으로 구현하였습니다.
-
데이터 전처리 (Go)
-
모범음식점 및 전국 일반 음식점 공공데이터 수집
-
영업 상태("영업")인 음식점 데이터 선별
-
API 연동
-
Naver 지역검색 API를 통한 평점 기반 필터링
-
데이터 저장
-
필터링된 데이터를 데이터베이스에 저장
-
백엔드 구현 (Spring)
-
사용자에게 맛집 리스트 및 상세 정보를 제공하는 REST API 제공
-
백엔드 프레임워크: Spring Boot
-
데이터 전처리: Go
-
API 연동: Naver 지역검색 API
-
데이터베이스: MySQL
-
빌드 도구: Gradle (Spring), go build (Go)
-
버전 관리: Git
@startuml actor "사용자" as user rectangle "Spring 애플리케이션" as springApp { [REST API] --> [DB] [REST API] --> [Naver 지역검색 API] } rectangle "데이터 전처리 (Go)" as goApp { [공공데이터 전처리] } user --> [REST API] [공공데이터 전처리] --> [DB] @enduml
-
공공데이터를 다운로드 받은 후,
go
디렉토리로 이동합니다. -
Go 코드를 빌드 및 실행하여 영업 상태의 데이터만 선별하고, Naver API를 통해 평점이 일정 이상인 음식점을 필터링합니다.
-
전처리된 데이터를 데이터베이스에 저장합니다.
cd go
go build .
./go
아래 예시는 application.yml`에서 환경 변수를 활용하는 방법을 보여줍니다. 실제 환경 변수와 매핑되는 부분은 `${…}
형태로 표기됩니다.
spring:
application:
name: hot-place-research
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://${RDB_HOST:localhost}:${RDB_PORT:3306}/${RDB_SCHEMA:hot_place_research}?useSSL=false
username: ${RDB_USER:root}
password: ${RDB_PASSWORD}
jpa:
hibernate:
ddl-auto: ${RDB_DDL-AUTO:update}
show-sql: true
properties:
hibernate:
dialect: org.hibernate.dialect.MySQLDialect
naver:
url:
search:
local: https://openapi.naver.com/v1/search/local.json
image: https://openapi.naver.com/v1/search/image
client:
id: ${NAVER_CLIENT_ID}
secret: ${NAVER_CLIENT_SECRET}
위 설정에서 사용되는 주요 환경 변수는 다음과 같습니다:
-
RDB_HOST
: 데이터베이스 호스트 (기본값:localhost
) -
RDB_PORT
: 데이터베이스 포트 (기본값:3306
) -
RDB_SCHEMA
: 데이터베이스 스키마명 (기본값:hot_place_research
) -
RDB_USER
: 데이터베이스 사용자명 (기본값:root
) -
RDB_PASSWORD
: 데이터베이스 비밀번호 (기본값: 없음) -
RDB_DDL-AUTO
: JPA DDL 설정 (예:update
,create
,none
등) -
NAVER_CLIENT_ID
: Naver API 클라이언트 아이디 -
NAVER_CLIENT_SECRET
: Naver API 클라이언트 시크릿
.
├── go
│ ├── all_restaurant_preprocessing.go
│ ├── model_restaurant_preprocessing.go
│ └── data
│ ├── all_restaurant_sheet.xlsx
│ ├── model_restaurant_sheet.xlsx
│ └── ...
├── java
│ ├── domain
│ │ └── ...
│ ├── infrastracture
│ │ └── ...
│ ├── security
│ │ └── ...
│ └── MinsoleApplication.java
├── resources
│ └── application.yml
├── docs
│ └── api.adoc
├── README.adoc
└── LICENSE
-
모범음식점 공공데이터: [데이터 포털](https://www.data.go.kr/data/15096282/standard.do)
-
전국 일반 음식점 공공데이터: [데이터 포털](https://www.data.go.kr/data/15096283/standard.do?recommendDataYn=Y)
-
Naver 지역검색 API: https://developers.naver.com/docs/serviceapi/search/local/local.md