메뉴 바로가기 검색 및 카테고리 바로가기 본문 바로가기

한빛출판네트워크

한빛랩스 - 지식에 가능성을 머지하다 / 강의 콘텐츠 무료로 수강하시고 피드백을 남겨주세요. ▶︎

관찰 가능성 엔지니어링

오픈 소스를 활용한 분산 애플리케이션 계측부터 오류 추적과 분석까지 ⏐ OpenTelemetry 사용법 수록

한빛미디어

번역서

판매중

  • 저자 : 알렉스 보텐
  • 번역 : 노승헌
  • 출간 : 2023-07-28
  • 페이지 : 380 쪽
  • ISBN : 9791169211284
  • 물류코드 :11128
  • 초급 초중급 중급 중고급 고급
4.9점 (20명)
좋아요 : 123

“또 오류가 발생했다.. 정확한 원인이 뭐지?” “잠재적인 오류도 미리 알 수 있을까?”

이 질문들의 답은 관찰 가능성에 있다!

- OpenTelemetry 설치 및 사용법 수록

 

마이크로서비스와 클라우드가 보편화된 지금, ‘관찰 가능성’은 시스템이 어떻게 작동하고 어디서 문제가 생기는지 실시간으로 알 수 있게 해주는 놀라운 개념입니다. 이 책은 익숙한 모니터링 개념을 시작으로 왜 관찰 가능성이 필요한지, 어떻게 적용할 수 있는지 심도 있게 설명하며, 실무에 바로 활용 가능한 실용적인 팁도 제공합니다.

 

이 책에서는 식료품 주문 웹 애플리케이션을 예시로 사용합니다. 따라서 애플리케이션의 구조 분석부터 관찰 가능성의 다양한 요소들을 적용해보는 것까지 오픈 소스를 활용해 차근차근 따라 해볼 수 있습니다. 특히 이 책에서 중점적으로 설명하는 OpenTelemetry를 사용하면 단 한 번의 계측만으로 유의미한 데이터를 얻고 활용해볼 수 있습니다. 또한 도커, 쿠버네티스와 같은 필수 클라우드 컴퓨팅 도구를 비롯하여 여러 계측 라이브러리에 익숙해질 수 있습니다.

 

설계, 코딩, 테스트, 배포, 운영 등 소프트웨어 개발 주기 내에서 다양한 역할을 수행하는 개발자, 엔지니어, 시스템 운영자라면 이 책을 통해 소프트웨어를 계측하고, 분석하고, 오류를 해결해보세요!

 

상세이미지_700_관찰 가능성 엔지니어링.jpg

알렉스 보텐 저자

알렉스 보텐

Lightstep의 수석 소프트웨어 엔지니어. 10년 동안 여러 조직이 클라우드 네이티브 환경에 적응할 수 있도록 돕는 일을 해왔습니다. 또한 핵심 네트워크 인프라부터 모바일 클라이언트 애플리케이션까지 분산 애플리케이션에 대한 복잡한 트러블슈팅을 어떻게 수행해야 하는지 직접 경험하며 지식을 쌓고 있습니다. 그리고 이러한 경험을 통해 관찰 가능성 분야에 관심을 갖게 되어 여러 오픈 소스 프로젝트에 기여하고 있습니다. 2019년부터 OpenTelemetry 프로젝트의 기여자, 승인자, 유지 보수 담당자로서 프로젝트를 발전시키는 데 주도적으로 참여하고 있으며 오늘날 대규모 OpenTelemetry 커뮤니티가 만들어지는 과정에 크게 기여했습니다. 무엇보다 우리 주변의 기술을 이해하고 지식을 공유하는 것을 좋아합니다.

노승헌 역자

노승헌

눈물 없이 볼 수 없는 한 편의 뮤직비디오 같은 인생을 만드느라 바쁜 센티멘털리스트. 삼성네트웍스, SK텔레콤, 아카마이 코리아를 거치면서 개발자, 프로젝트 매니저, 제품 오너, 솔루션 아키텍트 등 다양한 영역에서 자신을 시험해보고 있다. 현재는 라인플러스 Enablement Engineering 팀에서 LINE의 다양한 서비스가 쾌적한 사용자 경험을 제공할 수 있도록 이슈를 관찰하고 문제를 해결하는 역할을 수행하고 있다. 집필한 도서로 『나는 LINE 개발자입니다』(한빛미디어, 2019, 공저), 『슬랙으로 협업하기』(위키북스, 2017), 『소셜 네트워크로 세상을 바꾼 사람들』(길벗, 2013), 번역한 도서는 『데브옵스 엔지니어를 위한 실전 관찰 가능성 엔지니어링』(한빛미디어, 2024), 『관찰가능성 엔지니어링』(한빛미디어, 2023) 등이 있습니다.

 

[PART 1 기초]


Chapter 1 관찰 가능성의 역사와 개념

1.1 클라우드 네이티브 애플리케이션

1.2 데브옵스로의 전환

1.3 관찰 가능성의 역사

_중앙 집중식 로깅

_메트릭과 대시보드

_추적과 분석

1.4 OpenTelemetry의 역사

_OpenTracing

_OpenCensus

_클라우드 네이티브 소프트웨어를 위한 관찰 가능성

1.5 OpenTelemetry의 개념

_시그널

__규격

__데이터 모델

__API

__SDK

__시맨틱 표기법

__계측 라이브러리

_파이프라인

__프로바이더

__원격 측정 생성기

__처리기

__익스포터

_리소스

_컨텍스트 전파

정리하기

 

Chapter 2 OpenTelemetry 시그널 - 분산 추적, 메트릭, 로그

2.1 환경 설정

2.2 분산 추적

_추적 심층 분석

_스팬의 상세 정보

_추가 고려 사항

2.3 메트릭

_메트릭 심층 분석

_데이터 포인트 타입

_모범 사례

_추가 고려 사항

2.4 로그

_로그 심층 분석

_로그의 상관관계

_추가 고려 사항

__시맨틱 표기법

__시맨틱 표기법의 적용

__스키마 URL

정리하기

 

Chapter 3 자동 계측

3.1 환경 설정

3.2 자동 계측

_수동 계측의 과제

_자동 계측 컴포넌트

_자동 계측의 한계

3.3 바이트코드 조작

_OpenTelemetry 자바 에이전트

3.4 런타임 훅과 몽키 패칭

_계측 라이브러리

_계측기 인터페이스

_래퍼 스크립트

정리하기

 

[PART 2 애플리케이션 계측]


Chapter 4 분산 추적 - 코드 실행 추적

4.1 환경 설정

4.2 추적 파이프라인 설정

_추적기 확보

4.3 추적 데이터 생성

4.4 컨텍스트 API

_스팬 처리기

4.5 데이터 보완

_ResourceDetector

_스팬 속성

_SpanKind

4.6 컨텍스트 전파

_추가 전파기 형식

_복합 전파기

4.7 이벤트, 예외, 상태 기록

_이벤트

_예외

_상태

정리하기

 

Chapter 5 메트릭 - 측정값 기록

5.1 환경 설정

5.2 메트릭 파이프라인 설정

_미터 생성

_푸시 기반 메트릭 추출과 풀 기반 메트릭 추출

5.3 올바른 메트릭 계측기 선택

_카운터

_비동기 카운터

_업/다운 카운터

_비동기 업/다운 카운터

_히스토그램

_비동기 게이지

_중복 메트릭 유형

5.4 뷰를 이용한 메트릭 출력 커스터마이징

_필터링

_디멘션

_집계

5.5 grocery-store 서비스

_요청 수

_요청 지속 시간

_동시 요청

_리소스 사용

정리하기

 

Chapter 6 로그 - 이벤트 포착

6.1 환경 설정

6.2 OpenTelemetry 로깅 설정

6.3 로그 생성

_Logger

_표준 로깅 라이브러리

6.4 실전 시그널 로깅

_분산 추적과 로그

_Flask를 이용한 OpenTelemetry 로깅

_WSGI 미들웨어를 이용한 로깅

_리소스 상관관계

정리하기

 

Chapter 7 계측 라이브러리

7.1 환경 설정

7.2 자동 계측 설정

_OpenTelemetry 배포판

_OpenTelemetry 설정기

_환경 변수

_커맨드라인 옵션

7.3 requests 라이브러리 계측기

_추가 설정 옵션

_계측기의 수동 호출

_이중 계측

7.4 자동 설정

_리소스 속성 설정

_추적 설정

_메트릭 설정

_로그 설정

_전파 설정

7.5 grocery-store 애플리케이션 다시 보기

_legacy-inventory 애플리케이션

_grocery-store 애플리케이션

_shopper 애플리케이션

7.6 Flask 라이브러리 계측기

_추가 설정 옵션

7.7 계측기 라이브러리 찾기

_OpenTelemetry 레지스트리

_opentelemetry-bootstrap

정리하기

 

[PART 3 원격 측정 데이터 활용]

 

Chapter 8 OpenTelemetry 컬렉터

8.1 환경 설정

8.2 OpenTelemetry 컬렉터의 목적

8.3 OpenTelemetry 컬렉터 컴포넌트의 이해

_수신기

__호스트 메트릭 수신기

_처리기

__속성 처리기

__필터 처리기

__확률 기반 샘플링 처리기

__리소스 처리기

__스팬 처리기

__배치 처리기

__메모리 제한 처리기

_익스포터

_확장

_추가 컴포넌트

8.4 OTLP를 이용한 원격 측정 데이터 전송

_인코딩과 프로토콜

_기타 설계 고려 사항

8.5 OpenTelemetry 컬렉터의 활용

_익스포터 설정

_컬렉터 설정

_스팬 수정

_메트릭 필터링

정리하기

 

Chapter 9 컬렉터 배포

9.1 환경 설정

9.2 애플리케이션의 원격 측정 데이터 수집

_사이드카 배포

9.3 시스템 수준의 원격 측정 데이터 수집

_에이전트의 배포

_사이드카와 에이전트 연결

_리소스 속성 추가

9.4 게이트웨이로서의 컬렉터

_오토스케일링

_OpenTelemetry 오퍼레이터

정리하기

 

Chapter 10 백엔드 시스템 설정

10.1 환경 설정

10.2 원격 측정 데이터 분석을 위한 백엔드 시스템 옵션

_추적

_집킨

_예거

_메트릭

__프로메테우스

_로깅

__로키

__그라파나

10.3 운영 환경에서의 실행

_고가용성

_확장성

_데이터 보존

_개인 정보 보호 규정

정리하기

 

Chapter 11 문제점 분석

11.1 환경 설정

11.2 카오스 엔지니어링

_[실험 1] 지연 시간 증가

__개요

__가설

__검증

_[실험 2] 리소스 압박

__개요

__가설

__검증

_[실험 3] 예기치 못한 중단

__개요

__가설

__검증

11.3 원격 측정을 이용한 사전 감지

정리하기

 

Chapter 12 샘플링

12.1 환경 설정

12.2 시그널 샘플링

_추적

_메트릭

_로그

_샘플링 전략

__헤드 샘플링

__테일 샘플링

__확률 샘플링

_여러 가지 샘플러

12.3 SDK를 이용한 애플리케이션 수준의 샘플링

12.4 OpenTelemetry 컬렉터를 이용한 데이터 샘플링

_테일 샘플링 처리기

정리하기

관찰 가능성의 개념, 구현, 분석까지 모두 담은 올인원 실무 안내서

 

모니터링을 포함하는 상위 개념인 관찰 가능성에 관해 자세히 설명합니다. 그리고 관찰 가능성을 위해 개발된 대표적인 오픈 소스 OpenTelemetry를 활용해 애플리케이션에 관찰 가능성을 직접 적용해봅니다. 코드 예제뿐만 아니라 단계별로 애플리케이션 코드를 계측하고 분석하는 원리를 담고 있어 실무에서도 쉽게 활용할 수 있습니다. 책의 모든 내용을 이해하고 나면 자신의 애플리케이션을 계측해 오류의 원인은 물론, 잠재적인 오류까지도 찾아낼 수 있을 것입니다.

 

특히 이 책은 관찰 가능성의 역사와 개념부터 애플리케이션 계측과 분석까지 모두 다루기 때문에 관찰 가능성을 처음 접하는 사람도 쉽게 이해할 수 있습니다. 또한 이전에 시도해보지 않은 방법으로 인프라, 서비스, 애플리케이션을 개발/운영하고자 하는 소프트웨어 엔지니어, 시스템 운영자에게 원격 측정 데이터를 활용하는 실용적인 팁을 제공합니다.



오픈 소스를 활용한 분산 애플리케이션 계측부터 오류 추적과 분석까지..

이 책의 목적을 책 표지에 명확히 정의한 만큼 책에서 나열하는 모든 내용은 초보에서 전문가까지를 이 책의 독자로 대상을 삼는 듯 하다.

사실 이 책의 소개에 보면 독자 대상을 중급으로 하고 있지만..

책의 구성을 보면 모두 12장으로 구성되어 있는데 크게 구부을 해 보면

관찰 가능성의 개념

데이터의 로그에 대한 이해

데이터 수집 및 이벤트 처리

실습을 위한 시스템 구성 및 시스템 운영

무엇보다도 한빛 미디어의 도서들 중 실습 내용이 포함된 책들은 대부분 소스 코드를 제공해 주기 때문에

책의 내용을 익히고 지식화 하는데 상당한 도움이 된다.

시스템이 대규모로 발전하고 관리대상 포인트가 증가하며, 이에 다른 시스템 이벤트 관리는 하나의 비즈니스 영역으로 확대 될 만큼 중요도가 이미 증가하였다.

애플리케이션 개발 단계에서 디버깅 및 프로세스 실행에 대한 비용을 로그로 관리하는 엔지니어 입장에서 보면 이제는 생성된 다양한 이벤트 메세지(데이터 메트릭)를 분석할 필요성이 요구됨을 알 수 있다.

좀 더 요울성 있게 코드와 시스템을 분석할 수 있는 방법론에 대해 이 책은 너무나 자세한 길잡이 역할을 제공한다.

더 좋은 애플리케이션 개발이 용이하며, 성능과 불필요한 디버깅. 로그관리 등에 대한 비용을 줄 일 수있는 방법도 함께 제공하고 있다.

무엇보다 도커 기반으로 직접 하나의 심플한 시스템을 구성, 실습해 볼 수 있는 실사구시가 가능하기 때문에 데이터 분석가, 개발자, 시스템 엔지니어, DBA에 이르기 까지 전 분야의 엔지니어를 대상으로 이 책을 추천한다.

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



 

오픈소스를 활용한 분산 애플리케이션 계측부터 오류 추적과 분석까지 다루는 한빛미디어의 '관찰가능성엔지니어링'는 관찰 가능성의 기본 개념과 구성요소를 설명하고, 예제를 통해 OpenTelemetry를 적용하는 방법을 다루고 있습니다. 마이크로아키텍쳐가 일반화되고 분산 시스템에서 버그를 추적하거나 어떤 상황이 일어나고 있는지 알아내는 것은 다양한 로그들을 취합하고 정리해야하기가

쉽지 않은 작업이지만 OpenTelemetry를 이용하여 분산된 추척 및 매트릭 로그를 표준화한 형태로 제공받을 수 있어 DevOps/SRE 분에 있는 개발자들은 유용하게 적용해 볼 수 있습니다.

 

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

소위 MSA를 도입하게 되면, 많은 서버와 서비스를 다루게 되고,

각 서버들과 서비스간의 인터페이스 중의 오류를 찾기 위해 이제는 필수적으로 갖춰야 할 '관찰가능성'에 대한 책입니다.

이런 책의 도움 없이도, 그동안 그라파나, 프로메테우스등도 사용하고

최근에는 datadog도 사용중이기는 했습니다.

하지만, 단순히 설치된 것들을 화면만 봐서는 해당 수치나 그래프에 대한 해석을 어떻게 해야 하는지 남감할 때가 많았습니다.

서로 다르게 해석하기도 하고, 이렇게 표시되는게 맞는 건지 알 수도 없었구요.

그런데, 이 책은 그런 기본적인 내용부터 다뤄줘서 좀 더 체계를 잡을 수 있게 해준다고 생각합니다.

trace, metric, log 가 뭔지. measurement, measure, aggregation, view 가 무엇을 말하는지,

count, distribution, sum, last value는 어떤 집계 방법인지등 간과하고 넘어갔던 것들을 살펴볼 수 있게 해주는 책이었습니다.

또한, 다양한 서비스들을 모니터링하려면 많은 서비스를 구동하고, 다양한 솔루션도 설치해야 하는데

이것 들이 docker compose로 제공되어 쉽게 결과를 확인해 볼 수 있는 것도 책의 강점이었습니다.

(저같은 경우는 잘 안되서 가상머신부터 삭제하고 시작했지만요.)

MSA와 데브옵스가 대세가 된 지금 상황에서는 개발자도 한번쯤 익혀할 내용이고 책이라고 생각됩니다.

OpenTelemetry의 구축, 연동, 활용을 통해 관찰 가능성을 쉽게 배울 수 있게 구성된 책으로 실무에 바로 OpenTelemetry를 적용해 볼 수 있다는 점이 매력적이다.

관찰 가능성의 개념이 무엇인지 그리고 관련 기술이 어떻게 발전해왔는지 소개하는 책으로 특히 관찰가능성 기술 분야의 대표적인 오픈 소스인 OpenTelemetry의 구축 및 활용법을 다루고 있다.

몇 번의 클릭만으로 확장 가능한 우수한 인프라를 활용하여 개발에만 집중할 수 있는 시대가 왔다. 서버리스, 클라우드, 데브옵스 등은 이런 것들을 가능하게 해주는 개념이다.

언제나 그렇듯 개발자에게 많은 것을 몰라도 서비스를 가능하게 해주는 기술들의 장점 이면에는 단점도 숨어있다. 보이지 않는 블랙박스는 때로는 신경쓰지 않아도 되는 편리함을 주지만 다른 한 편으로는 그 내부의 동작방식을 알 필요가 있게 되었을 때 답답함이라는 단점을 선물한다.

분산 환경으로 마이크로서비스가 유행하는 요즘은 특히 각 서비스들이 쉽게 작동하지 않거나 의도한대로 작동하지 않는 경우가 흔하다.

바로 이런 문제점을 해결하고자 내부적으로 운영 환경에서 어떠한 일들이 벌어지고 있는지를 쉽게 추적하고자 노력하는 과정에서 관찰 가능성이 대두되었고 이 기술의 대표적인 오픈소스로 OpenTelemetry가 자리매김 하고 있다.

결론부터 말하자면 이 책은 관찰 가능성과 OpenTelemetry의 구축 및 활용법을 다룬 책이다.

개인적으로는 5년 전 즈음 사내 빅데이터 분석 환경을 구성하기 위해 빅데이터 생태계의 다양한 오픈 소스들을 직접 설치하고 운영할 기회가 있었다.

그 중 Fluentd, 로그스태시, 플럼 같은 것들을 활용하면서 로그 수집이 매우 편리해짐을 느꼈다. 언젠가 사내의 레거시 시스템들을 통합 로그 관리할 수 있는 별도 레이어를 구축해봐야겠다는 구상을 했고 업무 우선 순위에 밀려 완성시키지는 못했지만 구축 시도 과정에서 관련 지식들을 다양하게 습득할 수 있었다.

덕분에 본 도서를 한층 깊게 이해하는 데 도움이 되었고 통합된 로그 분석 환경을 구축하고자 개인적으로 골머리 앓았던 많은 부분들을 OpenTelemetry가 어떻게 현명하게 대처하고 있는지 엿볼 수 있었기에 이 책을 더욱 흥미롭게 읽을 수 있었다.

이 책에서는 구축, 연동, 활용 방법을 다루지만 OpenTelemetry을 어떻게 구현했는지는 다루고 있지 않기에 내부 동작 방식을 정확히는 알 수 없다.

다만 구축 및 활용 과정의 가이드를 보며 개인적으로 했던 고민들을 오픈소스 기여자들이 어떤 접근 법으로 해결했는지를 엿볼 수 있어 관찰 가능성과 OpenTelemetry에 대한 배움 외에도 설계 측면에서 소득이 많아 즐거웠다.

이 책을 읽기에 앞서 여러 사전 지식들이 필요하다. 주 언어로 Python의 기본 문법 및 웹 관련 기술들을 알아 두어야 OpenTelemetry를 연동하는 방법이 수월하게 읽힐 것이다.

더불어 도커나 쿠버네티스와 같은 오늘날의 마이크로서비스를 가능하게 만들어준 인프라 기반 지식들이 필요하고 실제로 실습도 도커 환경에서 진행하기에 관련 기술을 활용한 실습 경험이 없다면 실습을 따라하기에 무리가 있을거라 생각한다.

OpenTelemetry의 다양한 기능을 살펴보는 것 보다는 아래 그림과 같은 실습 환경 구성에 대한 개요를 살펴보는 것이 본 도서의 큰 그림을 잡는데 도움이 될 것 같다.실습환경

grocery-store는 특히 OpenTelemetry의 다양한 기능을 확인할 수 있도록 다양한 조작을 걸치며 변화시킨다는 점을 미리 알면 도움이 될 것이다. 프로메테우스, 예거, 그라파나와 같은 유사 생태계의 오픈 소스들의 도움을 받아 본연의 목적을 충실히 활용할 수 있도록 구성된 부분은 흥미로운 부분이다.

또한 OpenTelemetry 환경에서 활용할 수 있는 라이브러리는 매우 다양하다. 거의 왠만한 환경은 거의 다 지원한다고 보면 된다. OpenTelemetry의 가장 큰 장점 중 하나이다.지원환경

아래 그림은 실제 Python 환경에 어떻게 적용할지를 가장 잘 보여주는 도식이다.적용방법

이러한 대략적인 과정들을 거쳐 OpenTelemetry를 구축하고 레거시와 연동에 성공했다면 이렇게 수집한 데이터를 어떻게 활용할지도 중요한 부분이 된다. 전자의 내용이 파트2에, 후자의 내용이 파트3에 담겨있다. 참고로, 파트1은 관찰가능성의 개념과 관련 기술이 그동안 어떻게 발전해왔는지를 소개한다.

OpenTelemetry의 컬렉터는 아래 그림에서 보는 바와 같이 일종의 브로커 역할을 수행한다. 다양한 또 다른 오픈소스와의 연동을 통해 확장성을 제공 가능하다는 것이 매력적이다.컬렉터

아래 그림은 그라파나를 활용한 대시보드와 경고창 화면인데 OpenTelemetry을 중심으로 한 방대한 생태계가 놀랍다. 관련 기능들 하나하나 익숙해지는 데에도 많은 시간이 필요할 것 같다.그라파나

정리하자면 이 책은 OpenTelemetry를 구축, 활용하는 과정을 통해 관찰가능성이 무엇인지 확실하게 이해하고 실무에 관찰가능성을 도입할 수 있는 방법을 제시한다.

마이크로서비스의 블랙박스 이슈로 골치 썩어본 경험이 있거나, 운영 환경의 분리 및 무지로 인해 고통을 겪고 있거나, 관찰 가능성에 관심 많은 독자에게 꼭 추천하고 싶은 책이다.

어려운 개념보다는 OpenTelemetry를 직접 만지고 다뤄봄으로써 관찰 가능성의 개념을 쉽게 익힐 수 있음은 물론 실무에 바로 적용하여 편리함을 만끽할 수 있기 때문이다.


회사 업무 프로젝트, 대기업 IT 운영관리 에서 시스템 로그 관리, 부하 관리 프로그램의 여러 이슈와 해당 업무에 어떤 도구를 활용해야 하는지 궁금하던 차에 "관찰 가능성 엔지니어링" 이라는 책을 읽어 보게 되었습니다. 

 

"관찰 가능성 엔지니어링" 은 오픈 소스를 활용한 분산 애플리케이션 계측부터 오류 추적과 분석까지 라는 주제로 관련 기술을 설명하고 있습니다.

 

특히 "관찰 가능성 엔지니어링" 은 오픈소스인 OpenTelemetry로 사용법 및 실습을 하면서 추적, 메트릭, 로그 등을 어떻게 관리하고 설정하는지 그리고 개념은 어떻게 되는지 확인할 수 있게 구성되어 있습니다.

 

 

"관찰 가능성 엔지니어링" 책의 장점은

1. 여러 용어의 정의

2. 그림으로 기본 개념 및 각 기술의 아키텍처를 확인할 수 있음

3. 실습을 통해 OpenTelemetry 기술 습득

 



우선 제가 공부하면서 가장 마음에 들었던거는 관찰 가능성에 대한 기본 개념과 추적, 메트릭, 로그, 시그널등 용어 정리와 해당 개념을 그림으로 설명하는것이 좋았습니다. 해당 개념에 대한 모호함과 그리고 어떻게 구성하는지 그리고 업무를 하면서 해당 용어의 통일 용어 등 많은 문제가 있었는데 해당 개념을 이번 기회에 확실히 알 수 있었습니다. 해당 개념 정리를 통해 업무 활용에도 많은 도움이 될 수 있을 것 같습니다.

 

그리고 OpenTelemetry 기술을 이번에 처음 접하게 되었는데 이제까지 유료 제품이나 또는 프로그램으로 직접구현하면서 중앙 집중식 모니터링 시스템을 개발하면서 문제점 및 다른 제품에 대한 갈망이 있었는데 "관찰 가능성 엔지니어링" 을 통해 좋은 오픈 소스를 알게 된 것은 좋은 경험이라고 생각합니다. 아직 해당 오픈소스를 어떻게 업무에 적용할지 고민중이지만 "관찰 가능성 엔지니어링"에 나온 아키텍처과 관련 시스템 설정 등은 업무에 적용할 때도 많은 도움이 될 것 같습니다.

 

마지막으로 <<옮긴이>>에 언급된 내용도 실습하는데 많은 도움이 되었습니다. 컴퓨터에 프로그램이 많이 설치되어 있어서 포트 충돌, 프로그램 버전 충돌이 나는 경우가 있는데 <<옮긴이>>의 글이 많은 도움이 되었습니다.

 

 

이 책의 아쉬운 점은

1. 기본적인 사전지식 필요

2. 여러 프로그램 설치로 충돌시 해결에 시간이 필요

"관찰 가능성 엔지니어링" 첵에서 언급한 것 처럼 프로그래밍에 대한 사전지식, 도커 등에 대한 지식은 필요하다고 합니다.

그리고 여러 프로그램이 설치되고 기존에 같은 포트를 사용하는 경우 및 버전에 따른 총돌들에 따른 해결 방법을 책에서 언급한 버전을 맞추어 진행하면 문제가 없겠지만 그렇지 않다면 관련문제를 찾아서 해결해야 합니다. 하지만 책 자체에도 관련 문제를 언급한 경우도 많고 인터넷 검색만 해도 쉽게 찾을 수 있으니 따라하면서 경험해보기를 바랍니다.

 

 

"관찰 가능성 엔지니어링" 의 추천대상은

1. 분산환경에 대한 모니터링을 구축을 시도하는 분

2. OpenTelemetry 기술을 습득하려는 분

3. 관찰 가능성에 대한 용어 및 기술 아키텍처를 공부하려는 분

 

처음에는 조금 어렵지만 기본 개념 및 기술을 활용하여 모니터링, 관찰 가능성 시스템, OpenTelemetry를 활용한 시스템을 구축하려는 분에게 추천합니다.

 

 

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

이 책은 관찰가능성 개념의 이해부터 시작해서, 복잡한 분산시스템이 생겨남에 따라 모니터링 능력을 키워줄 수 있는 책입니다. 오픈 소스 프로젝트인 OpenTelemetry로 시스템을 추적하고, 성능 및 상태를 수량화된 데이터로 기록하는 메트릭, 로그에 대해 설명하고, 스팬, 추적, 컨텍스트 전파를 정의해 분산 추적의 개념을 설명해줍니다. 여기서 분산 추적이란, 코드 실행 경로와 상호 작용을 추적하여 여러 서비스 및 컴포넌트 간의 연결과 디버깅을 용이하게 하는 것을 말합니다. 또한 데이터를 저장하고 시각화하는 여러 오픈 소스 원격 측정 데이터 백엔드 시스템에 대해서도 언급하여, 시스템의 문제를 식별하는 법에 대해 알려줍니다.

 

책을 읽기 전엔 관찰 가능성이란 단어조차 낯설었지만, 책의 예제와 적용 사례를 찾아보며 건강한 시스템에 대해 다시 생각해보며 유익한 독서시간을 가졌다고 생각합니다. 이 책을 읽고, 모두 지속가능한 시스템에 대해 깨우치길 바라겠습니다.

 

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

 

IMG_6011.jpeg

 

 

이 책을 따라가다보면 Observability가 개발&운영에 있어서 왜 중요한지 알 수 있고 OpenTelemetry를 체계적으로 배울 수 있도록 도와줍니다.

 

* OpenTelemetry 실습하기 좋은 책입니다.

OpenTelemetry는 처음에 배우기가 상당히 복잡합니다. 책에서 언급하듯이 처음부터 여러 용어도 알아야 해서 헷갈립니다.

제가 공부하고 개발할 때 가장 불편했던 것은 실습 환경을 갖추는 것이었습니다. 

어느 정도 복잡한 분산된 환경이 있어야 했습니다. 

 

원하는 상황을 만들려면 인위적인 조작도 계속해야 했습니다. 예를 들어서, 일부 시스템이 불안정한 상황을 만들려면 일부러 비효율적으로 짜거나 인스턴스를 강제로 끄면서 작업해보고는 했습니다.

 

이렇게 간단하게 몇 가지 검증 작업이 끝나면 구성 파일이 엄청 난잡해지고는 했습니다.

 

책에서는 모든 실습 환경을 Docker Compose로 제공해줍니다. 이런 것을 귀찮게 안 만들고 OpenTelemetry에 집중할 수 있다는 것이 큰 장점으로 느껴졌습니다. 

 

* Silicon Mac 사용자를 위한 팁

이 책은 실습이 핵심입니다. 주어진 실습 파일을 기반으로 이것 저것 뜯어고치면서 궁금증을 해결하기 좋습니다.

저는 M1이 탑재된 맥북을 쓰고 있는데 책은 macOS x86-64 환경 기반으로 작성되어서 그런지 실습 파일이 저는 제대로 작동하지 않았습니다. 

inspect해보니 OOM Kill 때문이었는데 실리콘 맥을 쓰는 경우 저자가 준 docker-compose.yml을 수정하여 limit을 넉넉하게 늘려주면 잘 작동할 겁니다.

 

* 추천 대상

실습하려면 컨테이너 환경의 네트워크에 대한 개념은 알아야지 원활할 것 같다는 생각이 들었습니다.

아무래도 최소 Docker나 K8S 같은 분산 시스템에 관해 어느정도 익숙한 분이 읽으면 좋을 것 같습니다.

처음 접하면 복잡할 수 있는 OpenTelemetry를 직접 이것저것 조작하며 실습하며 익혀보고 싶은 분께 추천드립니다.

 

 

마이크로서비스 아키텍처의 성격상 여러개로 나누어진 서비스들을 통과하는 여러 메시지나 상태등에 대한 모니터링과 추적에 대한 중요성은 굉장히 중요하다.


관찰 가능성은 시스템의 외부 출력에 대한 결과 값(지식)으로부터 시스템의 내부 상태를 얼마나 잘 추론 할 수 있는지를 나타내는 척도입니다출력 값 측정으로부터 시스템의 상태를 추정하도록 설계된 동적 시스템을 상태 관찰 가능성 또는 단순히 해당 시스템의 관찰 가능성이라 합니다. – 위키피디아


이 책은 모니터링의 상위 개념인 관측 가능성(observability)에 대한 개념등에 대한 내용을 다루며, 오픈소스인 OpenTelemetry를 이용한 예제를 제공하고 있는데, 굉장히 다양한 예제를 제공하고 있어 실무에 적용하기 위한 참고서로도 적합한 것으로 보인다.


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

 

1230827.jpg

 

 

서비스를 개발할 때 관찰이 중요합니다.

 

관찰이 중요한 이유는 잘못된 상황을 바로잡기 위함입니다.

 

서비스를 개발할 때 개발과 테스트를 같이 진행하는 회사가 있습니다.

 

미리 테스트를 코드를 짜면서 코드 개선과 리팩토링을 안전하게 진행이 가능합니다.

 

서비스 품질 향상에 도움을 주는 책을 소개해 드리겠습니다.

 

소개해 드릴 책은 ‘관찰 가능성 엔지니어링’입니다.

 

서비스는 개발한 후 배포하고 운영하게 됩니다.

 

운영 중 오류가 발생하면 대비하지 않으면 오류를 찾을 때 애를 먹을 수 있습니다.

 

잠재적인 오류도 미리 알고 사전에 방지할 수 있다면 효과적으로 운영할 수 있을 것입니다.

 

운영을 어떻게 효과적으로 운영하는지 같이 살펴보겠습니다.

 

 

2230827.jpg

 

 

◆ 복잡한 환경에서의 효과적인 오류 관리

개발환경이 복잡해지면서 오류를 찾는 과정도 더 복잡해졌습니다.

 

과거에 모니터링으로 답을 찾아왔지만, 복잡한 환경에서는 역부족입니다.

 

복잡한 환경에서도 효과적인 방법이 있는데요.

바로 관찰 가능성 엔지니어링입니다.

 

관찰 가능성 엔지니어링은 소프트웨어 시스템의 작동 및 성능을 모니터링하고 분석해 문제를 찾고 해결하는 과정을 가리키는 개념입니다.

 

시스템을 운영하면서 문제가 발생했을 때 실시간으로 파악을 가능하게 해줍니다.

 

모니터링은 많이들 접한 용어이지만 관찰 가능성 엔지니어링의 개념부터 실무방법 팁도 잘 소개되어 있습니다.

 

 

3230827.jpg

 

 

◆ OpenTelemetry를 활용한 신뢰성 확보와 성능 최적화

시스템의 신뢰성 유지와 문제 해결하기 위해선 시스템이 오류 없어야 합니다.

 

관찰 가능성 개념은 시스템에서 발생하는 데이터를 수집, 분석한 후에 시각화하여 동작합니다.

 

시각화된 정보를 통해 동작을 이해하고 성능이 향상됨을 확인할 수 있습니다.

 

관찰 가능성을 할 수 있도록 도와주는 오픈소스 프로젝트가 있는데요.

바로 OpenTelemetry입니다.

 

OpenTelemetry는 분산된 애플리케이션 환경에서의 추적(tracing)과 메트릭(metrics) 데이터 수집이 가능합니다.

 

추적은 분산 시스템에서의 작업 흐름과 병목 현상을 파악하는 데 사용됩니다.

 

메트릭은 성능 지표를 모니터링하여 시스템의 상태와 동작을 파악할 수 있습니다.

 

OpenTelemetry는 개발자들이 애플리케이션의 복잡한 동작과 성능을 이해하고 최적화하는 데 도움을 줍니다.

 

이를 통해 시스템의 문제를 빠르게 식별하고 대응이 가능합니다.

 

또한 모니터링과 디버깅을 향상시켜 시스템 운영 및 유지보수의 효율성을 극대화할 수 있습니다.

 

 

4230827.jpg

 

 

끝으로 이 책은 식료품 주문 웹 애플리케이션을 예시로 설명해 줍니다.

 

관찰 가능성 엔지니어링에 대해 예시를 통해 계측부터 이벤트 포착도 배울 수 있습니다.

 

설계, 코딩, 테스트, 배포, 운영 등 소프트웨어 개발 주기 내에서 어떻게 적용할 수 있는지 잘 알려줍니다.

 

관찰 가능성이 왜 필요한지와 어떻게 적용할 수 있는지 궁금한 개발자, 엔지니어, 시스템 운영자라면 이 책이 도움 될 것입니다.

 

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

 

 

Author: 알렉스 보텐 지음 / 노승헌 옮김

출판사: 한빛미디어

Score /5: ⭐️⭐️⭐️⭐️⭐️

엔터프라이즈 환경에서 분산 컴퓨팅 및 마이크로 서비스라는 용어가 많이 들린다. 분산 컴퓨팅은 정말 오래된 용어 이고 마이크로서비스는 비교적 최근에 많이 들리기 시작한 용어인 것 같다.
이러한 분산 환경에서 나의 서비스가 정상적인지, 데이터는 어떤식으로 흘러가는지, 문제가 생겼을 때 문제를 어떻게 해결할지에 대한 의사결정에 대한 부분의 근거는 항상 데이터가 되어야 한다.
'그럼? 기존의 모니터링만으로 충분한걸까?'
답은 여러분들도 알다시피 No 이다. 그럼 모니터링에 어떤 개념을 더해야할까?
책에서 필자가 말했듯이 모니터링 + 로깅 + 추적의 3가지 개념을 아우르는 개념이다. 생각보다 많이 복잡하고 어떻게 구현을 해야할지 막막하다. 그런 상황 또는 관찰 가능성에 대한 이해를 필요로하는 독자들은 이 책이 많은 도움이 될 것 같다.
오픈 소스인 OpenTelemetry를 기반으로 설명을 이루어가고 있고 각각의 관찰가능성 요소에 대한 이해를 명확히 할 수 있도록 가이드를 제공한다.
또 다른 장점은 친절함이다. 필자의 눈높이와 독자의 눈높이는 아무래도 경험 및 지식의 차이로 인해 다를 수 밖에 없는데 필자가 눈높이를 독자 수준에 맞춰서 친절히 원인 및 결과 기준으로 자세히 설명하고 있다.
마지막 장점은 코드를 기반으로 설명한다는 점이다. 요즘 가장 핫한 기술중 하나인 쿠버네티스라든가 Helm등 다양한 최신 기술을 모니터링 관점에서 코드 기반으로 이해하는 시간을 가질 수 있다.

관찰가능성은 이제는 놀랍지도 새롭지도 않지만 공부해야할 부분이 많고 실무에 가장 강력한 영향을 미치는 분야중 하나다. 이 책을 통해서 기존 엔지니어분들이 도움을 받았으면 좋겠다.

 

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

 

 

이번에 리뷰할 책은 "관찰 가능성 엔지니어링" 입니다. 사실 처음 접하는 사람에게는(저 포함) observability 라는 용어가 조금 생소할 수도 있습니다. ​

 

다만 강렬했던 것은 책의 표지인데 내가 그 동안 알고 있던 모니터링의 개념은 정말 빙산의 일각이었던 것일까? 라는 의문을 던집니다. 그래서 도대체 그 관찰 가능성이라는게 뭔데? 라는 마음으로 책을 열어보게 됩니다. 

 

책의 목차는 크게 3개의 파트와 12개의 챕터로 나눠져 있습니다.

[PART 1 기초]

[PART 2 애플리케이션 계측]

[PART 3 원격 측정 데이터 활용]

 

언뜻 목차만 봐서는 확 와닿지 않는 것은 사실입니다. 

 

그래서 이 책은 많은 도표로 이해를 돕는데, 데이터들의 요청과 응답과 관련하여 다이어그램을 많이 제공해줍니다. 

 

개인적으로 인상깊게 봤던 부분은 챕터7의 계측 라이브러리였는데, 단순히 requtes 라이브러리를 임포트 하여, URL을 호출하는 간단한 소스를 오픈텔레메트리를 사용하여, 추가적인 코드 없이, 계측이 가능하다는 것이었습니다.

 

책에 나와있는대로 추가로 설치 해줍니다.

 

pip3 install opentelemetry-instrumentation-requests

 

그리고 naver.com을 호출하는 코드를 짠 후 테스트를 해봅니다.

 

opentelemetry-instrument --traces_exporter console --metrics_expoter console --logs expoter console python http_request.py   

코드 수준의 명령어 이긴 하지만 사실 이것만으로 정말 많은 정보를 얻을 수 있습니다. 

 

                    "telemetry.sdk.language": "python",

 

                    "telemetry.sdk.name": "opentelemetry",

 

                    "telemetry.sdk.version": "1.19.0",

 

                    "telemetry.auto.version": "0.40b0",

 

                    "service.name": "unknown_service"

 

        

                                        "attributes": {

 

                                            "http.method": "GET",

 

                                            "http.scheme": "https",

 

                                            "http.host": "www.naver.com",

 

                                            "net.peer.name": "www.naver.com",

 

                                            "http.status_code": 200,

 

                                            "http.flavor": "1.1"

 

                                        },

 

                                        "start_time_unix_nano": 1692959232698083263,

 

                                        "time_unix_nano": 1692959232699013281,

 

                                        "count": 1,

 

                                        "sum": 39,

 

                  

 

                                        "min": 39,

 

                                        "max": 39

 

                                    }

 

 

적은 노력으로 많은 것을 얻을 수 있는 만큼 설레는 일이 또 없습니다.

 

오픈텔레메트리는 이렇게나 적은 코드로도 정말 많은 것을 줄 수 있는 기술입니다. 

 

물론 잘만 사용한다면 말이죠.

 

 

사실 처음 접한 사람에게는 '노는 물이 다르다.' 라고 느낄 수도 있습니다. 

 

하지만 우리가 보아왔던 말 그대로 빙산의 일각보다 그 심해에 숨겨진 것을 알게 된다면, 우리는 더 많은 것을 이해할 수 있을거라 생각합니다. 

 

 

#관찰가능성 #오픈텔레메트리 #한빛출판미디어

 

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

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

마이크로서비스 아키텍처는 소프트웨어 시스템을 여러 작은 독립적인 서비스로 분할하는 접근 방식이다. 이러한 서비스들은 각자의 데이터 저장소와 비즈니스 로직을 가지며, 분산되어 작동한다. 이러한 아키텍처는 개발과 배포의 유연성을 제공하지만, 동시에 복잡성과 관리 어려움을 초래할 수 있다. 이러한 복잡성을 다루기 위해 옵저빌리티(observability)는 중요한 개념이다.

이 책은 옵저빌리티 개념을 아주 자세하게 설명한다. 익숙한 모니터링 개념부터 시작해서 왜 옵저빌리티가 필요한지 어떻게 적용할 수 있는지까지 알려준다. 또한 OpenTelemetry의 개념을 이해하고 메트릭(Metrics), 로그(Logs), 트레이스(Traces)와 같은 용어와 이들이 어떻게 시스템 모니터링에 사용되는지 이해하도록 도움을 준다.

뿐만 아니라 바로 실전에서 활용할 수 있는 실용적인 팁도 준비돼 있다. 책 안에서는 장보기 주문 웹 애플리케이션을 활용해서 실제로 오픈소스 도구를 사용하면서 옵저빌리티의 여러 가지 요소를 적용하는 법도 알려주고 있다.

한마디로 이 책은 오픈소스를 활요해서 인프라, 서비스, 애플리케이션을 더 잘 이해하고자 하는 소프트웨어 개발자, 엔지니어, 시스템 운영자들에게 정말 유용한 자료다.

다만 실습 내용인 예제 애플리케이션을 빌드하고 OpenTelemetry API와 SDK를 사용해 계측하고 이해하기 위해서는 파이썬에 대한 사전 지식이 있다면 좋겠다.

 

관찰가능 엔지니어링

 

간단한 프로그램을 작성하는 일에서부터, 여러 복잡한 프로그램들을 한데 묶어 시스템을 구성하는 것까지, 프로그램들이 어떻게 동작하는 지 아는 것은 가장 중요한 일이 아닐 수 없다 생각한다. 하나의 프로그램의 경우라면 문제점 발생 시, 그나마 로그 파일을 로컬에서 분석하는 것으로 어느정도 문제점의 실마리를 파악할 수 있겠지만, 요즘같은 복잡한 분산 시스템 환경에서 동작하는 규모가 아주 큰 시스템의 경우라면, 복잡성은 차원이 다른 문제일 것이다. 문제점의 트리거링 포인트가 어떠한 메시지나 이벤트인지 확인하는 것도 쉽지 않으며, 해당 이벤트가 바로 영향을 주는 것이 아니라 여러가지 메시지 전송 단계를 거쳐 최종적으로 현재 문제를 만든 것인지 확인하는 것은 더더욱 쉽지 않다. 그래서 이러한 문제점이 발생하는 것을 대비하여, 특히 규모가 큰 프로그램들의 경우, 각 구성 프로그램별로 로그 메시지를 저장하는 것은 물론, 이벤트나 메시지의 흐름을 구분가능한 정보(메시지 ID 또는 5 tuple정보 등)을 이용하여 기록하는 것은 물론, 상세한 통계 및 에러 시 알람, 폴트 등 많은 추적가능한 방법들을 고민해 시스템 설치 및 테스트 그리고 운용 중 언제라도 파악할 수 있도록 하려고 많은 노력을 하고 있다.

관찰 가능성 엔지니어링은 이러한 복잡한 문제점 파악을 위한 노력들에 대한 결과를 좀 더 쉽게 이용할 수 있도록 만들어 놓은 OpenTelemetry를 어떻게 기존 시스템에서 이용할 수 있을 지, 특히 CNF 환경에서 잘 이용할 수 있을 지에 대해 기본 개념부터 시작해, 어떻게 사용하는 지 하나하나 설명하고, 실제 k8s 현장 배포 및 분석 방법에 대해서 설명해 주는 책이다. 책의 표지에 그려진 그림이 사실 위에서 기술한 내용 모두를 설명하고 있다고 생각한다. 우리가 단순히 눈으로 보는(monitoring) 내용은 정말 일부분에 불과한 현상으로 그 아래에서 돌아가는 복잡하고 거대한 시스템의 흔적에 대한 확인(observability)는 가려져 있다. 

 

이 책은 총 3부에 걸쳐, OpenTelemetry가 무엇인지, 어떻게 사용하고 응용할 지에 대해 단계별로 설명을 하고 있다. 1부에서a는 기존 레거시 시스템들에서 사용했던 툴들 및 연동 시 문제 등에 대해 간략하게 설명하고 OpenTelemetry가 왜 나오게 되었는 지에 대해 간단히 설명한다. 또 관련 용어 및 개념에 대해 예시를 이용하여 설명한다. 2부에서는 1장에서 설명한 개념들에 대해, 실제 구현을 해 보면서 개념을 명확히 하고, OpenTelemetry를 이용해서 어떻게 사용할 수 있는지 설명한다. OpenTelemetry가 제공하는 기능 중 대표적인 기능인 추적, 메트릭, 로그에 대해 각 기능이 어떻게 동작하는 지에 대해 Python script를 이용하여 환경 구성 및 사용 방법에 대해 설명한다. 또 단순히 기본 제공 기능 뿐만 아니라, 응용 프로그램에서 추가적으로 원하는 데이터를 활용 시 어떻게 해야하는 지에 대한 예시를 제공하여, 단순한 tutorial이 아닌 언제든 개발시 참고가능한 레퍼런스 역할을 할 수 있도록 하였다.

  - 마지막으로 3부에서는, 2부에 설명한 기능들을 어떻게 활용하는 것이 좋은지에 대해 설명한다. 당연한 이야기겠지만, 잔뜩 설명을 해 두고 이를 실제 CNF 환경에 대해 어떻게 배포를 하고, 어떻게 백엔드 환경을 구성하여야 할지 알 수 없다면, 큰 의미가 없게 된다. K8s 환경에서 여러가지 시나리오 별로 배포 시 어떻게 설정 및 구성을 해야하는 지에 대한 방법을 설명한다. 그리고 수집한 데이터를 쉽게 분석할 수 있도록, 오픈 소스 툴들(집킨, 예거, 프로메테우스, 그라파나)을 백엔드로 활용하는 방법도 하나하나 상세히 설명한다.

 

보통 이러한 책들의 경우, 책의 내용이 늘어나는 부담도 있고, 저자가 모든 경우의 응용 환경에 대해 고려하기가 쉽지 않아, 설명하고자 하는 부분을 위주로 상세 설명을 하는 경우가 많다. 그래서 특정 챕터를 보려할 때, 해당 챕터를 보다가 다시 앞으로 돌아가 차근차근 책을 읽어 나가야 하는 경우가 많이 있다. 하지만 이 책은 그각 챕터별로 해당 챕터만 보고도 관련 내용을 쉽게 확인할 수 있도록 구성되어 있다. 테스트 환경 구성을 쉽게 하기 위해 처음부터 하나씩 툴 설정 방법을 설명하고, 설명하는 기능이 늘어감에 따라 하나씩 하나씩 코드가 추가되는 내용을 쉽게 확인할 수 있도록 해 두었다. 간단히 관련 내용을 설명하자면, 먼저 다음과 같이 챕터에서 설명할 내용의 구성에 대해 전체적으로 설명을 하며 필요 시, 이해하기 쉽도록 개발 환경 또는 스크립트 구성에 대해 도식화를 해 둔다.

Pasted Graphic.png

 

그리고나서 기본 베이스가되는 script에 대해 설명을 하고 해당 스크립트 동작 결과를 보여준다. 설명이 진행되면서 기능을 추가되는 과정을 반복하는데, script가 어느 부분이 어떻게 추가되는 지 변경 내용을 다른 색으로 구분해 눈에 변경 사항이 쉽게 들어올 수 있게 하여, 코드 확인을 쉽게 해 준다.

Pasted Graphic 1.png

 

script 실행 결과의 역시 마찬가지이다.

 

Pasted Graphic 2.png

 

어찌보면 사소할 수 있지만, 책의 내용과는 별개로 이런 부분은 필요한 챕터만 선택적으로 읽어 가나가는 데 있어 시간도 절약되고 빠른 이해에도 도움이 되어, 다른 책과 차별적인 포인트라 생각한다.

 

끝으로 이 책의 대상독자를 짚으며 리뷰를 마치려 한다. 책의 제일 처음 부분에 있는 대상 독자에 기술되어 있는 것처럼 (중급이라 기술되어 있음), 내용을 무리없이 이해하는데는 어느 정도의 시스템 지식, CNF 환경에 대한 지식 그리고 Python script에 대한 지식이 필요할 것으로 생각한다. 개발을 해보지 않은 분이나, 이제 막 개발을 시작하는 분들의 경우, 이 책에서 언급하는 내용들을 충분히 이해하고 필요성을 느끼기 어려울 수도 있기 때문이다. 또 CNF 시스템 및 k8s 나 docker 환경에 대한 익숙함, 기본적인 Python 스크립트 지식이 역시 책에 제공된 코드를 테스트해보는데 중요할 것으로 생각한다. 하지만, 반대로 생각해보면 이 책을 천천히 읽으며, 필요한 내용들을 하나씩 공부하면서 책을 익혀나간다면, 책을 다 읽고났을 때, 또 다른 분야에 대한 접근을 하는데 많은 도움이 되는 지식들을 이미 지니고 있을 것이라 생각된다.

 

 

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



항상 배포 전날은 긴장이 된다.

개발자는 아니지만 아니 개발자가 아니라서 더 긴장이 된다.

QA팀을 거쳐 일반적으로 발생하지 않는 케이스들 까지 모두 확인을 한 뒤라도

항상... 배포 전날은 굉장히 신경이 쓰이고

배포하는 시간이 언제든 상관없이 배포 직후에는 기본적인 테스트를 빠르게 수행해본다.

내 직무가 아님에도 불구하고..

 

개발에 버그가 없을 순 없지만

개발팀 친구들과 이야기를 나눌 때 종종 물어보던 부분이

모니터링에 대한 부분이다.

막상 문제가 터지기 전에 미리 알 수 있는 방법은 없나?

분명 문제가 될 것으로 예측이 되는데 왜 우리는 특정 기능에 대해서만 로드 및 밸런스 테스트 정도만 진행하는가.

여러번 배포 이후 라이브 서버에서 문제가 되었거나 문제 발생의 소지가 있어서 급하게 작업했던 기억이 있지 않나..

 

라는 질문에 대한 일종의 해답을 제시하는 책을 만났다.

 

결론 부터 말하자면 모니터링의 상위 개념인 옵저버빌러티(Observability) 에 대한 이야기이고

보다 라이브하게 말하자면 OpenTelemetry 사용법이다.

사용법에 가깝다! 가 아니라 그냥 대 놓고 사용법이다.

 

물론 사용법만 있는 것은 아니고

나처럼 Observability에 대한 개념이 생소한 사람을 위한 개론적인 설명도 충분히 있다.

 

20230824_101002.jpg

 

 

그래 읽어보니 모니터링 그 이상인 것도 알겠고

필요하다는 것도 알겠다.

 

20230824_101018.jpg

 

20230824_101126.jpg

 

 

또한 책의 구성 역시 시각적인 자료의 구성부터 챕터 말미의 요약 섹션까지 나무랄데 없었으나

아무리 간단하고 아무리 쓸모 있어도

계측시스템을 OpenTelemetry 사용법 및 추천도서 하나만 보고 실제 서비스에 적용하기에는 무리가 있다고 판단이 되었다.

 

물론 독립적인 신규 서비스를 테스트 할 때 적용은 한 번 해볼 것 같긴한데

일단 내가 하고 싶다고 바로 적용할 수 있는 것도 아니니

개발팀장님부터 해서 이 책을 선물하며 우리도 신문물 적용좀 해보자고 잘 꼬드겨 봐야겠다.

 

책의 서두에서 밝히듯 모니터링 시스템 구축 및 Observavility 관련 스트럭쳐 구성은 이야기만 꺼내도 개발팀에서는 발작버튼과 같은 역할을 해 온터라 쉽지는 않겠지만

그래도 내가 집요하게 설득하느니 슬쩍 이 책을 한 번 들이밀어보고 이야기를 꺼내 볼까 한다.

 

잘.... 안될 것 같긴한데....

 

물론 이건 책이 부족해서가 아니라 밤잠을 줄여가며 작업하는 개발팀에서 새로운 무언가를 쉽사리 받아들여주지 않을 것 같다는 느낌적인 느낌 때문이다..

 

모니터링의 도입으로 문제 발생의 빈도가 확 줄어들거나 예측 가능성이 비약적으로 높아진다면

아니 높아져서 단 한번이라도 등골서늘한 경험을 피할 수 있다면

그 다음 부터는 잘 도입해서 쓸 것 같지만

아직은 미지수다...

특히 오픈소스 하나에 의존해서 모니터링 시스템을 구축한다..... 음.... 잘 모르겠다..

요즘엔 개발이라는 것이 대부분 외부 리소스의 조합으로 진행되지만 모니터링의 디펜던시가 유일한 오픈소스 솔루션에 걸린다면... 고민을 많이 하게 될 것 같다.

 

다만 이러한 Observability 관련 소스나 경험들이 더 많이 확산되어 개발팀의 야근이 줄어들고

긴급 상황 발생이 더 많이 줄어들길 바란다!

 

 

 

 

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



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

 

이 책은 전반적으로  OpenTelementry 오픈 소스의 사용법을 알려준다.

OpenTelementry의 개념이 무엇인지 설명하고, 어떻게 설정하는지, 계측 방법에 대해 자세히 다룬다.

 

이 책을 읽으면서 가장 좋았던 점은 예시가 자세하다는 점이었다.

책을 1회독 할 때에는 정말 실무에서 당장 써야하는게 아니면 그저 읽기만 하는데, 

예시가 자세하여 실제로 하는 것 처럼 이미지 트레이닝을 할 수 있었다.

 

또한 챕터 마지막에 정리하기가 있어서 한 번 더 앞의 내용들을 짚어 볼 수 있어 좋았다.

사실 책의 내용이 나에게 좀 어려웠다.

그래서 읽으면서도 바로 앞의 내용이 바로 연결되지 않았는데,

마지막에 정리하기로 한 번 더 정리해주니 조금 더 이해가 되는 것 같다.

 

앞서 이 책의 대상이 중급이라 적혀 있는 만큼, 사실 쉬운 내용을 다루는 책은 아니다.

그래도 msa를 다루는 개발자라면 꼭 읽어보면 좋을 것 같다!

 

 

<완독 후 느낀점>

알렉스 보텐의 "관찰 가능성 엔지니어링"은 현대 IT 환경에서 필수적인 개념인 '관찰 가능성'에 대해 철저하게 탐구한 책이다. 이 책은 단순히 이론만을 제시하는 것이 아니라, 실제 식료품 주문 웹 애플리케이션을 예시로 하여 이론을 실무에 적용하는 방법을 상세하게 제시한다. 여기에는 OpenTelemetry를 포함한 다양한 오픈 소스 도구의 활용 방법이 포함되어 있다.

 

내 직업인 클라우드 엔지니어로서 이 책을 읽으며 느낀 것은, 관찰 가능성이 현대 클라우드 환경에서 얼마나 중요한지, 그리고 이를 실무에 어떻게 적용해야 할지에 대한 깊은 통찰을 얻을 수 있었다는 점이다. 특히 나의 일상 업무에서 자주 다루는 도커와 쿠버네티스와 같은 클라우드 컴퓨팅 도구에 대한 계측과 분석에 관한 실용적인 지식을 얻을 수 있었다.

 

이 책에서는 관찰 가능성의 개념을 이해하는 것뿐만 아니라, 실제로 애플리케이션을 계측하고 분석하는 과정을 단계별로 설명한다. 이러한 설명을 통해 나는 관련 시스템을 더욱 효과적으로 모니터링하고, 오류를 빠르게 파악하고 해결하는 방법을 알 수 있었다.

 

결론적으로, "관찰 가능성 엔지니어링"은 현대 클라우드 엔지니어로서 필수적인 지식과 기술을 제공하는 중요한 안내서다. 이 책을 통해 관찰 가능성의 중요성을 다시 한 번 깨닫게 되었으며, 내 전문 분야에서의 업무 효율성과 성공을 더욱 높일 수 있을 거라는 확신이 들었다.

 

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

 

실제 링크

 

관찰 가능성 엔지니어링 한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다. 

관찰 가능성 엔지니어링(observability)은 관리하고 있는 복잡한 시스템과 어떻게 상호 작용하고 이해할 수 있는가에 관한 것으로 로그. 메트릭, 트레이스 등 시스템이 생성하는 텔레메트리 데이터를 기반으로 시스템의 현재 상태를 측정하는 역량을 일컫는다. 감사. 예외 처리, 이벤트 로깅 등을 구현한 자바 애플리케이션은 이미 관찰 가능성이 부여된 셈이다. 관찰 가능성 엔이지어링은 여기서 한 걸음 더 나아가 분산 시스템의 관찰 가능성을 어떻게 구축하고 사용할 수 있는지 상세하게 소개한다.

 

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


책의 구성은 Open Telemetry 개발된 배경과 Open Telemetry 함께 사용되면 좋은 여러 여러 오픈소스들도 함께 배울수 있다. 소스도 있어 따라가기 수월하다.

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

데이터 엔지니어링을 공부하기 위해 읽어본 책이다. 

 

 

총평

- 책의 난이도 : ★★

- 추천 별점     : ★★★★

- 추천 독자     : 파이썬을 어느정도 알고 있는 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. 이 책은 그림이 많다.

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

 

 

 

 

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

 

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

 

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

결제하기
• 문화비 소득공제 가능
• 배송료 : 2,000원배송료란?

배송료 안내

  • 20,000원 이상 구매시 도서 배송 무료
  • 브론즈, 실버, 골드회원이 주문하신 경우 무료배송

무료배송 상품을 포함하여 주문하신 경우에는 구매금액에 관계없이 무료로 배송해 드립니다.

닫기

리뷰쓰기

닫기
* 상품명 :
관찰 가능성 엔지니어링
* 제목 :
* 별점평가
* 내용 :

* 리뷰 작성시 유의사항

글이나 이미지/사진 저작권 등 다른 사람의 권리를 침해하거나 명예를 훼손하는 게시물은 이용약관 및 관련법률에 의해 제재를 받을 수 있습니다.

1. 특히 뉴스/언론사 기사를 전문 또는 부분적으로 '허락없이' 갖고 와서는 안됩니다 (출처를 밝히는 경우에도 안됨).
2. 저작권자의 허락을 받지 않은 콘텐츠의 무단 사용은 저작권자의 권리를 침해하는 행위로, 이에 대한 법적 책임을 지게 될 수 있습니다.

오탈자 등록

닫기
* 도서명 :
관찰 가능성 엔지니어링
* 구분 :
* 상품 버전
종이책 PDF ePub
* 페이지 :
* 위치정보 :
* 내용 :

도서 인증

닫기
도서명*
관찰 가능성 엔지니어링
구입처*
구입일*
부가기호*
부가기호 안내

* 온라인 또는 오프라인 서점에서 구입한 도서를 인증하면 마일리지 500점을 드립니다.

* 도서인증은 일 3권, 월 10권, 년 50권으로 제한되며 절판도서, eBook 등 일부 도서는 인증이 제한됩니다.

* 구입하지 않고, 허위로 도서 인증을 한 것으로 판단되면 웹사이트 이용이 제한될 수 있습니다.

닫기

해당 상품을 장바구니에 담았습니다.이미 장바구니에 추가된 상품입니다.
장바구니로 이동하시겠습니까?

자료실

최근 본 상품1