1) 세션/인증
- 세션 저장 위치: JSESSIONID 메모리 세션이면 깨짐 → Spring Session(JDBC/Redis) 또는 JWT로 외부화.
- 쿠키/서명 키 일관성: 쿠키 서명/암호화 키, JWT secret, SSO 관련 키가 모든 서버에서 동일해야 함(Secret Manager로 통합).
- SSO 콜백 경로: 콜백 URL은 LB로 들어오게 구성(특정 서버 고정 금지).
2) 스토리지/파일
- 업로드/첨부 파일 저장소: 로컬 디스크 저장 금지 → S3(오브젝트) 또는 EFS(공유)로 이동.
- 임시파일/리포트 생성 경로: /tmp, 로컬 폴더 의존 제거(서버별 불일치/유실).
3) 캐시/상태
- 로컬 캐시 사용 여부: Caffeine/Guava 등 로컬 캐시는 TTL 짧게 또는 외부 캐시(Redis)로 통일.
- 분산 락 필요 작업 식별: 중복 실행되면 사고나는 로직(정산 배치, 만료 처리, 상태 갱신) 체크.
4) 스케줄러/배치
- @Scheduled 중복 실행 방지: 2대면 2번 돈다 → ShedLock(DB/Redis), Leader Election, 또는 배치 전용 인스턴스로 분리.
- 메시지 컨슈머 중복 처리: Kafka/Rabbit consumer group 설정 확인 + 멱등 처리(중복 메시지 대비).
5) DB/커넥션
- DB 커넥션 풀 합산: maxPoolSize × 인스턴스 수가 DB max_connections 초과 안 하게 조정.
- 트랜잭션/락 전략: 예약/정산처럼 동시성 민감하면 DB 레벨에서 원자성 보장(비관락/낙관락/유니크키).
- 읽기/쓰기 분리 여부: 필요하면 Read Replica 적용(단, 정합성 요구 시 주의).
6) 배포/무중단
- 헬스체크 엔드포인트 분리: /actuator/health에 readiness/liveness 구분(준비 안 된 인스턴스는 LB에서 제외).
- 롤링 배포 시 호환성: 구버전/신버전이 동시에 뜨는 동안 API/DB 스키마 호환 유지(Expand→Migrate→Contract).
- 마이그레이션 실행 주체 단일화: Flyway/Liquibase가 모든 인스턴스에서 동시에 실행되지 않게(전용 job/1회 실행 전략).
빠른 결론(실무에서 제일 자주 터지는 Top 5)
- @Scheduled 중복 실행
- 로컬 파일 저장(업로드/첨부/리포트)
- DB 커넥션 폭증
- 세션/키 불일치
- 롤링 배포 중 스키마/버전 비호환
LIST
'Spring & Backend' 카테고리의 다른 글
| 브라우저 메모리 캐시와 디스크 캐시가 무엇인지 설명해주세요. (0) | 2026.02.12 |
|---|---|
| Keep Alive에 대해 설명해 주세요. (0) | 2026.02.12 |
| Elasticsearch는 언제 써야 하는가 (0) | 2026.02.11 |
| 자바에서 제네릭의 공변, 반공변, 무공변에 대해 설명해 주세요. (0) | 2026.02.11 |
| 인터셉터 , 캐시 (0) | 2026.02.10 |
