마스터링 분산 추적

마이크로서비스 기반 아키텍처의 성능 분석과 관리를 위한 분산 트레이싱

《마스터링 분산 추적》은 자체 추적 인프라를 운영하고 향상시키는 데 도움을 줄 것이다. 실습과 코드 예제를 통해 종단 간 추적을 강력한 애플리케이션 성능 관리 및 이해 도구로 사용하는 방법을 배운다.

구글(Google) 및 아마존(Amazon)과 같은 대규모 인터넷 회사의 성장은 여러 데이터 센터에 걸쳐있는 수천 개의 노드에서 운영되는 분산 시스템의 새로운 시대를 열었다. 또한 마이크로서비스는 그 복잡성을 기하급수적으로 증가시켰다. 이러한 시스템을 디버깅하거나 장애를 추적하거나 병목 현상을 감지하는 것은 쉽지 않으며, 단순히 무슨 일이 일어나고 있는지조차 이해하기 어렵다. ‘분산 추적’은 복잡한 분산 시스템에서 이러한 문제를 해결하는 데 중점을 둔다. 현재 추적 표준이 개발됐고, 덕분에 계측하는 데 덜 방해되고 데이터를 더 가치 있게 만드는 더 빠른 시스템을 갖게 됐다.

널리 사용되는 오픈소스 분산 추적 시스템인 예거(Jaeger)의 창립자인 유리 슈쿠로(Yuri Shkuro)는 《마스터링 분산 추적》에서 이 분야의 모든 면을 다룬다. 또한 추적의 역사와 이론적 토대를 검토하고, 오픈트레이싱(OpenTracing), W3C 추적 컨텍스트(Trace Context), 오픈센서스(OpenCensus)와 같은 개방형 표준으로 코드 계측을 통해 데이터 수집 문제를 해결하며, 복잡한 시스템을 이해하고 프로파일링하기 위한 분산 추적 인프라의 장점과 그 응용에 관해 논의한다.

 

★ 이 책에서 다루는 내용 ★

  • 분산 추적 시스템을 처음 사용하는 방법
  • 종단 간 추적에서 최대 가치를 얻는 방법
  • 분산 추적 분야의 개방형 표준
  • 코드 계측 및 추적 인프라 운영
  • 분산 추적이 핵심 기능으로서 마이크로서비스의 어느 부분에 적합한지 학습

유리 슈쿠로 (Yuri Shkuro)

우버 테크놀로지스(Uber Technologies)의 소프트웨어 엔지니어로 분산 추적, 관찰성, 신뢰성, 성능을 연구하고 있다. 우버의 추적팀 기술 책임자다. 우버 이전에 월가(Wall Street)에서 15 년간 투자은행인 골드만 삭스(Goldman Sachs), JP 모건 체이스(JPMorgan Chase), 모건 스탠리(Morgan Stanley)에서 파생상품에 대한 거래 및 위험 관리 시스템을 구축했다.

홍성민

현재 큐비(https://www.cu.bi)라는 스타트업의 플랫폼 개발 리더다. 코코나(Cocona)라는 글로벌 영상 공유 서비스의 API 및 데이터 플랫폼을 AWS 기반에서 파이썬과 플라스크를 사용해 개발하고 있다.

남궁영환

현재 아마존 웹 서비스(AWS) 시니어 AI/ML 컨설턴트로서 클라우드, 데이터 과학 분야의 다양한 연구개발/컨설팅 경험을 갖고 있다. 머신러닝, AWS, 빅데이터 기술 관련 번역서도 다수 출간했다.

  • [1부] 들어가는 말
    •  
  • ▣ 1장: 왜 분산 추적인가?
    • 마이크로서비스와 클라우드 네이티브 애플리케이션
    • 관찰성이란 무엇인가?
    • 마이크로서비스의 관찰성 문제
    • 기존 모니터링 도구
    • 지표
    • 로그
    • 분산 추적
    • 추적에 대한 개인적 경험
    • 이 책을 쓴 이유
    • 정리
    • 참고 자료
    •  
  • ▣ 02장: HotROD 승차 추적하기
    • 사전 요구사항
      • 미리 패키징된 바이너리에서 실행
      • 도커 이미지로 실행
      • 소스코드로 실행
    • 예거 시작
    • HotROD와의 만남
    • 아키텍처
    • 데이터 흐름
    • 문맥이 있는 로그
    • 스팬 태그 대 로그
    • 지연 시간의 원인 파악
    • 자원 사용량 귀속
    • 정리
    • 참고 자료
    •  
  • ▣ 3장: 분산 추적의 핵심
    • 아이디어
    • 요청 상관관계
      • 블랙박스 추론
      • 스키마 기반
      • 메타데이터 전파
    • 분산 추적의 내부 구조
    • 샘플링
    • 인과관계 보존
      • 요청 간 인과관계
    • 추적 모델
      • 이벤트 모델
      • 스팬 모델
    • 시간 차이 조정
    • 추적 분석
    • 정리
    • 참고 자료
    •  
  • [2부] 데이터 수집 문제
    •  
  • ▣ 04장: 오픈트레이싱을 이용한 계측 기초
    • 사전 요구사항
      • 프로젝트 소스코드
      • Go 개발환경
      • 자바 개발환경
      • 파이썬 개발환경
      • MySQL 데이터베이스
      • 쿼리 도구(curl 또는 wget)
      • 추적 백엔드(예거)
    • 오픈트레이싱
    • 실습 1: Hello 애플리케이션
      • Go로 작성한 Hello 애플리케이션
      • 자바로 작성한 Hello 애플리케이션
      • 파이썬으로 작성한 Hello 애플리케이션
      • 실습 정리
    • 실습 2: 첫 번째 추적
      • 1단계: 트레이서 인스턴스 생성
      • 2단계: 스팬 시작
      • 3단계: 스팬에 주석 달기
      • 실습 정리
    • 실습 3: 함수 추적과 컨텍스트 전달
      • 1단계: 개별 함수 추적
      • 2단계: 복수 스팬을 단일 추적으로 결합
      • 3단계: 프로세스 내 컨텍스트 전파
      • 실습 정리
    • 실습 4: RPC 요청 추적
      • 1단계: 단일 아키텍처 분해
      • 2단계: 프로세스 간 컨텍스트 전달
      • 3단계: 오픈트레이싱 추천 태그 적용
      • 실습 정리
    • 실습 5: 배기지 사용
      • Go에서 배기지 사용하기
      • 자바에서 배기지 사용하기
      • 파이썬에서 배기지 사용하기
      • 실습 정리
    • 실습 6: 자동 계측
      • Go를 이용한 오픈소스 계측
      • 자바를 이용한 자동 계측
      • 파이썬을 이용한 자동 계측
    • 실습 7: 추가 혜택
    • 정리
    • 참고 자료
    •  
  • ▣ 05장: 비동기 애플리케이션의 계측
    • 사전 요구사항
      • 프로젝트 소스코드
      • 자바 개발 환경
      • 카프카, 주키퍼, 레디스, 예거
    • Tracing Talk 채팅 애플리케이션
      • 구현
      • 애플리케이션 실행
      • 추적 관찰
    • 오픈트레이싱을 사용한 계측
      • 스프링 계측
      • 트레이서 리졸버
      • 레디스 계측
      • 카프카 계측
    • 비동기 코드 계측하기
    • 정리
    • 참고 자료
    •  
  • ▣ 06장: 추적 표준과 에코시스템
    • 계측 스타일
    • 배포 및 상호 운용성 추적의 내부
    • 추적의 다섯 가지 그림자
    • 대상 파악
    • 에코시스템
      • 추적 시스템
      • X-Ray, 스택드라이버, 기타 도구
      • 표준 프로젝트
    • 정리
    • 참고 자료
    •  
  • ▣ 07장: 서비스 메시를 이용한 추적
    • 서비스 메시
    • 서비스 메시를 통한 관찰성
    • 사전 준비 사항
      • 프로젝트 소스코드
      • 자바 개발 환경
      • 쿠버네티스
      • 이스티오
    • Hello 애플리케이션
    • 이스티오를 이용한 분산 추적
    • 이스티오를 이용한 서비스 그래프 생성
    • 분산 컨텍스트와 라우팅
    • 정리
    • 참고 자료
    •  
  • ▣ 08장: 샘플링의 모든 것
    • 헤드 기반의 일관된 샘플링
      • 확률적 샘플링
      • 속도 제한 샘플링
      • 처리량 보장 확률적 샘플링
      • 적응형 샘플링
      • 컨텍스트-맞춤형 샘플링
      • 애드혹 샘플링과 디버그 샘플링
      • 오버샘플링 처리 방법
    • 테일 기반의 일관성 있는 샘플링
    • 부분 샘플링
    • 정리
    • 참고 자료
    •  
  • [3부] 추적에서 가치 얻기
    •  
  • ▣ 09장: 등불 켜기
    • 지식 기반으로서의 추적
    • 서비스 그래프
      • 깊이 있는 경로 인지형 서비스 그래프
      • 아키텍처상의 문제점 탐지
    • 성능 분석
      • 임계 경로 분석
      • 추적 패턴의 인식
      • 모범 사례
      • 지연 시간 히스토그램
    • 롱텀 프로파일링
    • 정리
    • 참고 자료
    •  
  • ▣ 10장: 분산 컨텍스트 전파
    • 브라운 추적 플레인
    • 피벗 추적
    • 카오스 엔지니어링
    • 트래픽 레이블링
      • 운영 환경에서 테스트하기
      • 운영 환경에서 디버깅하기
      • 운영 환경에서 개발하기
    • 정리
    • 참고 자료
    •  
  • ▣ 11장: 메트릭과 로그의 통합
    • 관찰성의 세 가지 구성 요소
    • 준비사항
      • 프로젝트 소스코드
      • 자바 개발 환경
      • 도커에서 서버 실행하기
      • 키바나에서 인덱스 패턴 선언하기
      • 클라이언트 실행하기
    • Hello 애플리케이션
    • 메트릭과의 통합
      • 추적 계측을 통한 표준 메트릭
      • 메트릭에 컨텍스트 추가하기
      • 컨텍스트 인지 메트릭 API
    • 로그와의 통합
      • 정형 로그
      • 추적 컨텍스트와 로그의 연동
      • 컨텍스트 인지 로깅 API
      • 추적 시스템에서 로그 캡처하기
      • 로깅과 추적 백엔드를 분리해야 할까?
    • 정리
    • 참고 자료
    •  
  • ▣ 12장: 데이터 마이닝을 이용한 통찰
    • 피처 추출
    • 데이터 마이닝 파이프라인의 구성 요소
      • 추적 백엔드
      • 추적 완료 트리거
      • 피처 추출기
    • 집계 연산기
    • 피처 추출 예제
    • 준비사항
      • 프로젝트 소스코드
      • 도커에서 서버 실행하기
      • 엘라스틱서치에서 인덱스 매핑 정의하기
      • 자바 개발 환경
      • 마이크로서비스 시뮬레이터
      • 키바나에서 인덱스 패턴 정의하기
    • 스팬 카운트 잡
      • 추적 완료 트리거
      • 피처 추출기
    • 트렌드 관측
      • 외삽법 계산에 주의하라
    • 이력 분석
    • 임시(Ad-hoc) 분석
    • 정리
    • 참고 자료
    •  
  • [4부] 추적 인프라의 배포와 운영
    •  
  • ▣ 13장: 대규모 조직에서의 추적 구현
    • 추적 계측의 배포가 어려운 이유
    • 도입장벽을 낮춰라
      • 표준 프레임워크
      • 인하우스 어댑터 라이브러리
      • 기본으로 활성화된 추적
      • 모노리포
      • 기존 인프라와의 통합
    • 어디서부터 시작할까?
    • 문화 조성
      • 가치 설명하기
      • 개발자 워크플로와의 통합
    • TQM: 추적 품질 메트릭
    • 문제 해결 가이드
    • 임계 경로를 피하라
    • 정리
    • 참고 자료
    •  
  • ▣ 14장: 분산 추적 시스템의 내부 구조
    • 왜 직접 호스팅하는가?
      • 사용자 맞춤형 작업 통합
      • 대역폭 비용
      • 데이터 소유
    • 최신 표준에 투자하라
    • 아키텍처와 배포 모드
      • 기본 아키텍처: 에이전트 + 수집기 + 쿼리 서비스
      • 스트리밍 아키텍처
      • 멀티테넌시
      • 보안
      • 여러 데이터센터에서 실행
    • 모니터링 및 문제 해결
    • 탄력성
      • 오버-샘플링
      • 추적 디버깅
      • 데이터센터 페일오버로 인한 급격한 트래픽 증가
      • 끊임없이 계속되는 추적
      • 매우 긴 추적
    • 정리
    • 참고 자료
    •  
  • ▣ 맺음말
    •  
  • ▣ 참고 자료