Search

#019 #CI/CD-02 #프로파일 설정

목표

1. 세 종류의 yml을 만든다. ( application / application-dev / application-prod ) 2. application.yml 에서는 어떤 모드를 선택할 것인지에 대한 설정 3. application-dev.yml 에서는 개발용으로 사용하기 위한 세팅 4. application-prod.yml 에서는 배포용으로 사용하기 위한 세팅
Java
복사

application.yml 설정

spring: profiles: active: - dev
Java
복사
설명
여기서 dev 모드 / prod모드를 설정한다.
주요하게 다른 점은 dev모드는 h2 데이터 베이스를 사용하고, prod모드는 mySql을 사용한다는 것이다.

application-dev.yml 설정

server: servlet: encoding: charset: utf-8 force: true session: tracking-modes: COOKIE timeout: 30m port: 8080 tomcat: max-swallow-size: -1 # -1은 제한 없음을 의미합니다. spring: mustache: servlet: expose-session-attributes: true expose-request-attributes: true datasource: driver-class-name: org.h2.Driver url: jdbc:h2:mem:test;MODE=MySQL username: sa password: h2: console: enabled: true sql: init: mode: always data-locations: - classpath:db/data.sql jpa: hibernate: ddl-auto: create show-sql: true properties: hibernate: format_sql: true default_batch_fetch_size: 10 defer-datasource-initialization: true open-in-view: false servlet: multipart: maxFileSize: 10MB # 파일 하나의 최대 크기 maxRequestSize: 30MB logging: level: org.hibernate.orm.jdbc.bind: TRACE com.example.final_project: DEBUG
Java
복사
설명
h2 설정 확인
더미 파일 확인 → db/data.sql
open-in-view → false
포트 → 8080
log 설정 → debug 이상의 에러만 뜨게 설정,

application-prod.yml 설정

server: servlet: encoding: charset: utf-8 force: true # url rewrite 문제 해결 session: tracking-modes: cookie port: 5000 # 배포 시 방화벽이 열려 있는 포트가 5000 spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/ropatestdb # AWS 호스트 username: ropa # AWS USERNAME password: ropa1234 # AWS PASSWORD jpa: hibernate: ddl-auto: none # 배포 후 서버가 문제가 생기면 DB가 다시 만들어 지지 않도록 설정 properties: hibernate: default_batch_fetch_size: 10 dialect: org.hibernate.dialect.MySQLDialect # JPA 방언 설정 open-in-view: false # true 는 세션이 서버에서 머물고 false 는 서비스에서 소멸한다. logging: level: org.hibernate.orm.jdbc.bind: INFO # 배포하고 나면 INFO 부터 보면 된다. com.example.final_project: DEBUG # DEBUG 이상의 에러 뜨도록 설정
Java
복사
설명
배포시 MySQL로 배포를 하기 때문에, 해당 프로그램을 사용하는 환경을 세팅해준다. 그래서 datasource: 가 변경이 되었다.
현재는 실제 배포환경인 RDS로 테스트 해보는 것이 아니고, MySQL을 로컬환경에 맞춰서 문법 정도만 잘 작동하는 지 테스트 하는 것이다.
그래서 urllocalhost
username/password는 배포시 조건과 같게 만들어도 무방하다.
포트 번호
NginX 프록시 서버를 허용하기 위한 5000번 설정
방언 설정
mySQL사용환경을 위한 방언 설정
dialect: org.hibernate.dialect.MySQLDialect
로깅 레벨
배포시엔 INFO레벨 이상만 체크
DEBUG이상의 에러가 뜨도록 설정
org.hibernate.orm.jdbc.bind: INFO
com.example.final_project: DEBUG

배포시 포트 5000을 사용하는 이유??

설명
엘라스틱 빈스톡으로 프로젝트를 생성하면 위의 그림과 같이 로드밸런서 → EC2 순서의 구조를 가지게 된다.
이 때 해당 EC2의 내부는 다시 NginX서버와 우리가 코드를 작성한 JAVA서버의 구조를 가지게 된다.
이 NginX 서버는 프록시 서버의 역할로 JAVA서버를 캡슐화 / 캐싱 / 보안등 여러가지 역할을 담당하게 되고, 이 기능을 수행한뒤 기존 요청을 JAVA서버로 다시 전달 한다.
이 요청이 JAVA서버로 전달 될 때 “서버 입구”의 번호가 포트번호 5000번이 되는 것이다.
그래서 엘라스틱 빈스톡 생성시 NginX프록시 서버가 자동 생성이 되기 때문에, 이 JAVA서버는 NginX서버가 접근할 수 있는 5000번을 열어줘야 된다.