세상에는 우리가 이미 알고 있는 것들(known-knowns)이 있습니다. 즉, 우리가 알고 있다는 사실을 알고 있는 것이죠. 한편 모른다는 걸 아는 것들(known-un- knowns)도 있습니다. 다시 말해, 우리가 모르는 사실들이 있다는 걸 알고 있습니다. 하지만 모른다는 걸 모르는 것들(unknown-unknowns)도 있습니다. 즉, 우리가 모른다는 사실조차 모르는 것들이 있다는 것입니다.
― 미국 국방장관 도널드 럼즈펠드(Donald Rumsfeld), 2002년 2월 12일
성능 문제는 시스템의 어느 부분에서나 발생할 수 있으며, 특히 우리가 전혀 모르는 부분(즉, 우리가 모른다는 사실조차 인지하지 못한 영역)에서 발생할 가능성이 큽니다. 성능 문제가 발생했는데 그게 어디서 발생했는지 모른다면 문제 해결에 접근조차 할 수 없습니다. 시스템의 모든 요소를 알고 있어야 문제의 경우의 수를 파악할 수 있고, 이를 통해 빠르고 정확하게 문제를 해결할 수 있습니다.
시스템 성능 분석은 소프트웨어와 하드웨어의 모든 핵심 구성 요소를 포괄하여 컴퓨터 시스템 전체의 성능을 연구하는 과정입니다. 데이터가 지나는 경로의 모든 요소, 저장 장치에서부터 애플리케이션 소프트웨어에 이르기까지, 이 모두가 성능에 영향을 미칠 수 있고 성능 분석의 대상입니다. 분산 시스템의 경우 여러 서버와 애플리케이션까지 모두 포함합니다.
《시스템 성능 엔지니어링》은 시스템을 이루는 각 구성 요소들에 대해 살펴보고, 그 요소에 문제가 생겼을 때 어떻게 접근하고 해결해야 하는지를 설명합니다. 운영 체제, 하드웨어, 애플리케이션 이론을 간결하게 정리하여 시스템 전체에 대한 이해를 다지고, 이를 바탕으로 성능 분석에 대한 방법론과 기술을 살펴봅니다. 성능 분석 경험이 없는 독자라도 이 책을 통해 기본 지식을 쌓고 핵심을 이해할 수 있도록 구성했습니다.
저자인 브렌던 그레그(Brendan Gregg)는 성능 분석 분야의 전문가로, 대규모 리눅스 인프라에서 BPF를 활용하여 시스템 내부를 안전하게 관찰하고 분석하는 기법을 개척하고 체계화했습니다. 그리고 넷플릭스에서 선임 성능 엔지니어로 근무하면서 이 기법을 사용하여 실제로 유효함을 확인했습니다. 《시스템 성능 엔지니어링》에서는 BPF를 포함한 최신 분석 도구와 기법을 심도 있게 설명하며, 클라우드·웹·엔터프라이즈 시스템에서 최상의 성능을 이끌어내는 실질적인 방법을 제시합니다.
개발자라면 시스템의 구성 요소와 분석 도구들, 기법과 방법론에 대한 이해가 반드시 필요합니다. 이 책은 단순히 도구 사용 방법을 가르쳐 주는 데 그치지 않고, 시스템 전체에 대한 이해를 바탕으로 문제의 원인을 파악하고 해결하는 데 필요한 방법론과 사고방식을 길러줍니다.
[이 책에서 다루는 내용]
● 하드웨어, 커널, 애플리케이션 내부 구조와 성능 특성
● 복잡한 시스템을 신속하게 진단하기 위한 성능 분석 방법론
● CPU, 메모리, 파일 시스템, 디스크, 네트워크 자원 사용 최적화
● perf, Ftrace, BPF(BCC 및 bpftrace)를 활용한 정밀 프로파일링과 트레이싱
● 클라우드 하이퍼바이저 환경에서 직면하는 성능 문제
● 더 효과적인 벤치마킹 기법
《시스템 성능 엔지니어링》은 시스템을 이루는 핵심 요소들이 어떻게 동작하는지를 깊이 있게 다루며, 성능 문제를 진단하고 해결할 수 있는 기반을 마련해 줍니다. 단순한 도구 사용법이 아닌 시스템을 보는 눈을 길러 주는 안내서로서 더 멀리, 더 깊이 가고 싶은 분들에게 추천합니다. – 강진우, 당근마켓 인프라실 리더
SRE로 일하면서 성능 이슈를 다루다 보면, 원인을 파악하는 데 가장 큰 도움이 되는 건 시스템의 내부를 들여다볼 수 있는 도구들입니다. 이 책은 BPF를 활용해 그 과정을 체계적으로 안내해 주는 탁월한 자료입니다. – 박상헌, 카카오 인프라 개발 조직 리더
이 책은 CPU, 메모리, 디스크, 네트워크 같은 핵심 자원이 어떻게 동작하는지 알기 쉽게 풀어 주고, 실제로 성능 문제가 생겼을 때 어떤 도구와 방법을 써야 하는지도 구체적으로 보여 줍니다. 특히 클라우드 환경과 컨테이너 운영에서 흔히 겪는 문제들을 예시로 다루어, 실무 경험이 부족한 사람도 상황을 그려볼 수 있게 돕습니다. – 윤종민, 라인플러스 개발자
참고용 매뉴얼을 넘어서 엔지니어로서의 사고 체계를 근본적으로 변화시키는 책입니다. 복잡한 문제를 구조적으로 분석하고, 근본 원인을 찾아내며, 올바른 최적화 전략을 세우는 능력을 키워 줍니다. 클라우드·분산 환경에서도 이 책에서 배운 원리와 분석 기법은 강력한 무기가 될 것입니다. – 이호성, CIQ Principle Solution Architect(기술총괄 상무), 한국 리눅스 사용자 그룹 운영자
이 책은 시스템 전반을 다루고 있는 만큼 무려 1,172쪽이나 되는 엄청난 페이지 수를 자랑합니다. 무작정 사기엔 부담스러운 분들은 이 책이 어떤 내용을 담고 있는지 무료 특별판을 통해 확인해 보세요. 16장 “사례 연구”를 통해 시스템 성능 엔지니어링이 뭘 어떻게 하는 작업인지 알 수 있습니다.
《시스템 성능 엔지니어링》은 다음 서점에서 구입하실 수 있습니다.
함께 읽으면 좋은 책

《시스템 성능 엔지니어링》을 통해 성능 전반에 대한 이해를 넓힌 독자라면, 이 책을 통해 BPF를 활용해 운영 중인 시스템의 성능 문제를 직접 진단하고 해결하는 역량을 기를 수 있습니다.