인포그랩
home
회사 소개
home

Grafana를 이용한 Spring Boot Observability 구현

이 과정에서는 옵저버빌리티의 개념, 필요성, 기존 모니터링과의 차이점, 그리고 Grafana 스택을 활용한 Spring Boot 애플리케이션의 옵저버빌리티 구현 방법을 배웁니다.

소개

이 과정에서는 옵저버빌리티(Observability)가 무엇인지, 왜 필요한지, 기존 모니터링과의 차이점은 무엇인지에 대해 알아보고, Grafana 스택을 사용하여 Spring Boot 애플리케이션의 옵저버빌리티를 구현하는 방법을 학습합니다.

옵저버빌리티란 무엇인가요?

옵저버빌리티(관찰 가능성)은 시스템의 외부 출력을 기반으로 복잡한 시스템의 내부 상태를 추론할 수 있는 능력입니다. 현대 애플리케이션 개발의 맥락에서 옵저버빌리티는 실행 중인 애플리케이션의 동작에 대한 세부적인 인사이트를 제공하기 위해 다양한 소스로부터 데이터(로그, 메트릭 및 추적)를 수집하고 분석하는 것을 의미합니다.
옵저버빌리티는 오늘날의 동적 아키텍처와 멀티 클라우드 컴퓨팅 환경에서 매우 중요합니다. IT, DevOps 및 SRE 팀은 이를 통해 대시보드, 서비스 의존성 맵 및 분산 추적과 같은 시각화의 도움을 받아 원격 측정 데이터를 디코딩하고 애플리케이션, 서비스 및 인프라가 어떻게 성능을 발휘하고 있는지 이해할 수 있습니다. 이를 통해 성능 문제를 사전에 감지하고 빠르게 대응하여 문제를 해결할 수 있습니다.

옵저버빌리티가 필요한 이유는 무엇입니까?

분산 IT 시스템에서는 많은 구성 요소가 상호 작용합니다. 하나의 구성 요소가 고장이나 문제를 겪으면 상관없어 보이는 시스템 요소들에 영향을 줄 수 있습니다.
끊임없이 변화하는 클라우드 환경에서는 상호연결된 애플리케이션, 네트워크 및 장치에서 단일 변경사항이 광범위한 영향을 미칠 수 있으며 이러한 변화는 지속적으로 발생합니다. 옵저버빌리티는 느린 네트워크 또는 장치 구성 오류와 같은 문제를 식별하고 다른 구성 요소에 미치는 잠재적인 영향을 이해할 수 있게 해줍니다. 예상치 못한 일이 발생했을 때 모니터링은 발생한 시기를 알려줄 수 있지만, 옵저버빌리티는 예상치 못한 일을 확인하는 데 도움을 줍니다.
옵저버빌리티는 분산 IT 시스템의 성능을 평가, 모니터링 및 개선할 수 있기 때문에 중요합니다. 기존의 모니터링 방법보다 훨씬 효과적입니다. 종단 간 관찰 플랫폼은 사일로를 허물고 협업을 촉진하는 데 도움이 될 수 있습니다. 문제를 사전에 진단, 분석하고 원인을 추적할 수 있습니다.
옵저버빌리티는 IT 조직에 클라우드 네이티브 환경의 많은 데이터 소스에 대한 진정한 가시성을 제공합니다. 옵저버빌리티의 세 가지 기둥은 로그, 메트릭트레이스입니다. 풀 스택 옵저버빌리티(Full Stack Observability)을 통해 멀티 클라우드 에코시스템의 성능을 실시간 및 기록으로 추적할 수 있습니다. 하드웨어, 소프트웨어, 클라우드 인프라 구성 요소, 컨테이너, 오픈 소스, 마이크로 서비스 등에서 생성된 엔드포인트 및 서비스에서 데이터를 종합할 수 있습니다.

모니터링(Monitoring)이란?

모니터링은 개별 시스템의 상태를 평가하는 방법입니다. 미리 정의된 메트릭 및 로그를 사용하여 오류 및 사용 패턴을 추적하고 서버 활용률, 응답 시간 및 처리량을 쉽게 파악할 수 있습니다. 모니터링 도구를 사용하면 고립된 문제를 해결하는 데 도움이 됩니다. 그러나 수많은 의존성이 존재하는 좀더 복잡한 클라우드 네이티브 애플리케이션에서는 예측하기 어려운 문제가 있을 수 있습니다. 이 경우 복잡성을 관리하는 데 도움이 되는 도구가 필요합니다.

옵저버빌리티와 모니터링의 차이점은?

옵저버빌리티는 종종 인프라 모니터링 또는 애플리케이션 성능 모니터링(APM)과 함께 언급됩니다. 두 가지는 관련되어 있지만 동일하지 않습니다. 모니터링 시스템의 성능 및 동작에 대한 데이터를 수집하고 분석하여 문제를 식별하고 진단한 다음, 시스템이 예상대로 작동하는지 확인하는 작업이 포함됩니다. 이를 위해 확립된 표준에 따라 데이터를 평가합니다. 예를 들어, 보다 오래된 IT 운영 모니터링은 소수의 항목에 대한 상태 확인에 중점을 두었습니다. 이와는 대조적으로 최신 클라우드 아키텍처에서는 시스템이 너무 복잡하여 메트릭 수가 크게 증가하고 데이터 분석 문제가 더 커집니다. 옵저버빌리티는 이러한 복잡한 시스템을 이해하고 관리하기 위한 보다 전체론적인 접근 방식입니다. 시스템 동작에 대한 데이터 수집뿐만 아니라 시스템의 내부 작동 및 상호 작용 방식에 대한 깊은 이해도 포함됩니다.
모니터링과 옵저버빌리티의 주요 차이점은 모니터링이 데이터 수집에 초점을 맞추는 반면, 옵저버빌리티는 해당 데이터를 이해하고 해석하여 시스템의 동작과 성능을 더 깊이 이해하기 위해 중점을 둔다는 점입니다. 따라서 옵저버빌리티는 복잡한 시스템 관리에 대한 보다 능동적이고 전체론적인 접근 방식을 제공하여 팀이 심각한 문제가 되기 전에 문제를 식별하고 해결할 수 있도록 합니다.

Grafana 스택으로 옵저버빌리티 구현

옵저버빌리티는 로그(Log), 메트릭(Metric), 트레이스(Trace)으로 구성됩니다.
Grafana에서 다음 도구 세트를 이용하여 Spring Boot 애플리케이션의 옵저버빌리티를 구현합니다.

사전 준비사항

실습을 시작하기 전에 준비되어야 하는 사항은 다음과 같습니다.
도구 세트 및 Spring Boot 애플리케이션을 배포할 Kubernetes 클러스터가 구축되어 있어야 합니다.
과정을 수행하여 필요한 도메인과 SSL/TLS 인증서를 사용할 수 있도록 구성되어 있어야 합니다.
과정을 수행하여 Prometheus와 Grafana를 배포하고 Grafana에 Prometheus Data source가 구성되어 있어야 합니다.
과정을 수행하여 Loki와 Promtail을 배포하고 Grafana에 Loki Data source가 구성되어 있어야 합니다.
과정을 수행하여 Tempo를 배포하고 Grafana에 Tempo Data source가 구성되어 있어야 합니다.