후니의 IT인프라 사전

[한빛미디어] 관찰가능성 엔지니어링 리뷰 본문

도서리뷰/IT 도서

[한빛미디어] 관찰가능성 엔지니어링 리뷰

james_janghun 2023. 8. 10. 10:31

 

총평

- 책의 난이도 : ★★

- 추천 별점     : ★★★★

- 추천 독자     : 파이썬을 어느정도 알고 있는 DevOps 혹은 SRE 역할의 엔지니어, 애플리케이션을 모니터링하고 싶은 개발자

- 지은이          : 알렉스 보텐 저 / 노승헌 옮김

- 출판사          : 한빛미디어

- 예제소스 : https://github.com/PacktPublishing/Cloud-Native-Observability

 


이 책에 대해서 관심이 상당히 많았는데 이번에 대상 도서로 올라와서 바로 신청했다. 선정되니 매우 기뻤다.

관찰가능성은 요즘 화두로 많이 떠오르는 주제인데, 이에 관련된 책은 많이 없는 편이다. 그래서 매우 귀하기도 하다.

 

이 책은 총 12개의 챕터를 통해서 관찰가능성이라는 주제를 다룬다. 관찰가능성(Observability)을 한마디로 정의하기는 어렵지만 로그를 남기고, 현재의 사용량을 지속적으로 체크하고, 추적하는 것이 대표적인 기능이다. 복잡하게 얽힌 마이크로서비스와 컴포넌트 사이에서 요청의 흐름을 파악하고 상관관계를 추적해나감으로써 문제가 발생했을 때 무슨 일이 어디에서, 어떻게, 왜 일어났는지를 빠르게 파악할 수 있는 기반을 만들어 준다. 그리고 다양한 도구 중에서 오픈 소스인 OpenTelemetry를 통해 구현한다.

 

 

이 책은 mac (x86_64, arm 둘 다 가능)기반으로 파이썬 3.6~3.9 버전을 사용하고 있다. 도커가 설치되어 있어야 한다.

OpenTelemetry는 1.18.0, Open Telemetry 컬렉터는 0.42.0 이상이 요구된다.

 

이 책의 구성

 

챕터 1. 관찰 가능성의 역사와 개념 

관찰 가능성이 지금까지 어떻게 발전했는지 다룬다. 개방형 표준의 필요성을 목적으로 오픈소스로 개발되는 과정을 확인할 수 있다. OpenTelemetry의 주요 개념은 시그널, 리소스, 파이프라인, 컨텍스트 전파로 나눠져 있고 이에 대해서 챕터별로 다루고 있다.

 

챕터 2. OpenTelemetry 시그널: 분산 추적, 메트릭, 로그

OpenTelemetry를 구성하는 세 가지 시그널에 대해서 다룬다.

 

챕터 3. 자동 계측

우리가 에러를 발견하면 과거 데이터가 반드시 필요하다. 흔히 로그를 남긴다는 말 처럼 계측을 계속해서 진행해야하고 이를 위해 자동 계측을 실시하도록 하면 된다. 다만 자동 계측은 말그대로 자동화 된 계측이기 때문에 설정이 필요하고, 범용적인 계측이 아니라면 애플리케이션 자체를 위한 메트릭에 대한 발굴과 개발이 필요하다. 이에 대한 개념을 익혀본다.

 

챕터 4. 분산 추적: 코드 실행 추적

OpenTelemetry의 개념과 이를 설정해 추적 데이터를 생성해봅니다. 속성, 이벤트, 링크를 통해 데이터를 보완해보고 오류 처리를 위해 정보를 추가해보는 등 커스터마이징을 어느정도 진행할 수 있습니다. 여기서부터는 실제 파이썬 코드를 많이 사용하기 때문에 처음에는 해당 코드를 분석하면서 실행해보고, 추후에는 책의 코드를 조금씩 수정해보면서 익히는 것도 좋을 것 같습니다.

 

챕터 5. 메트릭. 측정값 기록

메트릭 파이프라인을 설정해보면서 직접 측정값을 수집, 집계, 추출해본다. 특히 뷰를 이용해 애플리케이션이 생성한 메트릭 스트림을 목적에 맞게 집계, 필터링, 커스터마이징 해볼 수 있다. 뷰를 잘 기억해두는게 좋다. 아무래도 실무에서는 단순히 범용 메트릭만 사용하지는 않기 때문이다.

 

챕터 6. 로그 이벤트 포착

로깅 프로세스를 통해서 로그를 남기게 되는데 Logger를 생성하고 로그의 포맷을 설정하기 위한 지표를 확인할 수 있다. 또한 로그는 심각도에 따라 총 6개로 분류하고 이를 통해 필터링 하는 것도 중요하다.

 

챕터 7. 계측 라이브러리

계측 라이브러리는 서드파티 라이브러리를 위해 사용할 수 있다. 서드파티에서 직접 OpenTelemetry를 지원하지 않더라도 사용자가 직접 사용할 수 있도록 해준다.

 

챕터 8. OpenTelemetry 컬렉터

컬렉터에서 수신기, 처리기, 익스포터, 확장이 무엇인지 알아보고 OTLP(opentelemetry protocol)의 개념에 대해 알아본다. 

 

챕터 9. 컬렉터 배포

챕터 8의 내용을 기반으로 해서 컬렉터를 사이드카나 에이전트 형식으로 배포하여 수집하는 방법을 알아본다.

 

챕터 10. 백엔드 시스템 설정

추적, 메트릭, 로그를 분석할 수 있는 각종 백엔드를 확인해본다. 그라파나와 프로메테우스 등 사용하는 오픈소스의 설정값을 수정해보고 최적화 시켜본다.

 

챕터 11. 문제점 분석

메트릭을 시각화 해보고 문제를 발생시켜 해당 문제점을 분석할 수 있는 내용을 학습한다.

 

챕터 12. 샘플링

샘플링의 개념과 각 샘플링 전략에 대한 설명을 통해 사용자의 상황에 적합한 샘플링 기법을 선정해본다.

 

 

이 책의 장점

1. 옮긴이가 실습에 문제 없도록 신경쓴 모습이 많이 보인다.

기술 책은 아무래도 이런게 중요하지 않나 싶다. 외국 저자들은 대부분 엔지니어(한국도 마찬가지지만..)이기 때문에 아무래도 읽기가 어렵거나 뜬금없는 전개가 올때도 있는데 역자가 그 중간 다리를 잘 잡아주는게 중요한데, 역자는 사실 역주를 통해 매꾸는 경우가 많기 때문에 역주가 많을 수록 좋다고 본다.

 

2. 각 챕터의 끝에는 정리하는 부분이 있어서 내용을 리마인드 하기 좋다.

요즘은 책이 교과서처럼 목표와 정리가 깔끔하게 잘되어있는 것 같다.

 

3. 이 책은 그림이 많다.

도표나 그림이 거의 페이지마다 삽입되어 있어 읽는데 매우 효율적이고 이해가 쉽다.

 

 

이상으로 책 <관찰가능성>에 대한 리뷰를 마친다. 

 

이 책을 한 번 읽고서 모든 것을 이해한다고 하기에는 조금 어렵지만, 두고두고 보면서 읽으면 조금 더 성숙한 엔지니어 / 개발자가 되지 않을까 싶다.

 

  "한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."