클라우드 컴퓨팅 기반의 서버 개발과 외부 서비스 연동이 일상화되면서, 마이크로서비스에 대한 관심과 수요가 크게 늘어났다. 마이크로서비스를 기술적으로 구현하는 것만큼이나 중요한 것은 서비스의 안정성을 지속적으로 모니터링하고, 문제를 빠르게 파악해 해결책을 찾는 것이다. 또한 사후 회고를 정확하게 해 같은 문제가 반복되지 않도록 시스템을 잘 이해하고 있어야 한다.
이 책은 마이크로서비스의 이점만을 보며 따라가다가 놓칠 수 있는 마이크로서비스의 계측과 진단 방법을 어떻게 바라보고 구현해야 할지를 실무 엔지니어의 입장에서 상세하게 설명한다. 또한 복잡하게 구성된 분산 컴퓨팅 기술을 안정적으로 운영하기 위해 엔지니어들이 알아야 할 것들도 자세히 다룬다.
Contents
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
____분산 콘텍스트와 로컬 콘텍스트
__예제와 잠재적인 애플리케이션
Author
오스틴 파커,다니엘 스푼하워,조나단 메이스,레베카 아이작스,남정현
라이트스텝의 개발자 애드보캣(developer advocate)이며 오픈 트레이싱(OpenTracing) 프로젝트의 핵심 컨트리뷰터이자 관리자다. 라이트스텝 이전에는 어프렌다의 소프트웨어 아키텍트로 일하면서 쿠버네티스를 사용해 엔터프라이즈 플랫폼을 만들었다.
라이트스텝의 개발자 애드보캣(developer advocate)이며 오픈 트레이싱(OpenTracing) 프로젝트의 핵심 컨트리뷰터이자 관리자다. 라이트스텝 이전에는 어프렌다의 소프트웨어 아키텍트로 일하면서 쿠버네티스를 사용해 엔터프라이즈 플랫폼을 만들었다.