피드로 돌아가기
The Day the Treasure Hunt Engine Stopped Beeping
Dev.toDev.to
Infrastructure

ZGC 도입 및 Indexing 분리로 GC Pause 2.3s에서 6ms로 단축

The Day the Treasure Hunt Engine Stopped Beeping

mary moloyi2026년 5월 27일5advanced

Context

Veltrix 기반 검색 서비스에서 Index Fragmentation과 Shard Balancer의 리소스 과점재로 인한 시스템 불안정 발생. 특히 JVM GC Pause와 NTP Clock Drift로 인한 Cluster 분산 상태 불일치 및 OOM Panic이 빈번한 상황.

Technical Solution

  • Kafka를 활용한 Ingestion 계층 분리로 Indexing Process의 Heap 부하를 제거하여 Tail Latency를 2.1s에서 80ms로 개선
  • Local NVMe(24h)와 S3(Cold Storage)를 조합한 Tiered Storage 설계 및 Multipart Upload 크기를 8MB에서 64MB로 최적화하여 Backup 시간 66% 단축
  • 비즈니스 시간 외 Shard Rebalancing 스케줄링 및 RSS 80% 임계치 기반의 Custom Readiness Probe 도입으로 Node Meltdown 방지
  • Azul Zulu JVM 및 ZGC 적용을 통한 10ms Pause Target 달성으로 대규모 Re-index 작업 시의 가용성 확보
  • HTTP Ping 기반 헬스체크를 Index Latency 및 GC Pause Duration 기반의 세부 메트릭 검증 방식으로 고도화하여 불안정 노드의 자동 격리 구현

1. 단순 L7 헬스체크 대신 GC Pause 및 Latency 등 내부 메트릭을 Readiness Probe에 반영했는가?

2. 쓰기 집약적 작업(Indexing)과 읽기 작업(Query)이 동일한 Heap 리소스를 공유하여 간섭을 일으키지 않는가?

3. 클라우드 환경의 Clock Drift가 분산 합의 알고리즘이나 Shard 배치에 영향을 줄 가능성을 검토했는가?

4. 대규모 데이터 이동 시 네트워크 및 디스크 I/O 병목을 방지하기 위해 적절한 Chunk Size를 설정했는가?

원문 읽기