설정 참조¶
기본 설정은 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 참조를 참고하세요.