실전 분산 추적 [마이크로서비스의 계측, 분석 그리고 디버깅]
- 원서명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
요약
클라우드 컴퓨팅 기반의 서버 개발과 외부 서비스 연동이 일상화되면서, 마이크로서비스에 대한 관심과 수요가 크게 늘어났다. 마이크로서비스를 기술적으로 구현하는 것만큼이나 중요한 것은 서비스의 안정성을 지속적으로 모니터링하고, 문제를 빠르게 파악해 해결책을 찾는 것이다. 또한 사후 회고를 정확하게 해 같은 문제가 반복되지 않도록 시스템을 잘 이해하고 있어야 한다.
이 책은 마이크로서비스의 이점만을 보며 따라가다가 놓칠 수 있는 마이크로서비스의 계측과 진단 방법을 어떻게 바라보고 구현해야 할지를 실무 엔지니어의 입장에서 상세하게 설명한다. 또한 복잡하게 구성된 분산 컴퓨팅 기술을 안정적으로 운영하기 위해 엔지니어들이 알아야 할 것들도 자세히 다룬다.
추천의 글
“이 책은 분산 추적의 세계를 처음 접하는 사람들을 위한 훌륭한 입문서이자 분산 추적을 한창 탐구하는 사람들을 위한 훌륭한 참고서가 될 것이다.”
—알렉스 이달고, 사이트 안정성 엔지니어,
『서비스 수준 목표 구현하기』 저자
이 책에서 다루는 내용
◆ 분산 추적 배포의 일부: 계측, 데이터 수집과 분석
◆ 계측을 위한 모범 사례: 서비스에서 추적 데이터 생성 방법
◆ 샘플링과 다른 여러 기술을 사용해 비효율성을 해결하거나 피하는 방법
◆ 분산 추적을 사용해 기준 성능을 개선하고 문제를 다시 일으킬 가능성을 빠르게 해결하는 방법
◆ 분산 추적 기술의 방향성과 미래
목차
목차
- 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
- 분산 콘텍스트와 로컬 콘텍스트