Top

실전 분산 추적 [마이크로서비스의 계측, 분석 그리고 디버깅]

  • 원서명Distributed Tracing in Practice: Instrumenting, Analyzing, and Debugging Microservices (ISBN 9781492056638)
  • 지은이오스틴 파커(Austin Parker), 다니엘 스푼하워(Daniel Spoonhower), 조나단 메이스(Jonathan Mace), 레베카 아이작스(Rebecca Isaacs)
  • 옮긴이남정현
  • ISBN : 9791161756998
  • 35,000원
  • 2022년 10월 31일 펴냄
  • 페이퍼백 | 416쪽 | 188*235mm
  • 시리즈 : 소프트웨어 아키텍처

책 소개

소스 코드 파일은 여기에서 내려 받으실 수 있습니다.
https://github.com/AcornPublishing/distributed-tracing

요약

클라우드 컴퓨팅 기반의 서버 개발과 외부 서비스 연동이 일상화되면서, 마이크로서비스에 대한 관심과 수요가 크게 늘어났다. 마이크로서비스를 기술적으로 구현하는 것만큼이나 중요한 것은 서비스의 안정성을 지속적으로 모니터링하고, 문제를 빠르게 파악해 해결책을 찾는 것이다. 또한 사후 회고를 정확하게 해 같은 문제가 반복되지 않도록 시스템을 잘 이해하고 있어야 한다.
이 책은 마이크로서비스의 이점만을 보며 따라가다가 놓칠 수 있는 마이크로서비스의 계측과 진단 방법을 어떻게 바라보고 구현해야 할지를 실무 엔지니어의 입장에서 상세하게 설명한다. 또한 복잡하게 구성된 분산 컴퓨팅 기술을 안정적으로 운영하기 위해 엔지니어들이 알아야 할 것들도 자세히 다룬다.

추천의 글

“이 책은 분산 추적의 세계를 처음 접하는 사람들을 위한 훌륭한 입문서이자 분산 추적을 한창 탐구하는 사람들을 위한 훌륭한 참고서가 될 것이다.”
—알렉스 이달고, 사이트 안정성 엔지니어,
『서비스 수준 목표 구현하기』 저자

이 책에서 다루는 내용

◆ 분산 추적 배포의 일부: 계측, 데이터 수집과 분석
◆ 계측을 위한 모범 사례: 서비스에서 추적 데이터 생성 방법
◆ 샘플링과 다른 여러 기술을 사용해 비효율성을 해결하거나 피하는 방법
◆ 분산 추적을 사용해 기준 성능을 개선하고 문제를 다시 일으킬 가능성을 빠르게 해결하는 방법
◆ 분산 추적 기술의 방향성과 미래

저자/역자 소개

지은이의 말

여러분이 이 책을 접하게 된 배경이 무엇이든 간에 분산 추적의 개념을 파악하고 이 기술을 사용해 마이크로서비스와 다른 여러 소프트웨어의 성능 및 운영을 이해할 수 있는 통찰력을 이 책을 읽으며 얻을 수 있을 것이다. 간단한 단어의 뜻부터 시작해보자.
분산 추적(분산 요청 추적이라고도 한다.)은 상관관계 로그를 기록하는 하나의 방법이다. 이 방법은 분산 소프트웨어 시스템을 운영하는 데 있어 성능 프로파일링, 운영 환경하에서의 디버깅, 실패나 다른 사고의 근본 원인 분석 등을 수행하면서 가시성을 확보할 수 있도록 도와준다. 분산 추적은 특정 서비스가 전체 서비스에서 정확하게 어떤 역할을 하는지 이해할 수 있게 해주며, 서비스와 분산 시스템 전체의 성능에 관한 의문 사항에 대해 질문과 답변을 할 수 있게 한다.
이 책이 끝날 무렵에는 흥미진진한 분산 추적의 세계를 이해하고 소프트웨어를 위해 분산 추적을 언제, 어디서, 어떻게 구현할 수 있는지 이해할 수 있을 것이다. 결국 분산 추적의 진짜 목표는 소프트웨어를 좀 더 쉽게 빌드하고 운영하고 이해하는 것이다. 이 책이 여러분의 팀에서 차세대 모니터링 전략과 관측 가능성 문화를 만들어 나갈 때 도움이 되길 바란다.

지은이 소개

오스틴 파커(Austin Parker)

라이트스텝의 개발자 애드보캣(developer advocate)이며 오픈 트레이싱(OpenTracing) 프로젝트의 핵심 컨트리뷰터이자 관리자다. 라이트스텝 이전에는 어프렌다의 소프트웨어 아키텍트로 일하면서 쿠버네티스를 사용해 엔터프라이즈 플랫폼을 만들었다.

다니엘 스푼하워(Daniel Spoonhower)

라이트스텝의 공동 창립자이며 최신 소프트웨어 시스템을 위한 성능 관리 도구를 개발했다. 구글에서 6년간 일했으며, 구글의 내부 인프라와 클라우드 플랫폼 팀의 일원으로 개발자 도구를 개발했다. 병렬 프로그램의 성능, 가비지 컬렉션(GC, Garbage Collection), 실시간 프로그래밍 방법론을 연구한 논문을 발표했다. 또한 카네기멜론대학교에서 프로그래밍 언어로 박사 학위를 받았다. 여전히 자신이 무엇을 좋아하는지 고민하는 삶을 살고 있다.

조나단 메이스(Jonathan Mace)

맥스 플랑크 소프트웨어 시스템 연구소의 임기 선임 교수로 클라우드 소프트웨어 시스템 연 구 그룹을 이끌고 있다. 대규모 분산 시스템을 이해하고 모니터링하고 디버깅하는 방법에 초점을 맞춰 연구하고 있으며, 주목할 만한 연구 성과로는 요즘 분산 추적에서 사용되는 배기지 개념을 도입한 피벗 추적(Pivot Tracing)이 있다. 페이스북의 내부 성능 추적 시스템인 캐노피(Canopy) 그리고 추적을 위한 추상화에 관한 박사 과정 연구 내용은 2018년 데니스 리치(Dennis M.Ritchie) 박사 학위 논문상에서 가작으로 선정됐다.

레베카 아이작스(Rebecca Isaacs)

현재 대규모 데이터 센터 서비스의 성능 조정과 디버깅에 관한 일을 주로 하는 소프트웨어엔지니어이다. 연구 과학자로 일해왔으며 최근에는 구글에서 연구 업무를 수행했다. 15년 전 마이크로소프트 연구소에서 처음으로 분산 시스템 추적을 연구하기 시작했으며, 그 후 캠브리지대학교에서 박사 학위를 취득하고 글래스고대학교에서 이학사를 취득했다.

옮긴이의 말

클라우드 컴퓨팅 서비스의 폭발적인 성장과 함께, 여러 대의 가상 컴퓨터 인스턴스를 사용하고 관리하는 것은 이제 더 이상 낯선 일이 아닌 일상적인 일이 됐다. 자연스럽게 효율적으로 여러 대의 컴퓨터를 관리하고 유지하는 노하우가 필요해졌고, 그러면서 점점 인프라와 애플리케이션 사이를 분리해 애플리케이션과 비즈니스 로직의 본질에만 집중하는 수많은 개발 방법론과 기법들이 등장했다.
최근 그 정점에는 컨테이너 기반의 아키텍처와 서버리스 아키텍처가 대표 기술로 자리 잡게 됐다. 물론 상황에 따라 다르겠지만, 많은 소프트웨어 개발자는 이제 가상 머신(VM)의 사양이나 클라우드 컴퓨팅의 세부적인 인프라, 운영체제의 기능이나 하드웨어의 기능이 아니라 소프트웨어를 빠르게 개발하고 배포하는 방법에만 몰두하기 시작했다.
그 결과, 폭발적으로 증가하는 아키텍처의 규모 속에 통제 불가능한 요소도 같이 늘어나게 됐다. 구성 요소들 사이의 상호 작용을 이해하고 문제가 발생했을 때 어떻게 대처해야 할지 알기 위해서는 여러 곳에 흩뿌려진 구성 요소들의 동작을 한 번에 모아서 파악할 수 있어야 한다. 하지만 이런 부분을 미리 대비하고 관심을 가지며 개발하는 경우는 그다지 많지 않을 것이다.
이 책에서는 마이크로서비스 아키텍처에서 꼭 필요한 계측과 문제 진단 기법을 어떻게 구현하고 실제 서비스 환경에 어떻게 적용할 수 있는지를 상세히 소개한다. 그리고 계측 방법론뿐 아니라 여러분이 개발하고 운영할 서비스에서 ‘기준 성능’이란 무엇을 의미하는지, 어떻게 정의할 수 있는지, 왜 정의해야 하는지를 알려준다. 단순히 ‘빠르다’, ‘효율적이다’라는 추상적인 개념이 아닌 투자 비용 대비 효과적인 서비스 운영이 무엇인지를 고민해보는 계기도 함께하면서 스스로 통찰할 수 있게 해줄 것이다.
분산 추적이라는 거대하고 다소 난해한 주제를 이만큼 정밀하고 상세하게 다룬 책은 많지 않다. 이 책이 여러분의 고민을 해결하고 더 나은 마이크로서비스를 설계하는 데 큰 도움이 되길 바란다. 아울러 텍스트 분량이 적지 않은 이 책의 베타 리딩을 손수 맡아 주신 다섯 분의 업계 전문가분들께 다시 한 번 감사드린다.

옮긴이 소개

남정현

(주)데브시스터즈에서 테크니컬 라이터로 일하면서 회사 내부 및 외부의 기술 문서, 사내 통용 문서 작성, 문서 스타일 가이드를 관리하고, 원활하게 지식과 정보를 공유하기 위한 종합적인 활동을 수행한다. 또한 데브옵스 엔지니어로서의 역량을 토대로 문서 자동화, 문서 엔지니어링 분야에도 기여하기 위한 크고 작은 프로젝트를 진행하고 있다. 국내 IT 기술 개발 커뮤니티에서 2009년부터 Microsoft MVP로 활동하면서 클라우드 컴퓨팅 기술과 닷넷 프로그래밍을 국내에 전파하기 위한 다양한 활동을 해왔으며, 최근에는 닷넷 데브 커뮤니티 운영진으로 활동하고 있다.

목차

목차
  • 1장. 분산 추적 문제
    • 분산 추적 도입의 여러 요소
    • 분산 추적, 마이크로서비스, 서버리스, 오 이런!
    • 추적의 이점
    • 마무리

  • 2장. 계측의 온톨로지
    • 화이트박스와 블랙박스
    • 애플리케이션 대 시스템
    • 에이전트와 라이브러리의 차이점
    • 콘텍스트 전파하기
      • 프로세스 간의 전파
      • 프로세스 간의 전파
    • 분산 추적의 형태
      • 추적 친화적인 마이크로서비스와 서버리스
      • 모놀리스에서 추적하기
      • 웹과 모바일 클라이언트에서 추적하기

  • 3장. 오픈소스 계측: 인터페이스, 라이브러리, 프레임워크
    • 추상화된 계측의 중요성
    • 오픈 텔레메트리
    • 오픈 트레이싱과 오픈 센서스
      • 오픈 트레이싱
      • 오픈 센서스
    • 다른 주목할 만한 형식과 프로젝트
      • X-레이
      • 집킨
    • 상호 연동성과 마이그레이션 전략
    • 왜 오픈소스 계측을 사용하는가?
      • 상호 연동성
      • 이식성
      • 생태계와 암시적 가시성

  • 4장. 계측 모범 사례
    • 예제로 알아보는 추적
      • 샘플 애플리케이션 설치하기
      • 기본 분산 추적 추가
      • 계측 커스터마이징하기
    • 어디서 시작할 것인가: 노드와 에지
      • 프레임워크 계측
      • 서비스 메시 계측
      • 서비스 그래프 만들기
    • 스팬에는 무엇이 포함되는가?
      • 효과적인 이름 짓기
      • 효과적인 태그 지정
      • 효과적인 로그 기록
      • 성능을 위해 무엇을 고려해야 할지 이해하기
    • 추적 주도 개발
      • 추적으로 개발하기
      • 추적과 함께 테스트하기
    • 계측 계획 만들기
      • 계측 사례 만들기
      • 계측 품질 검사 목록
      • 언제 계측을 중지해야 하는지 알기
      • 똑똑하고 지속 가능한 계측 성장

  • 5장. 추적 도입
    • 팀 단위의 채택
      • 사용자에게 가까이 다가가기
      • 중심에서 시작하기: 로드 밸런서와 게이트웨이
      • 인프라 활용: RPC 프레임워크와 서비스 메시
      • 채택을 반복할 수 있게 만들기
    • 트레이서 아키텍처
      • 프로세스 내 라이브러리
      • 사이드카와 에이전트
      • 컬렉터
      • 중앙 집중식 스토리지와 분석
      • 점진적인 도입
    • 데이터 보호, 보안, 그리고 연계
      • 프론트엔드 서비스 텔레메트리
      • 관리형 서비스를 위한 서버 측 텔레메트리
    • 마무리

  • 6장. 비효율성, 비용, 샘플링
    • 애플리케이션 비효율성
      • 지연 시간
      • 처리량
    • 인프라 비용
      • 네트워크
      • 스토리지
    • 샘플링
      • 최소 요구 사항
      • 전략
      • 추적 선택하기
    • 상용 ETL 솔루션
    • 마무리

  • 7장. 새로운 관측 가능성 점수표
    • 잘 알려진 세 가지 기술
      • 메트릭
      • 로그 기록
      • 분산 추적
    • 세 가지 기술의 치명적인 문제점
      • 설계 목표
      • 세 가지 기술 평가하기
      • 3개의 파이프(서로 떨어진 세 가지 기술이 아님)
    • 관측 가능성의 목표와 활동
      • 관측 가능성의 두 가지 목표
      • 관측 가능성의 두 가지 기본 활동
      • 새로운 점수표
      • 앞서가는 길

  • 8장. 기준 성능 개선하기
    • 성능 측정
      • 백분위수
      • 히스토그램
    • 크리티컬 패스 정의하기
    • 성능 향상 접근 방법
      • 개별 추적
      • 편향된 샘플링과 추적 비교
      • 추적 검색
      • 다중 모드 분석
      • 집계 분석
      • 상관 분석
    • 마무리

  • 9장. 기준 성능 복원하기
    • 문제 정의하기
    • 인적 요소
      • 지적당하지 않도록 (피하기)
      • ‘메신저’ 입 막기
      • 문제 전달하기
      • 바람직한 포스트모템
    • 성능 복원 방법
      • 경고 워크플로우와 통합하기
      • 개별 추적
      • 편향된 샘플링
      • 실시간 응답
      • 무엇이 정상인지 알기
      • 집계와 상관 근본 원인 분석
    • 마무리

  • 10장. 과거와 현재 사이의 어딘가
    • 분산 추적: 실용주의의 역사
      • 요청 기반 시스템
      • 응답 시간 문제
      • 요청 지향 정보
    • 주목할 만한 일
      • 핀포인트
      • 맥파이
      • X-트레이스
      • 대퍼
    • 다음 목적지는 어디인가?

  • 11장. 개별 요청을 넘어서
    • 집합에서 추적의 가치
      • 예제 1: 네트워크 정체가 애플리케이션에 영향을 주는가?
      • 예제 2: API 끝점을 제공하기 위해 어떤 서비스가 필요한가?
    • 데이터 정리하기
      • 허수아비 해결책
    • 무엇을 절충해야 하는가?
    • 집계 분석을 위한 샘플링
    • 처리 파이프라인
    • 이기종 데이터 통합
    • 커스텀 메서드
      • 다른 데이터 소스와의 결합
    • 마무리와 사례 연구
      • 집합의 추적 값
      • 데이터 정리하기
      • 집계 분석을 위한 샘플링
      • 처리 파이프라인
      • 이기종 데이터 통합

  • 12장. 스팬을 넘어
    • 스팬이 우세한 이유
      • 가시성
      • 실용주의
      • 이식성
      • 호환성
      • 유연성
    • 스팬이 충분하지 않은 이유
      • 트리가 아닌 그래프
      • 요청 사이의 종속성
      • 분리된 종속성
      • 분산 데이터 플로우
      • 머신러닝
      • 저수준 성능 메트릭
    • 새로운 추상화
    • 인과 관계 보기

  • 13장. 분산 추적을 넘어서
    • 분산 추적의 한계
      • 과제 1: 문제 예상하기
      • 과제 2: 비용 대비 완성도
      • 과제 3: 개방형 활용 사례
    • 분산 추적과 비슷한 다른 도구
    • 센서스
      • 동기 부여를 위한 예제
      • 분산 추적 솔루션?
      • 태그 전파와 로컬 메트릭 집계
      • 분산 추적과의 비교
    • 피벗 추적
      • 동적 계측
      • 반복되는 문제
      • 작동 원리
      • 동적 콘텍스트
      • 분산 추적과의 비교
    • 페디아
      • 성능 하락
      • 설계 사상
      • 비효율성
      • 분산 추적과의 비교
    • 마무리

  • 14장. 콘텍스트 전파의 미래
    • 크로스 커팅 도구
    • 활용 사례
      • 분산 추적
      • 크로스 컴포넌트 메트릭
      • 크로스 컴포넌트 리소스 관리
      • 데이터 품질 균형 조정 관리
      • 마이크로서비스 실패 테스트
      • 시스템 사이의 일관성 유지
      • 요청 복제
      • 스트림 처리 시스템의 레코드 계보
      • 보안 정책 감사
      • 프로덕션에서 테스트하기
    • 공통 테마
    • 신경 써야 할까?
    • 추적 플레인
      • 배기지만으로 충분할까?
      • 키-값 쌍들을 넘어서
      • 배기지 정의 언어 컴파일하기
      • 배기지 콘텍스트
      • 병합
      • 비효율성
    • 요약

  • 부록 A. 2020년의 분산 추적 기술 일람
    • 오픈소스 트레이서와 추적 분석
    • 상용 트레이서와 추적 분석기
    • 언어별 추적 기능
      • 자바와 C#
      • Go, 러스트, C++
      • 파이썬, 자바스크립트, 그 외 동적 언어

  • 부록 B. 오픈 텔레메트리의 콘텍스트 전파
    • 왜 별도의 콘텍스트 모델이 필요한가?
    • 오픈 텔레메트리의 콘텍스트 모델
      • W3C CorrelationContext와 상관 API
      • 분산 콘텍스트와 로컬 콘텍스트

도서 오류 신고

도서 오류 신고

에이콘출판사에 관심을 가져 주셔서 고맙습니다. 도서의 오탈자 정보를 알려주시면 다음 개정판 인쇄 시 반영하겠습니다.

오탈자 정보는 다음과 같이 입력해 주시면 됩니다.

(예시) p.100 아래에서 3행 : '몇일'동안 -> 며칠동안