Skip to content

[refactor] Tracking 도메인 트랜잭션 내부 외부 API·Redis 호출 분리 #296

Description

@pooreumjung

📖 작업 개요

  • 트래킹 세션 종료/생성/GPS publish 등에서 @transactional 메서드 내부에 외부 API(기상청) 호출이나 Redis 호출이 섞여 있어 DB 커넥션을 오래 점유하는 문제를 개선한다.

🧩 작업 내용

  • TrackingSessionService.complete()weatherService.getTemperature()(최대 3초 블로킹) 호출을 DB 저장 트랜잭션 밖으로 분리
  • TrackingSessionService.create() — 마일스톤 초기화(Redis SET+EXPIRE)를 DB 저장 트랜잭션과 분리할지 검토
  • TrackingGpsPublisher.publish()readOnly 트랜잭션 내 Redis Stream publish 분리 검토 (고빈도 WebSocket 경로)
  • TrackingSessionExpiryScheduler.expireStaleSessions() — 반복문 안에서 세션 수만큼 Redis GET을 호출하는 구조 개선(배치 조회 등)

📱 관련 화면 / 기능

  • 지도
  • 등산 기록
  • 코스 추천
  • 커뮤니티
  • 기타: 실시간 GPS 트래킹

💬 기타 사항

  • complete()는 세션 종료 시 매번 호출되는 경로라 우선순위가 가장 높고, 나머지 3개는 함께 검토 권장

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions