관측성
현대 소프트웨어 시스템은 매우 복잡합니다. 마이크로서비스, Cloud 인프라, 분산 시스템의 확산으로 애플리케이션 내부에서 어떤 일이 일어나는지 파악하는 것이 점점 더 어려워졌습니다. 문제가 발생했을 때, 팀은 어디서, 왜 문제가 발생했는지 신속하게 파악해야 합니다.
이때 관측성이 중요합니다. 관측성은 단순한 시스템 모니터링에서 발전하여 시스템 동작을 이해하기 위한 종합적인 접근 방식이 되었습니다. 그러나 효과적인 관측성을 구현하는 일은 단순하지 않습니다. 이를 위해서는 기술적인 개념뿐만 아니라 조직적인 과제에 대한 이해도 필요합니다.
관측성이란 무엇입니까?
관측성(Observability)은 시스템이 출력하는 정보를 검사하여 시스템의 내부 상태를 파악하는 것을 의미합니다. 소프트웨어 시스템에서 이는 애플리케이션과 인프라가 생성하는 데이터를 통해 내부에서 어떤 일이 발생하는지 이해하는 것을 말합니다.
이 분야는 크게 발전해 왔으며, 두 가지 뚜렷한 세대의 관측성 접근 방식으로 이해할 수 있습니다.
첫 번째 세대는 흔히 Observability 1.0이라고 불리며, 메트릭, 로그, 트레이스의 전통적인 「세 기둥」 접근 방식을 중심으로 구축되었습니다. 이 접근 방식에서는 서로 다른 유형의 텔레메트리를 위해 여러 도구와 데이터 저장소가 필요했습니다. 또한 엔지니어가 무엇을 측정할지 미리 정의하도록 요구하는 경우가 많아, 여러 시스템을 유지 관리하는 데 비용이 많이 들고 복잡해졌습니다.
현대적 관측성, 즉 Observability 2.0은 근본적으로 다른 접근 방식을 취합니다. 이는 시스템에서 수행되는 각 작업 단위(예: HTTP 요청 및 응답)에 대해 폭넓고 구조화된 이벤트를 수집하는 것에 기반합니다. 이 접근 방식은 사용자 ID, 요청 ID, Git 커밋 해시, 인스턴스 ID, Kubernetes 파드 이름, 특정 라우트 파라미터, 벤더 트랜잭션 ID와 같은 고 카디널리티(high-cardinality) 데이터를 포착합니다. 일반적인 기준은 시스템 동작을 이해하는 데 도움이 될 수 있는 메타데이터라면 추가하는 것입니다.
이와 같은 풍부한 데이터 수집을 통해 메트릭을 사전에 정의하지 않고도 데이터를 동적으로 다양한 방식으로 분할하고 분석할 수 있습니다. 팀은 이 기본 데이터를 바탕으로 메트릭, 트레이스 및 기타 시각화를 도출할 수 있으며, 계측을 처음 추가할 때 예상하지 못했던 시스템 동작에 대한 복잡한 질문에도 답할 수 있습니다.
그러나 현대적 관측성 기능을 구현하는 데에는 여러 과제가 존재합니다. 조직은 다양한 시스템과 기술 전반에 걸쳐 이러한 풍부한 텔레메트리 데이터를 안정적으로 수집, 처리 및 내보낼 수 있는 방법이 필요합니다. 현대적 접근 방식이 전통적인 경계를 넘어 발전해 왔지만, 관측성의 근본적인 구성 요소를 이해하는 것은 여전히 중요합니다.
관측성의 세 가지 기둥
관측성이 어떻게 발전해 왔고 실제로 어떻게 작동하는지 더 잘 이해하기 위해, 관측성의 세 가지 기둥인 로그, 메트릭, 트레이스를 살펴봅니다.
현대적인 관측성은 이를 개별적인 요소로만 다루는 수준을 넘어섰지만, 이러한 요소들은 여전히 시스템 동작의 다양한 측면을 이해하는 데 기본이 되는 개념입니다.
- Logs - 시스템 내에서 발생하는 개별 이벤트에 대한 텍스트 기반 기록입니다. 이 기록은 특정 사건, 오류, 상태 변경에 대한 상세한 컨텍스트를 제공합니다.
- Metrics - 시간에 따라 수집되는 수치 기반 측정값입니다. 여기에는 카운터, 게이지, 히스토그램 등이 포함되며, 시스템 성능, 리소스 사용량, 비즈니스 KPI를 추적하는 데 도움이 됩니다.
- Traces - 분산 시스템을 통해 요청이 흐르면서 지나가는 경로를 추적하는 기록입니다. 이를 통해 서비스 간 관계를 이해하고 성능 병목 지점을 식별할 수 있습니다.
이러한 기둥을 통해 팀은 시스템을 모니터링하고, 문제를 진단하며, 최적화할 수 있습니다. 그러나 진정한 가치는 세 가지 기둥 전반에 걸쳐 데이터를 효과적으로 수집하고 분석하며 연관시켜, 시스템 동작에 대한 의미 있는 인사이트를 얻는 데에서 나옵니다.
관측성의 이점
관측성의 기술적 측면인 로그, 메트릭, 트레이스는 잘 알려져 있지만, 비즈니스적 이점 또한 그에 못지않게 중요합니다.
Charity Majors, Liz Fong-Jones, George Miranda는 저서 "Observability Engineering" (O'Reilly, 2022)에서 업계 연구와 경험담을 바탕으로, 적절한 관측성 관행을 도입한 조직이 기대할 수 있는 네 가지 핵심 비즈니스 이점을 제시합니다. 이 이점들을 살펴보겠습니다:
더 높은 추가 매출
저자들은 가동 시간(uptime)과 성능 개선을 지원하는 관측성 도구가 코드 품질 향상을 통해 추가 매출 증가로 이어질 수 있다고 설명합니다. 이는 다음과 같은 방식으로 나타납니다:
- 고객 경험 개선: 문제를 신속하게 해결하고 서비스 성능 저하를 예방하면 고객 만족도와 유지율이 높아집니다.
- 시스템 신뢰성 향상: 더 나은 가동 시간은 더 많은 성공적인 트랜잭션과 더 적은 비즈니스 기회 손실로 이어집니다.
- 성능 향상: 성능 병목을 식별하고 최적화할 수 있는 능력은 고객의 지속적인 이용을 이끌어 내는 고응답성 서비스를 유지하는 데 도움이 됩니다.
- 경쟁 우위: 포괄적인 모니터링과 빠른 이슈 해결을 통해 높은 서비스 품질을 유지하는 조직은 종종 경쟁사보다 우위를 점하게 됩니다.
더 빠른 인시던트 대응을 통한 비용 절감
관측성의 가장 즉각적인 이점 중 하나는 문제를 더 빠르게 탐지하고 해결함으로써 인력 비용을 절감할 수 있다는 점입니다. 이는 다음과 같은 부분에서 비롯됩니다:
- 평균 탐지 시간(MTTD, Mean Time to Detect) 및 평균 해결 시간(MTTR, Mean Time to Resolve) 감소
- 쿼리 응답 시간 향상을 통한 더 빠른 분석
- 성능 병목 구간의 신속한 식별
- 온콜(on-call) 근무에 소요되는 시간 감소
- 불필요한 롤백에 낭비되는 리소스 축소
이는 실제 사례에서도 확인할 수 있습니다. [trip.com은 ClickHouse로 관측성 시스템을 구축](trip.com built their observability system with ClickHouse) 하여 이전 솔루션 대비 4~30배 더 빠른 쿼리 속도를 달성했고, 쿼리의 90%가 300ms 이내에 완료되어 문제 조사가 매우 빨라졌습니다.
방지된 장애로 인한 비용 절감
관측성은 문제 해결 속도를 높이는 데 그치지 않고, 아예 문제가 발생하지 않도록 방지하는 데에도 도움이 됩니다. 저자들은 팀이 다음과 같은 방법으로 치명적인 문제를 예방할 수 있다고 강조합니다:
- 치명적 수준으로 악화되기 전에 잠재적인 문제를 식별
- 패턴을 분석하여 반복적으로 발생하는 문제를 예방
- 다양한 조건에서의 시스템 동작을 이해
- 성능 병목 현상을 선제적으로 해결
- 시스템 개선에 대해 데이터 기반 의사결정을 수행
ClickHouse의 자체 관측성 플랫폼인 LogHouse가 이를 잘 보여 줍니다. LogHouse를 통해 핵심 엔지니어들은 모든 클러스터 전반의 과거 패턴을 검색할 수 있으며, 이를 통해 반복적인 문제 발생을 예방할 수 있습니다.
직원 이직 감소에 따른 비용 절감
가장 간과되는 이점 중 하나는 팀 만족도와 인력 유지율에 미치는 영향입니다. 저자들은 관측성이 다음과 같은 효과를 가져온다고 강조합니다:
- 더 나은 도구를 통한 업무 만족도 향상
- 미해결 이슈 감소로 인한 개발자 번아웃 감소
- 더 나은 신호 대 잡음비로 인한 알림 피로 감소
- 더 나은 인시던트 관리로 인한 온콜 스트레스 감소
- 시스템 신뢰성에 대한 팀의 자신감 향상
실제 사례에서도 이를 확인할 수 있습니다. Fastly가 ClickHouse로 마이그레이션했을 때, 엔지니어들은 쿼리 성능 향상에 크게 놀라며 다음과 같이 말했습니다:
"믿을 수가 없었습니다. 실제로 몇 번이나 다시 돌아가서 쿼리를 제대로 하고 있는지 확인해야 했습니다... 결과가 너무 빨리 돌아왔습니다. 말이 안 된다고 생각했습니다."
저자들이 강조하듯, 이러한 이점의 구체적인 측정치는 사용되는 도구와 구현 방식에 따라 달라질 수 있지만, 견고한 관측성 관행을 도입한 조직이라면 전반적으로 이러한 근본적인 개선 효과를 기대할 수 있습니다. 핵심은 이 이점을 극대화하기 위해 적절한 도구를 선택하고 효과적으로 구현하는 것입니다.
이러한 이점을 달성하려면 여러 가지 중요한 난관을 극복해야 합니다. 관측성의 가치를 이해하는 조직이라 하더라도, 실제 구현 단계에서 예상치 못한 복잡성과 어려움에 직면하는 경우가 많으며, 이를 신중하게 해결해 나가야 합니다.
관측성 구현의 과제
조직 내에 관측성을 구현하는 것은 시스템 성능과 신뢰성에 대한 더 깊은 인사이트를 확보하기 위한 중요한 전환점입니다. 그러나 이 과정에는 여러 가지 어려움이 따릅니다. 조직이 관측성의 잠재력을 최대한 활용하려고 할 때, 진행을 저해할 수 있는 다양한 장애물에 직면하게 됩니다. 이러한 과제들을 몇 가지 살펴보겠습니다.
데이터 볼륨과 확장성
관측성을 구현하는 과정에서의 주요 난관 중 하나는 현대 시스템이 생성하는 방대한 텔레메트리 데이터의 양과 확장성을 관리하는 것입니다. 조직이 성장함에 따라 모니터링해야 하는 데이터도 함께 증가하면서, 대규모 데이터 수집 및 실시간 분석을 효율적으로 처리할 수 있는 솔루션이 필요합니다.
기존 시스템과의 통합
기존 시스템과의 통합은 또 하나의 중요한 과제입니다. 많은 조직은 다양한 기술이 뒤섞인 이기종 환경에서 운영하고 있어, 관측성 도구가 현재 인프라와 원활하게 통합되는 것이 필수적입니다. 개방형 표준은 이러한 통합을 가능하게 하는 데 핵심적인 역할을 하며, 상호 운용성을 보장하고 다양한 기술 스택 전반에 걸쳐 관측성 솔루션을 배포하는 작업의 복잡성을 줄여 줍니다.
기술 격차
기술 격차 역시 관측성 구현을 성공적으로 수행하는 데 장애가 될 수 있습니다. 고급 관측성 솔루션으로 전환하려면 종종 데이터 분석과 특정 도구에 대한 전문 지식이 필요합니다. 팀은 이러한 격차를 해소하고 관측성 플랫폼의 기능을 온전히 활용하기 위해 교육에 투자하거나 신규 인력을 채용해야 할 수도 있습니다.
비용 관리
관측성 솔루션은 특히 대규모로 확장될수록 비용이 많이 들 수 있으므로 비용 관리는 매우 중요합니다. 조직은 이러한 도구의 비용과 제공 가치를 균형 있게 따져 보고, 기존 방식과 비교해 의미 있는 비용 절감을 제공하는 비용 효율적인 솔루션을 찾아야 합니다.
데이터 보존 및 스토리지
데이터 보존 및 스토리지 관리는 추가적인 과제를 야기합니다. 성능이나 인사이트를 저해하지 않으면서 관측성 데이터를 얼마나 오래 보존할지 결정하려면, 데이터 접근성을 유지하면서 스토리지 요구 사항을 줄여 주는 효율적인 스토리지 솔루션과 신중한 계획이 필요합니다.
표준화와 벤더 종속
표준화를 확보하고 벤더 종속을 피하는 것은 관측성(observability) 솔루션의 유연성과 적응성을 유지하는 데 매우 중요합니다. 개방형 표준을 준수하면 조직이 특정 벤더에 종속되는 것을 방지하고, 관측성 스택을 요구에 맞게 발전시킬 수 있습니다.
보안 및 규정 준수
특히 관측성 시스템에서 민감한 데이터를 처리할 때 보안과 규정 준수는 여전히 매우 중요합니다. 조직은 관측성 솔루션이 관련 규정을 준수하고 민감한 정보를 효과적으로 보호하도록 보장해야 합니다.
이러한 과제는 조직의 요구를 효과적으로 충족하는 관측성 솔루션을 구현하기 위해, 전략적 계획 수립과 정보에 기반한 의사 결정이 얼마나 중요한지를 보여 줍니다.
이러한 과제를 해결하려면 조직은 관측성을 구현하기 위한 잘 구조화된 접근 방식이 필요합니다. 표준 관측성 파이프라인은 텔레메트리 데이터를 효과적으로 수집, 처리 및 분석하기 위한 프레임워크를 제공하도록 발전해 왔습니다. 이 발전의 가장 초기이면서도 영향력 있는 사례 중 하나는 2013년 Twitter에서의 경험입니다.