Skip to content

GSM 2학년 1학기 빅데이터 분석 수업에서 사용할 서버 애플리케이션 입니다

License

Notifications You must be signed in to change notification settings

snowykte0426/BigData-Server

Folders and files

NameName
Last commit message
Last commit date
Apr 29, 2025
Mar 11, 2025
Apr 29, 2025
Mar 18, 2025
Apr 3, 2025
Mar 18, 2025
Mar 18, 2025
Apr 29, 2025
Apr 29, 2025
Apr 29, 2025
Mar 16, 2025
Mar 11, 2025
Mar 11, 2025
Mar 25, 2025
Mar 11, 2025
Apr 26, 2025

Repository files navigation

맛집 리스트 애플리케이션

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

설치 및 실행

요구사항

  • Java 17 이상

  • Go 1.15 이상

  • Gradle

  • MySQL 등 관계형 데이터베이스

1. Go 데이터 전처리

  1. 공공데이터를 다운로드 받은 후, go 디렉토리로 이동합니다.

  2. Go 코드를 빌드 및 실행하여 영업 상태의 데이터만 선별하고, Naver API를 통해 평점이 일정 이상인 음식점을 필터링합니다.

  3. 전처리된 데이터를 데이터베이스에 저장합니다.

cd go
go build .
./go

2. Spring 애플리케이션 실행

  1. java 디렉토리(또는 Spring Boot 프로젝트 루트)로 이동하여 애플리케이션을 빌드 및 실행합니다.

cd java
./gradlew bootRun

환경 변수 설정

아래 예시는 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

기여 방법

  1. 저장소를 fork 합니다.

  2. 새로운 브랜치를 생성하여 기능 추가 또는 수정을 진행합니다.

  3. Pull Request를 생성하여 리뷰 요청을 합니다.

라이선스

이 프로젝트는 MIT 라이선스 하에 배포됩니다. 자세한 내용은 [LICENSE](LICENSE) 파일을 참고하세요.

참고 자료

About

GSM 2학년 1학기 빅데이터 분석 수업에서 사용할 서버 애플리케이션 입니다

Resources

License

Stars

Watchers

Forks