Day 89 · 4/5
🌳 고급 고급

Observability가 뭔가요?

쉽게 이해하기

자동차 계기판을 떠올려보세요. 속도계, 연료계, 엔진 온도계 등이 있어야 차의 상태를 알 수 있습니다. Observability는 소프트웨어에 이런 계기판을 다는 것과 같습니다. 로그, 지표, 추적 데이터를 통해 시스템이 지금 어떤 상태인지, 어디서 문제가 생겼는지 알 수 있습니다.

핵심 정리

시스템 내부 상태를 외부에서 관찰하고 이해할 수 있는 능력입니다.

자세히 알아보기

Observability(관찰 가능성)는 시스템의 건강 상태를 파악하고 문제를 진단하기 위한 능력입니다. 모니터링과 비슷하지만 더 넓은 개념입니다. 모니터링은 '정해진 지표를 확인'하는 것이고, Observability는 '예상하지 못한 문제도 찾을 수 있도록 충분한 정보를 제공'하는 것입니다. Observability의 세 가지 기둥이 있습니다. 첫째, 로그(Logs)입니다. 시스템에서 일어난 이벤트를 텍스트로 기록합니다. '사용자 A가 로그인했다', '결제 API 호출 실패' 같은 정보가 담깁니다. 둘째, 지표(Metrics)입니다. CPU 사용률, 메모리 사용량, API 응답 시간, 에러율 같은 숫자 데이터를 수집합니다. 셋째, 추적(Traces)입니다. 하나의 요청이 여러 서비스를 거쳐가는 경로를 추적합니다. 마이크로서비스 환경에서 특히 중요합니다. 예를 들어 사용자가 '결제가 느려요'라고 신고했다고 해보세요. 로그를 보면 어떤 API 호출이 있었는지 알 수 있고, 지표를 보면 데이터베이스 응답 시간이 평소보다 10배 느린 것을 발견할 수 있습니다. 추적 데이터를 보면 결제 서비스 → 재고 서비스 → 데이터베이스 순서로 호출이 이루어졌고, 재고 서비스에서 병목이 생겼음을 정확히 파악할 수 있습니다. 실무에서는 Prometheus(지표), ELK Stack(로그), Jaeger나 Zipkin(추적) 같은 도구를 조합해서 씁니다. 최근에는 Datadog, New Relic, Grafana Cloud처럼 세 가지를 통합 제공하는 플랫폼이 인기입니다. 서비스가 복잡해질수록 Observability의 중요성은 더 커집니다.