일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 설정
- Tomcat
- Thymeleaf
- git
- spring
- maven
- MSSQL
- PostgreSQL
- 문서
- oracle
- Eclipse
- SpringBoot
- JDBC
- Core Java
- Spring Boot
- Exception
- error
- jpa
- AJAX
- IntelliJ
- 오픈소스
- myBatis
- Python
- Docker
- Open Source
- JavaScript
- Source
- STS
- ubuntu
- MySQL
- Today
- Total
헤르메스 LIFE
[Spring Boot] Spring Boot 배포전략 본문
프로젝트 개발 후 소스의 배포라는 문제에 맞닥뜨리게 됩니다. 이때, 설정파일에 개발, 스테이지, 운영( 서버가 한대 이상인 경우가 많습니다. ) 등의 환경에 맞는 설정을 분리해서 관리합니다. 그런데, 배포하고 나면 그 분리된 설정파일이 적용되지 않아서 문제를 발생시키는 경우를 많이 접하게 됩니다. 하드코딩은 않하는게 정답이고, 그러한 설정들을 그래서 설정파일로 빼냈는데...
배포시스템을 갖춘 프로젝트라면, 셋팅만 잘하면 아마도 배포 프로세스에 의해 무리없이 적용될 것 같습니다. 하지만 소규모 시스템에서는 개발자가 직접 개발, 운영서버에 배포해야 합니다. 이런 경우 실수가 발생할 수 있습니다.
많은 개발자분들이 고민하신 것 같습니다. 저의 생각도 다른분들과 별반 다르지 않습니다.
문제의 핵심은 간단합니다. 단 한번의 셋팅으로 모든 설정이 한방에 반영되면 해결입니다. ㅎㅎ
설정파일들.
1. logback.xml 파일
2. application.yml 또는 application.properties
3. properties 파일
1. VM arguments ( -Dspring.profiles.active=dev )
2. application.yml 또는 application.properties
application-local.yml
application-dev.yml
application-prod.yml
yml 파일을 properties로 변환하는 페이지 입니다.
3. Logback
Spring Boot 에서 logback 설정을 하는 방법은 여러가지가 있습니다. logback.xml 과 logback-spring.xml 로 관리하는 방법이 대표적일 것 같습니다. 하지만 Spring Boot를 기준으로 개인적인 생각으로는 spring.profile.active 옵션으로 설정하는게 가장 이상적으로 생각됩니다.
logback-local.xml : 일반적으로 Console 로그만 출력하면 될 듯 합니다. SQL Logging 에 대해 고민 필요합니다.
logback-dev.xml : 파일로 로그를 남기면 됩니다.
logback-prod.xml : 파일로 로그를 남기면 됩니다.
이 방법외에 lombok을 사용하는 경우는 application.yml 설정으로 정리할 수 있을 것 같습니다. SQL 출력의 경우를 생각해 봐야 할 듯 합니다.
application.xml >> logging 샘플
# Logging
logging:
level: # 각 package 별로 로깅 레벨을 지정할 수 있다.
root : info
com.study : debug
org.springframework: WARN
pattern:
console: "%-5level %d{yy-MM-dd HH:mm:SSS}[%thread] %logger[%method:%line] - %msg%n"
file: "%-5level %d{yy-MM-dd HH:mm:SSS}[%thread] %logger[%method:%line] - %msg%n"
file:
name: ${user.dir}/log/app_log.log # 로깅 파일 위치이다.
logback:
rollingpolicy:
max-file-size: 1MB #default 10M 로그 파일 하나당 최대 파일 사이즈이다.
max-history: 31 #default 7 로그 파일 삭제 주기이다. 7일 이후 로그는 삭제한다.
file-name-pattern: ${LOG_FILE}.%d{yyyy-MM-dd}.%i.gz
spring:
datasource:
url: jdbc:h2:tcp://localhost/~/jpashop
username: sa
password:
driver-class-name: org.h2.Driver
jpa:
hibernate:
ddl-auto: create
properties:
hibernate:
#show_sql: true
format_sql: true
highlight_sql: true
use_sql_comments: true
format_sql: true
SQL: debug
type:
descriptor.sql=trace
jakarta:
persistence:
sharedCache:
mode: ALL
open-in-view: false
logging:
level:
org:
hibernate:
SQL: debug
type:
descriptor:
sql: trace
show_sql:true는 sout을 sql 로그만 출력합니다.
이보단 org.hibernate.SQL옵션을 통해 SQL을 남기고, 실제 수행되는 시각도 출할 수 있습니다.
4. properties 파일
properties 파일은 생각을 못해봤습니다.
application.yml 파일에 몰아 넣어야 하지 않을까요..?
https://hermeslog.tistory.com/663
https://rutgo-letsgo.tistory.com/118
https://devlog-wjdrbs96.tistory.com/343
'Spring Boot Framework' 카테고리의 다른 글
[Spring Boot] 개발환경 구축 - File Upload (0) | 2023.02.04 |
---|---|
[Spring Boot] 개발환경 구축 - Messages (0) | 2023.02.01 |
[Spring Boot] 개발환경 구축 - Logback (0) | 2023.01.29 |
[Spring Boot] 개발환경 구축 - Hello Thymeleaf (0) | 2023.01.29 |
[Spring Boot] Embedded Server Port 변경 (0) | 2023.01.29 |