yeollow / return-home-safely

Apache License 2.0
1 stars 0 forks source link

[API] : api module #25

Open yeollow opened 3 years ago

yeollow commented 3 years ago

Spring Boot Api Module

workflow 상기 workflow는 개발환경(local, dev, prod)에 따라 아래와 같이 다르게 구성

우선 Batch작업을 통해 JpaItemWriter로 DB에 저장. Batch module의 Bigdata Pipelining구축 및 Spark Application 개발이 완료되면 연계 진행 및 Kubernetes orchestration 공부 및 진행

Batch Job 을 통해 저장된 MySQL data를 front요청 시 반환토록 한다.

yeollow commented 3 years ago

MySQL local 연동 과정

  1. apt install을 통해 mysql-server를 다운받은 뒤 yeollow user를 생성한다.

    • mysql -u root -p 접속
    • CREATE user yeollow@localhost IDENTIFIED BY 'yeollow'를 통해 yeollow 계정과 비밀번호 설정
      • 해당 프로젝트에서는 계정의 이름과 비밀번호를 yeollow로 지정.
      • 외부접근 필요 시 CREATE user yeollow@% IDENTIFIED BY 'yeollow'를 통해 외부 접근 허용
    • 계정 생성 시 계정이 접근할 수 있는 database를 생성
      • 해당 프로젝트에서는 return_home_safely database를 CREATE database return_home_safely 명령어를 통해 생성
  2. MySQL에 대한 Datasource를 application-local.yml 파일에 정의.

    • Datasource란? : JDBC로 DB에 접근하면 접근 시 마다 connection을 맺고 끊는 작업이 필요하다. 이 connection을 맺고 끊는 작업을 줄이기 위해서는 connection pool의 생성이 필요하며 java에서 Datasource는 이러한 connection pool을 지원하기 위한 인터페이스 이다.
    • Spring boot에는 tomcat WAS가 내장되어 있어 connection pool을 제공하기 때문에 Datasource를 직접 구현하여 코드에서 connection을 관리할 필요가 없다. spring-boot-starter dependency를 build.gradle에 추가하면 자동으로 Datasource관리를 위한 구현체인 HikariCP를 제공하며 Datasource properties는 application.yml에서 설정이 가능하다.
  3. MySQL에 Spring Batch작업을 위한 metadata table을 추가한다.

    • Spring Batch에서는 Batch Application을 운영하기 위한 여러 metadata table이 나뉘어져 있으며 해당 metadata 테이블들은 여러 DB에 따른 Schema-*.sql 파일에서 찾아볼 수 있다. Meta-Data Schema Appendix 참조
  4. IntelliJ에서 MySQL을 연동한다.

    • database tab에서 datasource -> MySQL을 선택하여 연결코자 하는 jdbc url 및 user정보 등을 입력 후 연동하여 사용한다.
yeollow commented 3 years ago

application-local.yml datasource properties

yml파일의 일부, datasource부분만 발췌함 dev / prod 등 다른 Spring profile에서는 yml파일이 달라질 수 있음

spring:

  jpa:
    generate-ddl: true
    database: mysql
# MySql을 ORM database로 사용하겠다는 명세

  datasource:
    url: jdbc:mysql://localhost:3306/return_home_safely?serverTimezone=UTC&characterEncoding=UTF-8
    driver-class-name: com.mysql.cj.jdbc.Driver
    username: yeollow
    password: yeollow