- CollectDB 다중 신호 수집 → S&P Global AIS API 단일 수집으로 전환 - sig_src_cd + target_id 이중 식별자 → mmsi(VARCHAR) 단일 식별자 - t_vessel_latest_position → t_ais_position 테이블 전환 - 레거시 배치/유틸 ~30개 클래스 삭제 (VesselAggregationJobConfig, ShipKindCodeConverter 등) - AisTargetCacheManager 기반 캐시 이중 구조 (최신위치 + 트랙 버퍼) - CacheBasedVesselTrackDataReader + CacheBasedTrackJobListener 신규 추가 - VesselStaticStepConfig: 정적정보 CDC 변경 검출 + hourly job 편승 - SignalKindCode enum: vesselType/extraInfo 기반 선종 자동 분류 - WebSocket/STOMP 전체 mmsi 전환 (StompTrackStreamingService ~40곳) - 모니터링/성능 최적화 코드 mmsi 기반 전환 - DataSource 설정 통합 (snpdb 단일 DB) - AreaBoundaryCache Polygon→Geometry 캐스트 수정 (MULTIPOLYGON 지원) - ConcurrentHashMap 적용 (VesselTrackStepConfig 동시성 버그 수정) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
103 lines
3.9 KiB
Markdown
103 lines
3.9 KiB
Markdown
# 일일 캐시 성능 개선 요약보고서
|
|
|
|
| 항목 | 내용 |
|
|
|------|------|
|
|
| 측정일 | 2026-02-07 |
|
|
| 대상 | 선박 항적 리플레이 서비스 (WebSocket 스트리밍) |
|
|
| 개선 내용 | 일일(Daily) 집계 데이터 7일분 인메모리 캐시 적용 |
|
|
| 측정 건수 | 12건 (CACHE 3, DB 2, HYBRID 5, CACHE+Today 2) |
|
|
|
|
---
|
|
|
|
## 1. 핵심 성능 개선 지표
|
|
|
|
| 지표 | DB 경로 (개선 전) | CACHE 경로 (개선 후) | 개선율 |
|
|
|------|-------------------|---------------------|--------|
|
|
| **응답시간** (만 척 이상) | 8.2초 | 1.4초 | **5.7배 단축** |
|
|
| **응답시간** (수백 척) | 7.2초 | 0.6초 | **12.6배 단축** |
|
|
| **DB 커넥션** (만 척 이상) | 19건 | 2건 | **89% 감소** |
|
|
| **DB 커넥션** (수백 척) | 8건 | 3건 | **63% 감소** |
|
|
| **DB 쿼리 시간** | 1.4 ~ 3.5초 | 0초 | **100% 절감** |
|
|
| **포인트 압축률** | SQL 처리 | 앱 레벨 95 ~ 99% | 동등 품질 유지 |
|
|
|
|
---
|
|
|
|
## 2. 경로별 응답시간 비교
|
|
|
|
```
|
|
경로 응답시간
|
|
CACHE (순수) ██ 0.6 ~ 1.4초
|
|
HYBRID (소규모) ██ 1.4초
|
|
HYBRID (중규모) █████ 2.9 ~ 3.7초
|
|
CACHE+Today ████████████ 6.1 ~ 9.7초
|
|
DB (순수) ████████████████ 7.2 ~ 8.2초
|
|
```
|
|
|
|
- **CACHE**: 캐시 범위 내 과거 데이터만 조회 시, 가장 빠른 응답
|
|
- **HYBRID**: 캐시 + DB 병합 — 캐시 비율이 높을수록 DB 부담 경감
|
|
- **CACHE+Today**: 오늘 데이터 포함 시, Hourly/5min 테이블 개별 조회로 커넥션 다수 발생
|
|
|
|
---
|
|
|
|
## 3. DB 커넥션 풀 부담 변화
|
|
|
|
Query DataSource 커넥션 풀 180 기준:
|
|
|
|
| 경로 | 쿼리당 커넥션 | 동시 10쿼리 | 풀 사용률 |
|
|
|------|-------------|------------|----------|
|
|
| CACHE | 2 ~ 3 | ~30 | **17%** (여유) |
|
|
| HYBRID (소규모) | 11 ~ 15 | ~150 | 83% |
|
|
| DB | 8 ~ 19 | ~190 | 100%+ |
|
|
|
|
> 캐시 적용으로 전체 쿼리 중 CACHE 경로 비율이 높아지면, DB 커넥션 풀 전체 부담이 크게 감소한다.
|
|
|
|
---
|
|
|
|
## 4. 간소화 파이프라인 효과
|
|
|
|
캐시 경로에서 원본 데이터 → 3단계 간소화(Douglas-Peucker + 거리/시간 샘플링 + 줌 레벨 샘플링) 적용:
|
|
|
|
| 줌 레벨 | 원본 포인트 | 간소화 후 | 압축률 | 선박당 평균 |
|
|
|---------|------------|----------|--------|-----------|
|
|
| 8 | 7.6M | 153K | 98% | 15 포인트 |
|
|
| 9 | 1.0M | 12K | 99% | 21 포인트 |
|
|
| 10 | 13.5M | 172K | 99% | 16 포인트 |
|
|
| 12 | 14.4M | 260K | 98% | 37 포인트 |
|
|
|
|
- 간소화 CPU 시간: 24ms ~ 1,258ms (DB 대기 없이 순수 CPU 연산)
|
|
- 전 줌 레벨에서 95 ~ 99% 데이터 압축 달성
|
|
|
|
---
|
|
|
|
## 5. 운영 시나리오별 예상 성능
|
|
|
|
| 사용 패턴 | 예상 경로 | 예상 응답시간 | DB 커넥션 |
|
|
|----------|----------|-------------|----------|
|
|
| 과거 1~7일만 조회 | CACHE | **0.6 ~ 1.4초** | 2~3건 |
|
|
| 과거 수일 + 오늘 | CACHE+Today | 6 ~ 10초 | ~56건 |
|
|
| 7일 이전 과거 포함 | HYBRID / DB | 1 ~ 9초 (규모 의존) | 8~45건 |
|
|
|
|
---
|
|
|
|
## 6. 향후 확장 권장안
|
|
|
|
| 시나리오 | 캐시 보존 기간 | 메모리 | 효과 |
|
|
|----------|---------------|--------|------|
|
|
| 현재 | 7일 | 6GB | 1주 이내 CACHE 경로 |
|
|
| 2주 확장 | 14일 | 12GB | 주간 비교 분석 지원 |
|
|
| 1개월 확장 | 30일 | 25GB | 월간 항적 분석 지원 |
|
|
|
|
> 캐시 보존 기간 확장 시 HYBRID 경로 비율이 줄고 순수 CACHE 비율 증가 → DB 부담 추가 경감
|
|
|
|
---
|
|
|
|
## 7. 결론
|
|
|
|
| 항목 | 효과 |
|
|
|------|------|
|
|
| 응답 속도 | DB 대비 **5.7 ~ 12.6배** 단축 |
|
|
| DB 부하 | 커넥션 **63 ~ 89%** 감소, 쿼리 시간 **100%** 절감 |
|
|
| 데이터 품질 | 줌 레벨별 95 ~ 99% 압축, DB 경로와 동등 품질 |
|
|
| 동시 사용자 수용 | DB 커넥션 경합 해소로 동시 처리 가능 수 증가 |
|
|
| 확장성 | 캐시 보존 기간 확장으로 추가 개선 가능 |
|