본문 바로가기
스터디

[책] 관찰 가능성 엔지니어링

by 수목원 2023. 8. 29.

오픈소스를 활용한 분산 애플리케이션 계측부터 오류 추적과 분석까지 다루는 한빛미디어의 '관찰가능성엔지니어링'는 관찰 가능성의 기본 개념과 구성요소를 설명하고, 예제를 통해 OpenTelemetry를 적용하는 방법을 다루고 있습니다.

 

마이크로아키텍쳐가 일반화되고 분산 시스템에서 버그를 추적하거나 어떤 상황이 일어나고 있는지 알아내는 것은 다양한 로그들을 취합하고 정리해야하기가 쉽지 않은 작업이지만 OpenTelemetry를 이용하여 분산된 추척 및 매트릭 로그를 표준화한 형태로 제공받을 수 있어 DevOps/SRE 분에 있는 개발자들은 유용하게 적용해 볼 수 있습니다.

 

OpenTelemetry란?
(opentelemetry.io

OpenTelemetry는 애플리케이션 성능 모니터링 및 디버깅을 위한 오픈 소스 프로젝트로 이 프로젝트는 클라우드 네이티브 환경에서 분산된 서비스들의 추적, 로깅 및 모니터링을 표준화하고 간편하게 수행할 수 있도록 지원합니다.

 

응용 프로그램 내에서 발생하는 데이터를 수집하고 분석하는 기능을 제공하며 이를 통해 애플리케이션의 성능 및 상태에 대한 정보를 수집하고, 이를 분석하여 병목 현상이나 이슈를 파악할 수 있으며 분산된 서비스 간의 상호 작용을 추적하여 전체 시스템의 동작을 이해하고 개선할 수 있도록 도와줍니다.

 

또한 여러 프로그래밍 언어와 프레임워크를 지원하며, 다양한 데이터 저장소와 통합하여 사용자가 자신의 환경에 맞게 모니터링 솔루션을 구축할 수 있도록 돕습니다. 이를 통해 개발자와 운영팀은 애플리케이션의 건강 상태를 실시간으로 모니터링하고, 성능 문제를 식별하며 대응할 수 있습니다.

 

따라서 OpenTelemetry는 모니터링 및 디버깅을 위한 강력한 도구로서, 클라우드 환경에서 복잡한 서비스 구성에서 발생하는 문제를 해결하는 데 도움을 주는 핵심적인 프로젝트입니다.

 

내용

본 서적은 12개의 챕터로 구성되어 있고 주요 챕터는 다음의 내용을 두고 있습니다.

1~2 장은 OpenTelemetry의 개념을 설명합니다.

  • OpenTelemetry이란? 및 시그널이란?
  • 시그널(분산추적/메트릭/로그)의 개념을 이해하고 시맨틱 표기법을 소개

3~5장은 추적을 위한 계측 및 기록에 대한 부분을 설명합니다.

  • 수동계측의 어려움을 극복하기 위해 자동으로 계측하는 방안
  • grocery-store예제를 통해 OpenTelemetry 사용하여 추적 방안 소개
  • 추적데이터를 생성하여 파이프라인을 구축하는 방안
  • 예제 서비스에를 통해 메트릭을 수집하기 위한 부분 설명

6장: 이벤트를 포착하기 위한 핵심 시그널인 로그를 다룹니다.

7장: 5장의 예제서비스를 계측 라이브러를 통해 자동 계측하는 방법을 다룹니다.

8장: 컬렉터르르 통해 백엔드 시스템으로 전달 전 데이터를 수집하고 집계하는 방안을 다루며 OTLP(OpenTelemetry protocol)에 대한 부분을 설명합니다.

9장: 8장에서 만들어본 컬렉터를 다양한 분산환경으로 배포하고 측정할 데이터를 수집해봅니다.

10장: 개인적으로 관심있는 시각화에 대한 부분을 다루며 프로메터우스 및 예거를 통합하고 이슈파악을 위한 단계를 설명합니다.

11~12장: 수집된 메트릭을 통해 문제를 해결해가는 부분들에 대한 설명입니다.

 

책에서는 주로 파이썬 코드 예제를 다룹니다. 이러한 예제들은 OpenTelemetry의 다양한 측면과 기능을 보여주는 중요한 자료이나 파이썬에 익숙하지 않은 독자들은 이러한 예제들을 다루는 데 약간의 어려움을 느낄 수 있습니다.

 

이 책의 장점
  • 복잡한 시스템을 다루고 이슈에 수집에 대한 공통된 프로토콜을 고민하고 있다면 굳!
  • 실제 예제와 케이스 스터디를 통해 독자들은 실전 상황에서 OpenTelemetry를 어떻게 적용할 수 있는지를 배울수 있음
  • OpenTelemetry에 대한 포괄적인 참고 자료가 부족한 상황에서 책은 높은 가치의 참고 자료로 활용가능

 

 

아쉬운점
  • OpenTelemetry개념을 이해하고 실무에 적용하는데 어려움
  • 예제도 flask기반의 웹서비스를 활용하는데 다른 언어들을 사용예제의 아쉬움

 

 

권장 독자
  • 소프트웨어 엔지니어 및 아키텍트: 소프트웨어 엔지니어 및 시스템 아키텍트에게 유용합니다. OpenTelemetry를 활용하여 복잡한 시스템의 성능 및 추적을 모니터링하는 방법에 대해 관심을 가지는 엔지니어들에게 도움이 될 것입니다.
  • DevOps 및 운영팀: DevOps 엔지니어와 운영팀은 애플리케이션의 운영 및 모니터링 책임을 갖고 있습니다. 이 책은 OpenTelemetry를 활용하여 분산된 시스템의 상태 및 성능을 관리하고 개선하는 방법을 배우고자 하는 개발자
  • 클라우드 아키텍트: OpenTelemetry를 사용하여 클라우드 환경에서의 마이크로서비스 아키텍처를 모니터링하고 최적화하는 방법을 알고 싶은 아키텍트들에게 도움이 될 것입니다.