모니터링
기술노트
📊 모니터링 (Monitoring)
모니터링은 시스템의 상태와 성능을 지속적으로 관찰하고 측정하여, 현재 시스템이 정상적으로 동작하고 있는지 확인하는 모든 활동을 의미합니다. 장애가 발생했을 때 이를 빠르게 감지하고, 잠재적인 문제가 발생하기 전에 미리 예측하여 대응하기 위한 필수적인 과정입니다.
🤔 무엇을 모니터링해야 하는가?
- 인프라 모니터링 : 서버의 CPU 사용량, 메모리 사용량, 디스크 공간, 네트워크 트래픽 등 하드웨어 리소스의 상태를 확인합니다.
- 애플리케이션 성능 모니터링 (APM, Application Performance Monitoring) : 애플리케이션의 응답 시간, 처리량(TPS), 에러 발생률, 외부 서비스 호출 시간 등 애플리케이션 자체의 성능 지표를 측정합니다.
- 로그 모니터링 : 시스템과 애플리케이션이 남기는 로그 데이터를 수집하고 분석하여, 에러의 원인을 파악하거나 특정 이벤트의 발생을 감지합니다.
- 사용자 경험 모니터링 (RUM, Real User Monitoring) : 실제 사용자의 브라우저에서 페이지 로딩 시간, 상호작용 시간 등을 측정하여, 사용자가 체감하는 성능을 파악합니다.
🔔 알림 (Alerting)
모니터링은 단순히 데이터를 수집하는 것에서 그치지 않고, 미리 정해둔 임계값(Threshold)을 넘어서는 이상 징후가 발생했을 때, 담당자에게 즉시 알림(Alert)을 보내는 과정까지 포함합니다. (예: CPU 사용량이 5분 이상 90%를 초과하면 슬랙으로 메시지 보내기)
이를 통해 담당자는 장애 상황을 신속하게 인지하고 대응에 나설 수 있습니다.
💡 개발자 핵심 Point
- "모니터링하지 않는 서비스는 이미 장애 상황이다." 라는 말이 있을 정도로, 모니터링은 안정적인 서비스 운영의 기본입니다.
- 개발자는 자신의 코드가 운영 환경에서 어떻게 동작하는지 파악하기 위해, 적절한 로그를 남기고 성능 지표를 노출해야 할 책임이 있습니다.
- 대표적인 오픈소스 모니터링 도구로는 시계열 데이터베이스인 프로메테우스(Prometheus)와 시각화 도구인 그라파나(Grafana) 조합이 널리 사용됩니다.
- Datadog, New Relic과 같은 SaaS 형태의 통합 모니터링 솔루션도 많이 활용됩니다.
- 잘 구축된 모니터링 시스템은 장애 대응뿐만 아니라, 시스템의 성능 병목 지점을 찾아내고 최적화하는 데에도 매우 중요한 데이터를 제공합니다.