대기열 서비스의 운영 관측 가능성을 확보하기 위해 Prometheus와 Grafana 기반 모니터링 환경을 구성했다.
기존에는 Spring Boot Actuator에서 노출되는 메트릭을 Prometheus에서 수집하고 PromQL로 직접 조회하는 수준이었다.
이번 작업에서는 Grafana를 추가하여 Prometheus에 수집된 메트릭을 대시보드 형태로 시각화하고, 부하 테스트 중 애플리케이션의 상태 변화를 실시간으로 확인할 수 있도록 구성했다.
이번 테스트의 목적은 단순히 모니터링 도구를 실행하는 것이 아니라, 실제 대기열 진입 API에 요청을 발생시켰을 때 다음 운영 지표가 정상적으로 수집되고 시각화되는지 검증하는 것이다.
| 지표 | 목적 |
|---|---|
| HTTP 요청 처리율 | 초당 요청 처리량 확인 |
| p95 응답 시간 | 상위 지연 구간 응답 시간 확인 |
| JVM Heap 메모리 사용량 | 부하 발생 중 메모리 사용 추이 확인 |
| HTTP 5xx 에러율 | 서버 오류 발생 여부 확인 |
| API별 요청 수 | 테스트 대상 API 요청 증가 여부 확인 |
이번 모니터링 환경은 다음 흐름으로 구성했다.
Spring Boot Actuator
↓
Prometheus
↓
Grafana
각 구성 요소의 역할은 다음과 같다.
| 구성 요소 | 역할 |
|---|---|
| Spring Boot Actuator | 애플리케이션의 HTTP, JVM, 시스템 메트릭 노출 |
| Micrometer Prometheus Registry | Actuator 메트릭을 Prometheus 형식으로 변환 |
| Prometheus | /actuator/prometheus 엔드포인트를 scrape하여 메트릭 수집 |
| Grafana | Prometheus에 저장된 메트릭을 대시보드로 시각화 |
| k6 | 대기열 진입 API에 부하를 발생시키는 테스트 도구 |
Prometheus는 메트릭 수집과 저장을 담당한다.
Grafana는 Prometheus에 저장된 시계열 데이터를 조회하여 운영자가 보기 쉬운 형태로 시각화하는 역할을 담당한다.
| 항목 | 내용 |
|---|---|
| 애플리케이션 | queue-api |
| Java 버전 | Java 17 |
| 메트릭 노출 | Spring Boot Actuator |
| 메트릭 수집 | Prometheus |
| 시각화 도구 | Grafana |
| 부하 테스트 도구 | k6 |
| 테스트 대상 API | POST /api/v1/queues/enter |
| 애플리케이션 포트 | 8081 |
| Prometheus 포트 | 9090 |
| Grafana 포트 | 3000 |
queue-api 실행 후 Spring Boot Actuator의 Prometheus 엔드포인트에 접근하여 메트릭이 정상적으로 노출되는지 확인했다.