1. 관측 가능성
💡 관측 가능성이란?
관측 가능성은 시스템 내부 상태에 대한 깊은 이해를 바탕으로 미래에 발생할 가능성이 있는 이벤트를 예측하는 개념이다.
이를 통해 운영자는 잠재적인 장애를 미리 감지하고, 예측된 정보를 바탕으로 IT 운영을 자동화할 수 있다.
구체적으로, 장애 발생 위험이 있으면 이를 미리 예측하여 운영자에게 알리거나, 서비스에 필요한 리소스를 자동으로 조정하는 방식으로 운영 효율성을 높일 수 있다. 관측 가능성은 시스템을 관리하는 데 있어 예방적이고 능동적인 접근을 가능하게 한다.
모니터링과의 차이점
관측 가능성은 시스템에서 외부로 출력되는 값만을 이용해서 시스템 내부 상태를 이해하고 예측하는 것이다.
모니터링은 블랙박스 테스트와 화이트박스 테스트 영역을 포함하지만, 관측 가능성은 화이트박스 테스트와 예측을 포함한다.
- 블랙박스 테스트: 기능 테스트 - Input이 주어지면 정확한 Output이 나오는 것을 확인하는 테스트
- 화이트박스 테스트: ex) 제어문 확인하기
- [TEST] 블랙박스 테스트 vs 화이트박스 테스트 비교
[TEST] 블랙박스 테스트 vs 화이트박스 테스트 비교
블랙박스 테스트 vs 화이트박스 테스트 비교블랙박스 테스트와 화이트박스 테스트는 소프트웨어의 품질을 보장하기 위해 사용되는 대표적인 테스트 기법으로, 접근 방식과 테스트의 초점이 다
ynslee627.tistory.com
관측 가능성 예시
- Elastic Search를 이용해서 로그를 관리하거나 Dynatrace APM을 이용해서 처리량과 지연시간을 모니터링
- Influx DB와 Telegraph 등을 이용해서 Metric을 수집하고 측정하는 것들도 전부 관측 가능성의 일부
관측 가능성의 특징
- 화이트박스 모니터링을 포함하며 블랙박스 모니터링은 제외된다.
- 관측 가능성은 애플리케이션 내부의 상태를 디버깅할 수 있는 정보를 제공하므로, 장애가 발생한 경우 신속하고 수월하게 대응할 수 있다.
- 관측 가능성은 제공된 결과를 보고 이해하는 수준에 그치지 않고 원하는 계측을 추가할 수 있어야 한다.
- 관측 가능성은 클라우드 네이티브처럼 분산되고 복잡한 시스템에서 발생하는 이벤트에 대한 통찰력, 그리고 태그, 로그 등을 결합해서 마이크로 서비스에 대한 Context 정보를 제공하는 것이 목표이다.
2. 관측 가능성의 주요 요소: 3가지
관측 가능성은 시스템의 내부 상태를 외부에서 관찰 가능하게 만들어, 문제를 발견하고 원인을 파악하는 데 중요한 역할을 한다.
이를 위해 주로 Metric, Log, Tracing이라는 세 가지 주요 구성 요소를 사용한다.
1) Metric
일정 시간 동안 측정된 데이터를 집계하고 수치화한 값으로, 시스템의 전반적인 상태를 이해하는 데 유용하다.
예시
- Queue의 대기 중인 메시지 개수
- 사용 중인 CPU와 Memory 크기
- 서비스에서 초당 처리하는 개수 (초당 처리량, Throughput)
특징
- 시각화: 대부분의 경우 히스토그램이나 게이지 등 차트를 이용해서 시각적으로 표현한다.
- 확장성: 애플리케이션에서 기본으로 제공하는 Metric 이외에 Custom Metric이 필요한 경우가 있다. 이를 위해 API나 SDK를 이용해 계측 데이터를 추가로 개발할 수 있지만, 이는 어려운 작업이다. 대신 패키지 소프트웨어 등을 이용해서 사용하는 경우가 많다.
2) Log
애플리케이션 실행 시 생성되는 텍스트 라인으로 구조적 형식(JSON)이나 비구조적 텍스트 형식으로 제공된다.
목적
- 애플리케이션의 에러와 경고 탐지
- 문제 발생 시 정확한 원인 파악
특징
- Metric이 제공하지 못하는 세부적인 정보를 확인할 수 있다.
- 특지, 레거시 시스템이나 패키지 애플리케이션에서는 Metric보다 Log를 중심으로 시스템 상태를 이해하고 문제를 해결하는 경우가 많다.
3) Tracing
분산 시스템, 특히 마이크로서비스 아키텍처에서 트랜잭션이 이동하는 경로와 처리 과정을 추적하는 기술
목적
- 트랜잭션 처리 과정에서 발생하는 대기 시간 및 지연 시간 확인
- 병목 현상이나 에러를 일으키는 구체적인 원인 파악
- Context, 로그, 태그 등의 메타데이터를 활용해 시스템의 복잡성을 가시화
특징
- 마이크로 서비스는 여러 서비스를 경유하며 트랜잭션을 처리하기 때문에 분산된 시스템 전반의 흐름을 파악하는 게 중요하다.
- 병목 현상, 대기 시간, 오류 원인 등을 세부적으로 확인하여 문제를 해결하는 데 유용하다.
💡 비교와 활용
구성 요소 | 주요 목적 | 특징 |
Metric | 전반적인 시스템 상태를 모니터링 | 집계 데이터, 시각화(히스토그램, 게이지 등), 가능한 Custom Metric |
Log | 에러 및 경고 탐지, 세부 정보 확인 | 비정형 데이터, 문제 원인 파악, 레거시 환경에서 주요 도구로 활용 |
Tracing | 트랜잭션 경로 및 병목 원인 분석 | 분산 시스템의 세부 흐름 추적, 대기/지연 시간 확인 |