마이크로서비스와 클라우드가 보편화된 지금, ‘관찰 가능성’은 시스템이 어떻게 작동하고 어디서 문제가 생기는지 실시간으로 알 수 있게 해주는 놀라운 개념입니다. 이 책은 익숙한 모니터링 개념을 시작으로 왜 관찰 가능성이 필요한지, 어떻게 적용할 수 있는지 심도 있게 설명하며, 실무에 바로 활용 가능한 실용적인 팁도 제공합니다.
이 책에서는 식료품 주문 웹 애플리케이션을 예시로 사용합니다. 따라서 애플리케이션의 구조 분석부터 관찰 가능성의 다양한 요소들을 적용해보는 것까지 오픈 소스를 활용해 차근차근 따라 해볼 수 있습니다. 특히 이 책에서 중점적으로 설명하는 OpenTelemetry를 사용하면 단 한 번의 계측만으로 유의미한 데이터를 얻고 활용해볼 수 있습니다. 또한 도커, 쿠버네티스와 같은 필수 클라우드 컴퓨팅 도구를 비롯하여 여러 계측 라이브러리에 익숙해질 수 있습니다.
설계, 코딩, 테스트, 배포, 운영 등 소프트웨어 개발 주기 내에서 다양한 역할을 수행하는 개발자, 엔지니어, 시스템 운영자라면 이 책을 통해 소프트웨어를 계측하고, 분석하고, 오류를 해결해보세요!
저자소개
저자
알렉스 보텐
Lightstep의 수석 소프트웨어 엔지니어. 10년 동안 여러 조직이 클라우드 네이티브 환경에 적응할 수 있도록 돕는 일을 해왔습니다. 또한 핵심 네트워크 인프라부터 모바일 클라이언트 애플리케이션까지 분산 애플리케이션에 대한 복잡한 트러블슈팅을 어떻게 수행해야 하는지 직접 경험하며 지식을 쌓고 있습니다. 그리고 이러한 경험을 통해 관찰 가능성 분야에 관심을 갖게 되어 여러 오픈 소스 프로젝트에 기여하고 있습니다. 2019년부터 OpenTelemetry 프로젝트의 기여자, 승인자, 유지 보수 담당자로서 프로젝트를 발전시키는 데 주도적으로 참여하고 있으며 오늘날 대규모 OpenTelemetry 커뮤니티가 만들어지는 과정에 크게 기여했습니다. 무엇보다 우리 주변의 기술을 이해하고 지식을 공유하는 것을 좋아합니다.
역자
노승헌
눈물 없이 볼 수 없는 한 편의 뮤직비디오 같은 인생을 만드느라 바쁜 센티멘털리스트. 삼성네트웍스, SK텔레콤, 아카마이 코리아를 거치면서 개발자, 프로젝트 매니저, 제품 오너, 솔루션 아키텍트 등 다양한 영역에서 자신을 시험해보고 있다. 현재는 라인플러스 Enablement Engineering 팀에서 LINE의 다양한 서비스가 쾌적한 사용자 경험을 제공할 수 있도록 이슈를 관찰하고 문제를 해결하는 역할을 수행하고 있다. 집필한 도서로 『나는 LINE 개발자입니다』(한빛미디어, 2019, 공저), 『슬랙으로 협업하기』(위키북스, 2017), 『소셜 네트워크로 세상을 바꾼 사람들』(길벗, 2013), 번역한 도서는 『데브옵스 엔지니어를 위한 실전 관찰 가능성 엔지니어링』(한빛미디어, 2024), 『관찰가능성 엔지니어링』(한빛미디어, 2023) 등이 있습니다.
모니터링을 포함하는 상위 개념인 관찰 가능성에 관해 자세히 설명합니다. 그리고 관찰 가능성을 위해 개발된 대표적인 오픈 소스 OpenTelemetry를 활용해 애플리케이션에 관찰 가능성을 직접 적용해봅니다. 코드 예제뿐만 아니라 단계별로 애플리케이션 코드를 계측하고 분석하는 원리를 담고 있어 실무에서도 쉽게 활용할 수 있습니다. 책의 모든 내용을 이해하고 나면 자신의 애플리케이션을 계측해 오류의 원인은 물론, 잠재적인 오류까지도 찾아낼 수 있을 것입니다.
특히 이 책은 관찰 가능성의 역사와 개념부터 애플리케이션 계측과 분석까지 모두 다루기 때문에 관찰 가능성을 처음 접하는 사람도 쉽게 이해할 수 있습니다. 또한 이전에 시도해보지 않은 방법으로 인프라, 서비스, 애플리케이션을 개발/운영하고자 하는 소프트웨어 엔지니어, 시스템 운영자에게 원격 측정 데이터를 활용하는 실용적인 팁을 제공합니다.
오픈소스를 활용한 분산 애플리케이션 계측부터 오류 추적과 분석까지 다루는 한빛미디어의 '관찰가능성엔지니어링'는 관찰 가능성의 기본 개념과 구성요소를 설명하고, 예제를 통해 OpenTelemetry를 적용하는 방법을 다루고 있습니다. 마이크로아키텍쳐가 일반화되고 분산 시스템에서 버그를 추적하거나 어떤 상황이 일어나고 있는지 알아내는 것은 다양한 로그들을 취합하고 정리해야하기가
쉽지 않은 작업이지만 OpenTelemetry를 이용하여 분산된 추척 및 매트릭 로그를 표준화한 형태로 제공받을 수 있어 DevOps/SRE 분에 있는 개발자들은 유용하게 적용해 볼 수 있습니다.
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로 시스템을 추적하고, 성능 및 상태를 수량화된 데이터로 기록하는 메트릭, 로그에 대해 설명하고, 스팬, 추적, 컨텍스트 전파를 정의해 분산 추적의 개념을 설명해줍니다. 여기서 분산 추적이란, 코드 실행 경로와 상호 작용을 추적하여 여러 서비스 및 컴포넌트 간의 연결과 디버깅을 용이하게 하는 것을 말합니다. 또한 데이터를 저장하고 시각화하는 여러 오픈 소스 원격 측정 데이터 백엔드 시스템에 대해서도 언급하여, 시스템의 문제를 식별하는 법에 대해 알려줍니다.
책을 읽기 전엔 관찰 가능성이란 단어조차 낯설었지만, 책의 예제와 적용 사례를 찾아보며 건강한 시스템에 대해 다시 생각해보며 유익한 독서시간을 가졌다고 생각합니다. 이 책을 읽고, 모두 지속가능한 시스템에 대해 깨우치길 바라겠습니다.
마이크로서비스 아키텍처의 성격상 여러개로 나누어진 서비스들을 통과하는 여러 메시지나 상태등에 대한 모니터링과 추적에 대한 중요성은 굉장히 중요하다.
관찰 가능성은 시스템의 외부 출력에 대한 결과 값(지식)으로부터 시스템의 내부 상태를 얼마나 잘 추론 할 수 있는지를 나타내는 척도입니다. 출력 값 측정으로부터 시스템의 상태를 추정하도록 설계된 동적 시스템을 상태 관찰 가능성 또는 단순히 해당 시스템의 관찰 가능성이라 합니다. – 위키피디아
이 책은 모니터링의 상위 개념인 관측 가능성(observability)에 대한 개념등에 대한 내용을 다루며, 오픈소스인 OpenTelemetry를 이용한 예제를 제공하고 있는데, 굉장히 다양한 예제를 제공하고 있어 실무에 적용하기 위한 참고서로도 적합한 것으로 보인다.
마이크로서비스 아키텍처는 소프트웨어 시스템을 여러 작은 독립적인 서비스로 분할하는 접근 방식이다. 이러한 서비스들은 각자의 데이터 저장소와 비즈니스 로직을 가지며, 분산되어 작동한다. 이러한 아키텍처는 개발과 배포의 유연성을 제공하지만, 동시에 복잡성과 관리 어려움을 초래할 수 있다. 이러한 복잡성을 다루기 위해 옵저빌리티(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 환경에서 여러가지 시나리오 별로 배포 시 어떻게 설정 및 구성을 해야하는 지에 대한 방법을 설명한다. 그리고 수집한 데이터를 쉽게 분석할 수 있도록, 오픈 소스 툴들(집킨, 예거, 프로메테우스, 그라파나)을 백엔드로 활용하는 방법도 하나하나 상세히 설명한다.
보통 이러한 책들의 경우, 책의 내용이 늘어나는 부담도 있고, 저자가 모든 경우의 응용 환경에 대해 고려하기가 쉽지 않아, 설명하고자 하는 부분을 위주로 상세 설명을 하는 경우가 많다. 그래서 특정 챕터를 보려할 때, 해당 챕터를 보다가 다시 앞으로 돌아가 차근차근 책을 읽어 나가야 하는 경우가 많이 있다. 하지만 이 책은 그각 챕터별로 해당 챕터만 보고도 관련 내용을 쉽게 확인할 수 있도록 구성되어 있다. 테스트 환경 구성을 쉽게 하기 위해 처음부터 하나씩 툴 설정 방법을 설명하고, 설명하는 기능이 늘어감에 따라 하나씩 하나씩 코드가 추가되는 내용을 쉽게 확인할 수 있도록 해 두었다. 간단히 관련 내용을 설명하자면, 먼저 다음과 같이 챕터에서 설명할 내용의 구성에 대해 전체적으로 설명을 하며 필요 시, 이해하기 쉽도록 개발 환경 또는 스크립트 구성에 대해 도식화를 해 둔다.
그리고나서 기본 베이스가되는 script에 대해 설명을 하고 해당 스크립트 동작 결과를 보여준다. 설명이 진행되면서 기능을 추가되는 과정을 반복하는데, script가 어느 부분이 어떻게 추가되는 지 변경 내용을 다른 색으로 구분해 눈에 변경 사항이 쉽게 들어올 수 있게 하여, 코드 확인을 쉽게 해 준다.
script 실행 결과의 역시 마찬가지이다.
어찌보면 사소할 수 있지만, 책의 내용과는 별개로 이런 부분은 필요한 챕터만 선택적으로 읽어 가나가는 데 있어 시간도 절약되고 빠른 이해에도 도움이 되어, 다른 책과 차별적인 포인트라 생각한다.
끝으로 이 책의 대상독자를 짚으며 리뷰를 마치려 한다. 책의 제일 처음 부분에 있는 대상 독자에 기술되어 있는 것처럼 (중급이라 기술되어 있음), 내용을 무리없이 이해하는데는 어느 정도의 시스템 지식, CNF 환경에 대한 지식 그리고 Python script에 대한 지식이 필요할 것으로 생각한다. 개발을 해보지 않은 분이나, 이제 막 개발을 시작하는 분들의 경우, 이 책에서 언급하는 내용들을 충분히 이해하고 필요성을 느끼기 어려울 수도 있기 때문이다. 또 CNF 시스템 및 k8s 나 docker 환경에 대한 익숙함, 기본적인 Python 스크립트 지식이 역시 책에 제공된 코드를 테스트해보는데 중요할 것으로 생각한다. 하지만, 반대로 생각해보면 이 책을 천천히 읽으며, 필요한 내용들을 하나씩 공부하면서 책을 익혀나간다면, 책을 다 읽고났을 때, 또 다른 분야에 대한 접근을 하는데 많은 도움이 되는 지식들을 이미 지니고 있을 것이라 생각된다.
알렉스 보텐의 "관찰 가능성 엔지니어링"은 현대 IT 환경에서 필수적인 개념인 '관찰 가능성'에 대해 철저하게 탐구한 책이다. 이 책은 단순히 이론만을 제시하는 것이 아니라, 실제 식료품 주문 웹 애플리케이션을 예시로 하여 이론을 실무에 적용하는 방법을 상세하게 제시한다. 여기에는 OpenTelemetry를 포함한 다양한 오픈 소스 도구의 활용 방법이 포함되어 있다.
내 직업인 클라우드 엔지니어로서 이 책을 읽으며 느낀 것은, 관찰 가능성이 현대 클라우드 환경에서 얼마나 중요한지, 그리고 이를 실무에 어떻게 적용해야 할지에 대한 깊은 통찰을 얻을 수 있었다는 점이다. 특히 나의 일상 업무에서 자주 다루는 도커와 쿠버네티스와 같은 클라우드 컴퓨팅 도구에 대한 계측과 분석에 관한 실용적인 지식을 얻을 수 있었다.
이 책에서는 관찰 가능성의 개념을 이해하는 것뿐만 아니라, 실제로 애플리케이션을 계측하고 분석하는 과정을 단계별로 설명한다. 이러한 설명을 통해 나는 관련 시스템을 더욱 효과적으로 모니터링하고, 오류를 빠르게 파악하고 해결하는 방법을 알 수 있었다.
결론적으로, "관찰 가능성 엔지니어링"은 현대 클라우드 엔지니어로서 필수적인 지식과 기술을 제공하는 중요한 안내서다. 이 책을 통해 관찰 가능성의 중요성을 다시 한 번 깨닫게 되었으며, 내 전문 분야에서의 업무 효율성과 성공을 더욱 높일 수 있을 거라는 확신이 들었다.
관찰 가능성 엔지니어링 한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.
관찰 가능성 엔지니어링(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. 이 책은 그림이 많다.
도표나 그림이 거의 페이지마다 삽입되어 있어 읽는데 매우 효율적이고 이해가 쉽다.
이상으로 책 <관찰가능성>에 대한 리뷰를 마친다.
이 책을 한 번 읽고서 모든 것을 이해한다고 하기에는 조금 어렵지만, 두고두고 보면서 읽으면 조금 더 성숙한 엔지니어 / 개발자가 되지 않을까 싶다.