서브메뉴

본문

마스터링 분산 추적 (마이크로서비스 기반 아키텍처의 성능 분석과 관리를 위한 분산 트레이싱)
마스터링 분산 추적 (마이크로서비스 기반 아키텍처의 성능 분석과 관리를 위한 분산 트레이싱)
저자 : 유리 슈쿠로
출판사 : 위키북스
출판년 : 2020
정가 : 30000, ISBN : 9791158391959

책소개


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

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

목차


[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장: 분산 추적 시스템의 내부 구조
왜 직접 호스팅하는가?
__사용자 맞춤형 작업 통합
__대역폭 비용
__데이터 소유
최신 표준에 투자하라
아키텍처와 배포 모드
__기본 아키텍처: 에이전트 + 수집기 + 쿼리 서비스
__스트리밍 아키텍처
__멀티테넌시
__보안
__여러 데이터센터에서 실행
모니터링 및 문제 해결
탄력성
__오버-샘플링
__추적 디버깅
__데이터센터 페일오버로 인한 급격한 트래픽 증가
__끊임없이 계속되는 추적
__매우 긴 추적
정리
참고 자료

▣ 맺음말

▣ 참고 자료