콘텐츠로 이동

설정 참조

기본 설정은 src/main/resources/config/application.yml, 환경별 오버라이드는 application-{local,dev,stg,gke,prod}.yml에 있습니다. Helm은 ConfigMap과 Secret 환경변수로 다시 덮어씁니다. 실제 값은 활성 프로파일과 파드 환경을 함께 확인해야 합니다.

프로파일

프로파일 데이터베이스·용도 주요 차이
local H2, 개발 즉시 실행 테스트용 Ed25519 키, 관리 포트 미분리
dev PostgreSQL 개발 Actuator 9090
stg PostgreSQL GKE staging Actuator 9090, Cloud Trace·파티션 프로브
gke GKE 공통 DB env 배선, Cloud Trace·파티션 프로브
prod PostgreSQL 운영 API key LIVE, Hikari 2..10, Swagger 비활성

현재 운영 Helm 조합은 gke,prod입니다. Spring은 뒤 프로파일 값을 우선하지만 prod에 없는 gke 값은 남습니다. 따라서 tracing sampling은 1.0이고 파티션 프로브는 prod가 명시적으로 false로 되돌립니다.

서버와 REST

설정 키 기본값 설명
server.port 8080 REST 트래픽
management.server.port 배포 9090 Actuator 관리 포트
app.i18n.enabled true Accept-Language 기반 메시지
app.cors.allowed-origin-patterns * 운영은 승인 origin으로 제한
app.cors.allow-credentials true credential 포함 CORS
app.swagger.server-url http://localhost:8080 OpenAPI server URL
app.member.purge-grace-days 30 탈퇴 뒤 파기 예정 유예일

주요 환경변수는 APP_CORS_ALLOWED_ORIGIN_PATTERNS, APP_SWAGGER_SERVER_URL, SPRING_PROFILES_ACTIVE입니다.

인증과 credential

설정 키 기본 정책 환경변수
app.jwt.secret HMAC 최소 32바이트, 운영 별도 키 필수 JWT_SECRET
app.jwt.issuer sohri-app-backend 필요 시 property override
app.jwt.access-token-validity-seconds 1800 property override
app.jwt.refresh-token-validity-seconds 1209600 property override
app.api-key.prefix 기본 TEST, prod LIVE 접두 프로파일
app.api-key.type 기본 TEST, prod LIVE 프로파일
app.client-secret.default-ttl-seconds 3600 property override
app.client-secret.min-ttl-seconds 300 property override
app.client-secret.max-ttl-seconds 10800 property override
app.client-secret.private-key-pem Ed25519 PKCS#8 PEM CLIENT_SECRET_SIGNING_PRIVATE_KEY
encryption.secret PII AES-GCM master secret ENCRYPTION_SECRET
blindindex.secret 등가검색 HMAC key BLINDINDEX_SECRET

비밀값은 문서, values, ConfigMap, Git에 넣지 않습니다. 현재 GKE ESO 템플릿의 운영 배선 누락은 보안과 현재 격차에 별도로 기록되어 있습니다.

데이터베이스

설정 키·환경변수 설명
DB_URL PostgreSQL JDBC URL
DB_USERNAME 앱 최소권한 DB 사용자
DB_PASSWORD Secret에서 주입
spring.jpa.hibernate.ddl-auto=none 스키마 자동 변경 금지
spring.sql.init.mode=never schema.sql 자동 실행 금지
spring.jpa.open-in-view=false 트랜잭션 밖 lazy load 금지
hibernate.jdbc.time_zone=UTC timestamptz 바인딩 기준
hibernate.default_batch_fetch_size=100 기본 batch fetch

prod Hikari는 connection timeout 10초, minimum idle 2, maximum pool 10입니다. 물리 스키마 변경은 sohri-db에서 수행합니다.

Graph Builder와 음성

설정 키 기본값·의미 환경변수
sohri.dm.base-url Graph Builder base URL SOHRI_DM_BASE_URL
sohri.dm.api-version v1 SOHRI_DM_API_VERSION
sohri.audio.api-base-url 응답 audio proxy URL base SOHRI_AUDIO_API_BASE_URL
sohri.audio.archive.bucket 비면 음성 프록시만 503 SOHRI_AUDIO_ARCHIVE_BUCKET
sohri.audio.archive.storage-endpoint GCS JSON API endpoint SOHRI_AUDIO_ARCHIVE_ENDPOINT
sohri.audio.archive.read-timeout-millis 10000 SOHRI_AUDIO_ARCHIVE_READ_TIMEOUT_MILLIS

Graph Builder URL은 검증 호출에만 사용합니다. Socket Backend URL 설정은 존재하지 않으며 App Backend가 Socket Backend를 직접 HTTP 호출하지 않습니다.

관측

설정 키 기본값 설명
management.endpoints.web.exposure.include health,info,metrics,prometheus 관리 엔드포인트
management.endpoint.health.show-details never 상세 비노출
management.tracing.sampling.probability 0.1 gke는 1.0
sohri.observability.cloud-trace.enabled false gke/stg에서 활성
sohri.observability.cloud-trace.project-id 자동 ADC 우선 GCP_PROJECT_ID
sohri.observability.partition-probe.enabled false gke/stg에서 활성, prod에서 비활성
.interval-millis 3600000 프로브 주기
.initial-delay-millis 60000 최초 지연
.query-timeout-seconds 10 카탈로그 질의 timeout
.default-rows-scan-limit 1000 DEFAULT 행수 확인 상한

운영 포트와 메트릭 해석은 운영과 관측, API 표면은 REST API 참조를 참고하세요.