[Pilot Test Analysis System] 일간 리포트 데이터 모델 개편 및 공간 쿼리 최적화

2 min read

분석 리포트의 구조적 간소화를 위해 불필요한 인지 반응 및 위험 사례 지표를 제거하고, 남은 데이터 모델에 맞춰 리포트 생성 로직 및 정적 지도 API 연동 방식을 개편했다. 동시에 PostgreSQL 데이터베이스에서 공간 쿼리 시 발생하는 성능 저하 문제를 해결하고 인프라의 보안과 안정성을 강화했다.

[Java / API] 리포트 데이터 모델 간소화 및 직렬화 안정화

  • 기존 리포트 데이터 모델이 복잡하여 불필요한 연산이 발생하고 직렬화 과정에서 오류가 자주 발생했다.
  • 활용도가 낮은 인지 반응 및 위험 사례 관련 지표를 데이터 전송 객체에서 제거하고, 다발지 데이터를 전용 응답 객체로 변환하도록 구조를 개편했다.
  • 응답 데이터 구조가 단순해져 직렬화 예외 발생 가능성이 차단되었으며, 리포트 생성 및 정적 지도 요청 로직이 최적화되었다.

[PostgreSQL / Database] Geography 타입 캐스팅 및 공간 쿼리 최적화

  • 반경 검색 등 공간 쿼리 실행 시 데이터 타입 캐스팅 문제로 인덱스를 타지 못하고 전체 테이블 스캔이 발생하여 100%의 CPU 점유율을 유발했다.
  • 데이터베이스 마이그레이션 스크립트에 Geography 데이터 타입 캐스팅을 명시한 GiST 인덱스를 추가했다.
  • 공간 쿼리의 실행 계획이 인덱스 스캔으로 변경되어 데이터베이스의 CPU 부하가 정상적인 수준으로 감소했다.

[Docker / Infrastructure] 데이터베이스 보안 강화 및 헬스체크 부하 완화

  • 데이터베이스 포트가 모든 호스트에 개방되어 있었고, 컨테이너 헬스체크 방식이 쉘 스크립트 기반으로 설정되어 상시 오버헤드가 발생했다.
  • 포트 바인딩을 127.0.0.1로 제한하고, 헬스체크 주기를 늘림과 동시에 실행 방식을 직접 명령어 호출 모드로 변경했다.
  • 외부 접근을 차단하여 보안성을 높였고, 비효율적인 헬스체크에 의한 컨테이너 내부 리소스 낭비를 줄였다.