You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
VIPS/src/main/resources/application-prd.yml

180 lines
8.0 KiB
YAML

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# Local profile
spring:
servlet:
multipart:
max-file-size: 15MB # 개별 파일 최대 크기를 15MB로 증가, multipart 를 이용시 header, type 등 정보가 붙어서 over head 가 발생할 수 있다고 함.
max-request-size: 150MB # 전체 요청 최대 크기를 150MB로 증가, multipart 를 이용시 header, type 등 정보가 붙어서 over head 가 발생할 수 있다고 함.
config:
activate:
on-profile: prd
datasource:
driver-class-name: org.mariadb.jdbc.Driver
url: jdbc:mariadb://localhost:53306/vips?characterEncoding=UTF-8&allowMultiQueries=true # 실서버 IP : 105.19.10.124
username: vips
password: xit5811807
hikari:
# ==========================================
# 커넥션 풀 크기 설정 (4코어 32GB 서버 기준)
# ==========================================
# 동시에 사용할 수 있는 최대 커넥션 수
# 권장값: (코어수 × 2) + (동시사용자 × 0.1) = (4 × 2) + (300 × 0.1) = 38 → 40
# 이 값을 초과하면 새로운 커넥션 요청이 대기 상태가 됨
maximum-pool-size: 40
# 풀에서 유지할 최소 유휴 커넥션 수
# 권장값: maximum-pool-size의 25% (40 × 0.25 = 10)
# 갑작스러운 부하 증가 시 빠른 응답을 위해 미리 준비된 커넥션 유지
minimum-idle: 10
# ==========================================
# 커넥션 타임아웃 설정
# ==========================================
# 커넥션을 얻기 위한 최대 대기 시간 (밀리초)
# 권장값: 30초 - 네트워크 지연이나 데이터베이스 부하 시 적절한 대기 시간
connection-timeout: 30000
# 커넥션 유효성 검사 타임아웃 (밀리초)
# 권장값: 60초 - 유효성 검사가 너무 오래 걸리지 않도록 제한
validation-timeout: 60000
# ==========================================
# 커넥션 생명주기 관리
# ==========================================
# 커넥션의 최대 생명 시간 (밀리초)
# 권장값: 30분 - 데이터베이스 연결이 너무 오래 유지되지 않도록 제한
max-lifetime: 1800000
# 유휴 커넥션을 제거하기 위한 최소 대기 시간 (밀리초)
# 권장값: 10분 - 메모리 절약과 커넥션 재사용의 균형점
idle-timeout: 600000
# ==========================================
# 커넥션 누수 방지 (수백명 동시 사용 환경, 배치가 있으므로 제외 함.)
# ==========================================
# 커넥션 누수 감지 임계값 (밀리초)
# 권장값: 300초 (5분) - 일반적인 쿼리 실행 시간보다 충분히 큰 값
# 너무 짧으면 정상적인 긴 쿼리도 누수로 감지될 수 있음
# 너무 길면 커넥션 누수 시 메모리 부족 가능성
# leak-detection-threshold: 300000
#hikari.connection-test-query 는 JDBC 4.0 이상을 사용하면 설정하지 않는 것을 권장. (공식문서)
#connection-test-query: select 1
auto-commit: false
# Server configuration
server:
port: 18080
servlet:
session:
timeout: 60m # 세션 타임아웃을 60분으로 증가
cookie:
# ==========================================
# http-only: JavaScript로 쿠키 접근 가능 여부
# ==========================================
# true: document.cookie로 접근 불가 → XSS(Cross-Site Scripting) 공격 방어 (권장)
# false: JavaScript로 쿠키 읽기/수정 가능 → XSS 공격에 취약
# 보안: 항상 true 권장 (개발/운영 환경 모두)
http-only: true
# ==========================================
# secure: HTTPS 연결에서만 쿠키 전송 여부
# ==========================================
# true: HTTPS(https://)에서만 쿠키 전송 → 중간자 공격(MITM) 방어
# - HTTPS 구성 필수
# - HTTP(http://)로 접근 시 쿠키 전송 안됨 → 세션 유지 불가, 로그인 실패
# false: HTTP/HTTPS 모두 쿠키 전송 가능
# - 개발 환경에서 HTTP 사용 가능
# - IP 주소(192.168.x.x)로 접근 가능
# 개발환경: false, 운영환경: true (HTTPS 인증서 적용 후)
secure: false
# ==========================================
# same-site: 크로스 사이트 요청 시 쿠키 전송 제어
# ==========================================
# strict: 같은 사이트에서만 쿠키 전송 (가장 안전하지만 불편)
# - example.com → example.com (O)
# - other.com → example.com (X)
# lax: 일부 크로스 사이트 GET 요청 허용 (권장, 보안과 사용성 균형)
# - 같은 사이트 모든 요청 (O)
# - 외부 링크 클릭(GET) (O)
# - 외부 폼 제출(POST) (X)
# none: 모든 크로스 사이트 요청 허용 (secure: true 필수)
# - 모든 외부 사이트 요청 허용
# 보안: CSRF(Cross-Site Request Forgery) 공격 방어
same-site: lax
# ==========================================
# tracking-modes: 세션 추적 방식
# ==========================================
# cookie: 쿠키로만 세션 추적 (권장, 안전)
# - 세션 ID가 쿠키에만 저장됨
# url: URL에 세션 ID 포함 (비권장, 보안 위험)
# - 예: http://example.com/page;jsessionid=ABC123
# - 세션 ID가 URL에 노출되어 로그, 히스토리에 남음
# - 세션 하이재킹 위험 증가
# ssl: SSL 세션 ID 사용
# 보안: cookie만 사용 권장 (URL 노출 방지)
tracking-modes: cookie
#logback
logging:
config: classpath:logback-spring.xml
file:
path: /app/@projectName@/logs
name: '@projectName@'
logback:
rollingpolicy:
max-file-size: 10MB
max-history: 30
level:
org.springframework: WARN
go.kr.project: INFO
go.kr.project.sql: INFO # datasource-proxy
go.kr.project.sql.binding: INFO # datasource-proxy 파라미터 바인딩된 쿼리 로그
egovframework: INFO
org.mybatis: INFO
# File upload configuration
file:
upload:
path: /app/@projectName@/file
max-size: 10 # 단일 파일 최대 크기 (MB)
max-total-size: 100 # 총 파일 최대 크기 (MB)
max-files: 10 # 최대 파일 개수
allowed-extensions: prn,txt,hwp,jpg,jpeg,png,gif,pdf,doc,docx,xls,xlsx,ppt,pptx,txt,zip
real-file-delete: true # 실제 파일 삭제 여부
sub-dirs:
api-target-list-txt-file: api/target # api 조회 대상 파일
# Juso API configuration
juso:
api:
# key: "U01TX0FVVEgyMDE5MDcxNzE2NTM0OTEwODg5MTY=" # 기존 서버 키
key: "devU01TX0FVVEgyMDI1MDYxOTE1MjgxODExNTg2MTY="
url: "http://10.182.60.20/addrlink/addrLinkApiJsonp.do"
# ===== VMIS 통합 설정 (운영 환경) =====
# 주의: 실제 운영 키/호스트는 배포 환경 변수나 외부 설정(Secret)로 주입 권장
vmis:
# RestTemplate 설정
rest-template:
timeout:
connect-timeout-millis: 10000 # 연결 타임아웃
read-timeout-millis: 12000 # 읽기 타임아웃
connection-pool:
max-total: 100 # 최대 연결 수
max-per-route: 20 # 경로당 최대 연결 수
rate-limit:
permits-per-second: 0 # 초당 5건 제한(5.0)
# External API 설정
external:
api:
url:
base: "http://105.19.10.135:18080/api/v1/vehicles" # VMIS-interface 서버 URL (운영), 105.19.10.135
basic:
old-or-new: "old" # 과거 신규 API 선택
old-url: "/old-basic" # 자동차기본정보
new-url: "/new-basic" # 자동차기본정보
ledger:
old-or-new: "new" # 과거 신규 API 선택, 자동차등록원부(갑)은 연계서버에 old 구현안됨.
old-url: "/old-ledger" # 자동차등록원부(갑)
new-url: "/new-ledger" # 자동차등록원부(갑)