본문 바로가기
+ 펴낸 책

일 잘하는 엔지니어의 생각 기법

by 책만 2025. 11. 21.

 일 잘하는 엔지니어의 생각 기법 

시스템 성능 개선과 최적화,
문제 해결의 속도를 높이는 사고의 기술

캐리 밀샙 지음 | 장현희 옮김

384쪽 | 25,000원 | 2025년 11월 28일 출간 | 152*224*19 | ISBN 9791189909970  (13000)

판매처 | [교보문고] [YES24] [알라딘] [영풍문고] [인터파크] + 전국 교보/영풍문고 매장
전자책 판매처 | [교보문고] [YES24] [알라딘] [리디북스] | 2025년 12월 출간 예정

 

✔️ 원서명: How to Make Things Faster: Lessons in Performance from Technology and Everyday Life
✔️ 정오표: https://www.onlybook.co.kr/entry/things-faster-errata (아직 등록된 정오사항이 없습니다)

 

 문제의 본질 을 면밀히 관찰해서 

시스템과 솔루션의  성능을 개선하고 최적화 함으로써

눈앞의 문제를  빠르고 정확히 해결 하기 위한

 엔지니어적 사고의 기술 

 

AI는 쉽게 따라 하기 어려운, 

인간 개발자와 엔지니어가 자신의 능력치를 최대로 발휘할 수 있는 

신속하고 정확한 문제 해결력과 사고법을 알려주는 책! 

시스템이 느려지면 심각한 문제가 발생한다. 시간과 비용을 낭비하게 되기 때문이다. 심지어 프로젝트가 중단될 수도 있고 경력에 위기가 닥칠 수도 있다. 하지만 무슨 일이 일어나고 있는지를 잘 이해한다면, 성능에 대해 꾸준히 좋은 결정을 내리는 것은 놀라울 정도로 쉽다. 이 책에서는 시스템이 왜 그렇게 동작하고 있는지의 이유를 명확하고 사려 깊게 설명해준다. 

30여 년이 넘는 현장 경력을 보유한 저자 캐리 밀샙은 흥미로운 스토리텔링 기법을 활용한 111가지 일화 속에서 컴퓨터 소프트웨어든 일상 작업이든 (말 그대로) 모든 시스템의 성능을 개선하는 최적화 스킬을 알려준다. 또한, 엔지니어나 개발자가 어떤 사고와 마인드셋을 갖춰야 할지, 어떻게 하면 더욱 일관되고 자신있는 최적화를 수행할 수 있을지를 재미있게 들려준다. 컴퓨터 프로그램과 프로세스가 여러분의 시간을 어떻게 사용하고 있는지, 그리고 그것을 개선하려면 무엇을 해야 하는지 알고 싶어하는 모든 이를 위한 책이다.

 

추천의 글

어떤 문제가 발생했을 때, 엔지니어로서 우리는 무엇부터 확인하는가? 아마도 대부분은 모니터링 지표, 시스템 로그 등을 통해서 문제점을 찾으려고 할 것이다. 물론 잘못된 해결책은 아니다. 하지만 실제로 문제의 본질은 전혀 다른 곳에 있는 경우가 많다.
이 책은 그와 같은 문제가 발생했을 때 다양한 관점에서 문제를 접근하는 방법, 그리고 그 문제를 해결하기 위한 다양한 생각 기법을 이야기한다. 나 또한 어떠한 문제가 발생했을 때 실제 이 문제가 상자 안의 문제(기술적)인지, 상자 밖의 문제(프로세스 등의 다른 요인 등)인지를 빠르게 파악하는 것이 매우 중요하다고 줄곧 생각해왔다. 최종 사용자는 엔지니어가 아니기 때문이다.
이 책은 저자의 오랜 기술 경험을 재미있게 풀어내면서, 문제 해결을 위해 어떻게 접근해야 하는가에 대한 매우 실용적이고 성찰적인 가이드를 준다. 이 책을 다 읽고 나면 ‘제대로 일하는 법’이 무엇인지를 깨닫게 될 것이라 확신한다.
- 강성욱 / 잡코리아 클라우드인프라팀 엔지니어링 매니저
20년 넘게 IT 업계에서 프리세일즈(Pre-Sales) 엔지니어로 일하면서 수백 건의 POC와 BMT를 진행했습니다. 현업에서 시스템 성능 이슈와 씨름하면서 수많은 기술 서적을 접했지만, 이 책만큼 “문제의 본질이 무엇인가”라는 질문을 던지게 만든 책은 없었습니다.
처음에는 또 하나의 성능 튜닝 가이드 정도로 생각했습니다. 하지만 첫 머리부터 저자는 “사용자 필리스의 이야기”를 들려줍니다. 서버 로그도, CPU 사용률도 아닌, 실제 사람이 겪는 불편함에서 시작하는 이 접근법이 신선했습니다. 이 책을 읽다 보니 제가 그동안 얼마나 많은 ‘가짜 문제’를 해결하느라 시간을 허비했는지 깨닫게 되었습니다.
성능 개선은 기술의 문제가 아니라 사람의 문제임을, 그리고 관찰과 경청이 어떤 모니터링 도구보다 강력할 수 있음을 깨닫고 싶은 모든 엔지니어에게 이 책을 권합니다.
- 김창민 / 엔비디아 시니어 솔루션스 아키텍트
올해 제가 가장 많이 접한 질문은 “IT 개발자/엔지니어가 AI와 차별화되는 경쟁력을 갖기 위해서는 무엇을 해야 하는가?”였습니다. AI는 잘 정의된 업무(task)를 누구보다도 빠르고 정확하게 처리합니다. 사람과 경쟁할 수준을 이미 넘어선 것입니다. 하지만 AI는 꼭 필요한 일이나 해야 할 과업을 스스로 찾고 업무로 정의하는 일에는 아직 서툽니다. 그렇기에 IT 개발자/엔지니어가 AI 시대에 갖춰야 할 핵심 경쟁력은 필요한 일을 스스로 찾아내고 그것을 업무로 잘 정의하는 능력입니다. 그렇게 정의한 업무를 AI에게 맡기고 처리하는 역량을 갖춘다면 인간 엔지니어에게는 엄청난 경쟁력이 될 것입니다.
이 책은 IT 엔지니어/개발자가 솔루션이나 고객에게 닥친 문제를 해결하며, 더 나은 만족을 주기 위해서 스스로 일을 찾고 정의하고, 처리 및 결과를 평가해온 저자의 30여 년간의 노하우를 담은 회고록입니다. 책에 실린 111가지 일화 속에서, 우리는 고객을 만족시키고 솔루션을 개선하기 위해서 문제를 찾고 개선하고 평가하는 현장의 과정을 생생하게 경험할 수 있습니다. 오늘날 AI와 함께 부대끼며 살아가야 하는 저 또한 이 책에서 큰 인사이트와 공감, 배움을 얻었습니다.
AI를 넘어서는 경쟁력을 고민하는 분이라면 이 책에서 큰 영감을 얻을 수 있을 거라 확신합니다.
- 김태완 / 오라클 상무
이 책은 시스템 성능 최적화에 대한 실전 가이드로, 비즈니스와 기술 리더들에게 필수적인 통찰을 제공한다. 캐리 밀샙은 문제에 대한 체계적 접근법을 통해 관찰, 측정, 분석에 기반한 과학적 문제 해결을 강조하며, “성능도 기능이다”라는 명확한 철학을 제시한다. 특히 인상적인 부분은 성능 문제의 90%가 기술이 아닌 조직 내 정치와 협업의 문제라는 지적이다.
비즈니스 리더로서 이 책은 엔지니어링 팀의 사고방식과 그들이 직면한 복잡성을 이해하는 데 큰 도움이 되었다. 고객에게 솔루션을 제안할 때, 그리고 내부 기술팀과 협업할 때 그들의 체계적 분석 프로세스와 데이터 기반 의사결정의 중요성을 이해하는 것은 필수적이다.
이 책은 기술과 비즈니스 사이의 언어 장벽을 허물고, 더 효과적인 협업과 고객 가치 창출을 가능하게 하는 실용적 지식을 제공한다. 복잡한 기술 개념을 실제 사례로 풀어내는 저자의 스토리텔링은 즉시 실무에 적용 가능한 인사이트를 전달하기에, 매일매일 중대한 의사결정을 해야 하는 모든 리더들에게 강력히 추천한다.
- 노경훈 / 아마존 웹서비스 코리아 금융고객팀 총괄
이 책은 제목만큼이나 속도감 있게 읽힌다. 출판사에서 원고를 받고 처음 읽기 시작하자마자 절반을 단숨에 읽었고, 다음 날 나머지를 끝낼 만큼 흡인력이 강했다.
저자는 풍부한 실무 경험을 바탕으로 복잡한 성능 문제를 명확하고 간결하게 풀어내며, 읽는 내내 현실감 있는 사례와 통찰을 전한다. 따라서 이 책은 단순한 기술 해설서를 넘어 실제 현장에서 성능 문제를 바라보는 새로운 시각을 제시한다. 특히 시스템 성능을 둘러싼 기술적 요인뿐 아니라, 사람과 프로세스가 얽힌 현실적 맥락까지 세밀하게 다루는 점이 매우 인상적이다.
이 책을 통해 개발자, 엔지니어는 물론, 시스템을 설계하거나 운영하는 모든 이가 문제를 바라보고 해결하는 방식에 대해 깊은 통찰을 얻게 될 것이다.
- 안승규 / kt cloud 기술 전문위원
‘최적화’라는 단어를 보며 2014년경의 기억이 떠올랐다. 국내 유명 통신사의 앱 업데이트 서비스에 일주일 넘게 지속된 장애가 발생했고, 금요일 오후 5시에 긴급 미팅이 소집됐다. 네트워크팀, 데이터베이스팀, 웹서버팀, 보안팀이 모두 모여 열띤 토론을 벌였지만, 실질적 해결보다는 “우리 구역엔 문제없다”는 방어적 태도만 난무했다.
오후 7시가 넘도록 끝날 기미가 없던 회의. 데이터베이스 디스크 I/O가 이미 한계치에 도달한 모니터링 지표를 확인했지만, 섣불리 지적하면 누군가 곤란해질까 눈치만 보다가 결국 디스크 I/O 해결책을 제안했다.
10여 년 전 내가 겪었던 일들은 이 책에서 강조하는 2가지 핵심과 정확히 맞아떨어진다. 성능 최적화에는 ‘정치적 스킬’이 필요하며, ‘문제를 정확히 정의’해야 한다는 것. 장애 상황에서 진실을 직시하기보다 책임 회피에 급급한 조직 문화는 핵심 원인 파악을 어렵게 만든다.
이 책은 문제 발견부터 장애 극복, 최적화 구현, 그리고 이를 조직에 적용하는 모든 과정을 읽기 쉽게, 그리고 누구나 공감할 수 있는 방식으로 설명한다. 문제 해결에 집중하고자 하는 모든 IT 종사자에게 강력히 추천한다.
- 정윤진 / 메가존클라우드 전무, 테크니컬 어드바이저 투(to) CEO
캐리 밀샙은 특별한 재능을 지녔다. 일을 빨리 처리하는 능력도 뛰어나지만 정말 특출난 점은 복잡한 문제를 간단하면서도 강력한 아이디어로 해석하는 능력이다. 가히 대가라 할 만큼, 생생한 이야기와 명확한 실천방안을 결합해 시의적절한 원칙을 가르친다. 새로운 업무 세계에 발맞춘 시스템을 원한다면 주저 말고 이 책을 읽으라!
- 리즈 와이즈맨 / <뉴욕타임스> 선정 베스트셀러 『멀티플라이어』 저자
언뜻 제목만 보면 기술에 관한 책이라고 생각하기 쉽지만 실상은 그렇지 않다. 이 책에서 기술은 주요 역할을 맡긴 했지만 실제로는 기술에 영향을 받는 사람들의 이야기 속 조연에 불과하다. 이 책은 최종 사용자의 관점에서 문제를 바라보는 방식으로 깊은 통찰을 제공한다. 실제 성능 문제를 해결하기 위해서는 우리가 디자인하고 구현하고 운영하는 시스템을 활용하는 사람들에게 가장 중요한 문제를 파악해 해결해줘야 한다고 이 책에서는 말한다. 우리는 이 책을 통해 그런 사용자들을 만나게 될 것이며 우리 모두에게 더 나은 결과물을 전달할 수 있음에 감사하게 될 것이다.
- 도미닉 델몰리노 / 아마존 웹서비스(AWS) 부사장
40대가 되어서야 캐리와 그의 팀이 하는 방식대로 시스템을 최적화하는 방법을 처음 보게 되었다는 사실이 믿기지 않는다. 이제는 사람들이 그 방법 말고 다른 방식을 시도한다는 것은 도무지 이해가 되지 않을 정도다.
- 리차드 러셀 / 전 세븐일레븐 엔터프라이즈 아키텍트
미션 크리티컬한 시스템을 담당하는 모든 기술 임원이 읽어야 할 책이다. 정말 읽기 쉽고 재미있는 책이기에, 기술적 성능 문제를 철저하게 다루고자 하는(즉 해결하고 방지할) 이들에게 도움이 될 것이다.
- 마크 스위니 / 전 뱅크 오브 아메리카 기술 임원
편안하게 읽히는 책이다. 이 책의 저자 캐리는 뛰어난 기술력을 갖춘 전문가이며 탁월한 이야기꾼이다. 기술 분야든 아니든 캐리는 여러분이 만나게 될 최고의 발표자 중 한 명이며 그런 캐리의 재능이 이 책에 고스란히 녹아 들어 있다. 많은 이의 발목을 잡아온 제법 난해한 주제를 편안한 어조로 풀어가는 캐리를 보면 만족감과 참신함이 동시에 느껴진다.
- 구드문두르 요셉손 / 이나리스 성능 전문가이자 디렉터
20여 년 전 오라클 데이터베이스 성능 문제를 진단하는 방법에 관한 강의에서 강사 캐리를 처음 만났다. 그의 강의는 단지 오라클을 넘어, 성능 이슈 진단을 마주하는 내 접근 방식을 완전히 바꿔 놓았다. 단연코 지난 40여 년간 내가 수강한 기술 강의 중 최고의 강의였다.
뭔가를 빠르게 동작하게 만드는 일은 단순히 속도에 대한 개인적 필요에 의한 것만이 아니다. 어떤 일을 완료하는 속도는 누군가의 성공이나 실패를 결정짓는 경우도 많기 때문이다.
이 책은 캐리가 실 세계의 어려운 성능 문제를 해결하며 얻은 수많은 통찰로 가득 차 있다. 자신이 경험한 재미난 수많은 일화들을 예로 들며 이야기들을 풀어나간다. 모든 소프트웨어 전문가, 그리고 뭔가를 빠르게 동작시키는 것과 관련된 업무를 수행하는 모든 이에게 강력히 권하고 싶은 책이다.
- 앤드류 지텔리 / 우주공학 소프트웨어 엔지니어이자 인디카 레이서
이 책에서 캐리는 “사람들이 일을 제대로 수행하게끔 만드는 것이 프로젝트에서 가장 어려운 점 중 하나”라고 말한다. 이는 IT 프로젝트뿐만 아니라 다른 모든 상황에도 적용된다. 그러니 이 책을 읽음으로써, 제대로 일하고 캐리의 지식을 공유받기를 권한다. 분명히 여러분도 뭔가를 빠르게 동작하게 만드는 데 큰 도움을 받을 것이다.
- 크리스티앙 안토그니니 / 『트러블슈팅 오라클 퍼포먼스』의 저자
캐리가 이 책을 집필했다는 소식을 듣고도 나는 별로 놀라지 않았다. 늘 기대하고 기다려왔기 때문이다. 캐리는 경험이 매우 풍부하다! 그 덕에 술술 읽히고 내용도 훌륭하다. 정말 마음에 드는 책이다.
- 조지 카디파 / 수메루 이퀴티 파트너스 매니징 디렉터
저자 캐리와 수년간 알고 지냈고 함께 일을 한 적도 있었으며 발표도 제법 많이 들었기에 그가 이 책에서 다룬 주제의 상당 부분이 이미 친숙했다. 새로운 점이라면 이야기를 풀어가는 방식이었다. 이 책에서 가장 마음에 드는 부분은 캐리가 여러 가지 일화를 통해 ‘현상을 올바르게 관찰하기’, ‘우선순위를 두고 증상을 해결하기’ 등 중요한 결론으로 이어가는 방법이었다. 이 책은 그 누구보다도 명확하게 결론을 이끌어내고 있다.
- 더그 걸트 / 오라클 시니어 소프트웨어 개발 매니저
캐리를 처음 만났을 무렵 그는 내게 기술만이 아니라 인생에 대해서도 가르침을 줬다. 나는 지금까지도 가족, 동료, 친구들과의 관계에 캐리에게서 배운 지혜를 활용하곤 한다. 캐리는 이 책을 통해 기술을 향상시키는 방법뿐만 아니라 더 나은 삶을 살아가는 방법을 가르치고 상기시켜주고 있다.
- 마그누스 스테른스트롬 / 소프트웨어 개발자
진지함과 가벼움이 잘 어우러진 책이다. 재미있게 읽히며 유용한 기법도 가득 담겨 있다. 이 책을 읽으면서 매우 생산적이고도 즐거운 배움을 얻을 수 있었다. 이런 훌륭한 책을 써준 캐리에게 다시 한번 감사를 전한다!
- 윈스턴 장 / 링크드인 프린시펄 스태프 엔지니어
캐리가 자신의 경험을 통해 성능 문제를 해결해온 과정을 차근차근 이야기하는 서술 방식에 완전히 매료됐다. 이 책의 핵심은 한 단어로 요약된다. 바로 ‘방법론’이다.
- 주앙 엔리케 브로냐 / 프로포튜닝 브라질 DB 관리자
성능 분석과 최적화라는 주제를 세상에서 가장 간결하게 정리한 책이다.
- 조나 H. 해리스 / 더 밋그룹 AI & 머신러닝 디렉터

여는 글

참 시의적절한 시기에 책이 출간됐다. 저자 캐리는 무려 사반세기 동안 이 책에서 다루는 주제를 가르쳐오며 실전에서 사용해왔다. 나는 이 책을 이미 여러 번 읽었고, 여러분도 재미있게 읽을 것이라 믿는다. 어쩌면 여러분의 인생을 바꿀 수도 있는 책이다. 내 삶 또한 이 책에서 설명하는 원리들에 의해 바뀌었기 때문이다. 이미 나는 18년 전에 캐리의 덕을 봤다.
이 책의 본질은 2003년 캐리가 제프 홀트(Jeff Hold)와 공저한 『오라클 성능 최적화(Optimizing Oracle Performance)』의 본질과 같기 때문이다. 그 본질이란 ‘R 방법론(Method R)’이다.
R 방법론은 내 삶을 바꾸고, 내 경력의 토대가 됐다. R 방법론을 알기 전에는 그저 데이터베이스 관리자로서 알아야 하는 ‘보편적인’ 팁과 요령, 도구와 기법을 연구하고 적용해왔다. 물론 성공한 적도 있지만 그 결과는 대체로 일관적이지 못했으며 모든 것이 복잡하고 어렵게만 느껴졌다. R 방법론은 최적화에 대한 내 생각을 거의 완전히 바꿔놓았다. 그러자 모든 것이 명료하고 간단해졌다.
비단 오라클과 관련된 것뿐만이 아니었다. R 방법론을 알게 되면서 내가 개선해야 하는 모든 것에 대해 어떤 정보를 수집해야 하는지를 분명하게 파악할 수 있었다. 성능 이슈의 근본 원인을 어디서 찾아야 하고 어떻게 수정해야 하는지를 알 수 있었다. 하지만 특히 좋았던 점은 내 방식과 그 방식을 행하는 이유를 다른 사람에게 설명할 수 있게 됐다는 점이었다. 특히 성취감도 컸다. 문제의 원인과 개선 방법을 단순히 추정하는 것이 아니라 R 방법론을 통해 명확히 알 수 있었기에 가능했다.
실제로 많은 이가 오라클을 넘어 다양한 분야에 R 방법론을 적용할 수 있다는 가능성을 엿보았지만, 2003년 캐리가 집필한 책은 그저 오라클에 관한 책일 뿐이었다. 하지만 이번 책은 다르다. 이 책은 결정을 내려야 하는 ‘사람들’에 대한 책이다. 단순히 오라클 관련자나 실행 시간이 긴 배치 작업(batch job) 등을 실행하는 IT 종사자들을 위한 책이 아니다. 식사를 준비하거나 아이들을 운동 수업에 데려다줘야 하는 모든 이를 위한 책이다.
즉 뭔가를 더 빠르게, 더 좋게, 더 우아하게 만들고 싶어 하는 모두를 위한 책이다. 이 원리는 모든 것에 동일하게 적용된다. 처음 R 방법론을 적용할 때 나는 “이게 정말 이렇게 간단할 수 있을까?”라고 생각했다. 그 답은 분명히 “그렇다!”이다.
이 책은 읽기에도 편하다. 캐리는 뛰어난 기술 전문가이자 탁월한 이야기꾼이다. 캐리는 (기술 분야든 아니든) 여러분이 만나게 될 최고의 발표자 중 한 명이며 캐리의 그런 재능은 이 책에 고스란히 녹아 들어 있다. 많은 이의 발목을 잡아온 제법 난해한 주제를 편안한 어조로 풀어가는 캐리를 보면 만족감과 참신함이 동시에 느껴진다. 캐리가 소개하는 일화는 IT 분야든 아니든 거의 모든 이의 경험과 관련이 있다. 이 책을 읽다 보면 여러분도 “맞아, 나도 이런 상황을 맞닥뜨렸었지”라고 회상할 수 있는 일화를 마주하게 될 거라고 생각한다.
이 책에서 캐리가 소개하는 일화는 재미도 있지만 그로부터 얻는 깨달음은 여러분을 변화시킬 것이다. 이 책에서 여러분은 상황을 올바르게 관찰하는 간단한 행위만으로도 세상을 바꿀 만한 차이를 만들어 낼 수 있음을 깨닫게 될 것이다. 자신있고 일관되게 성능 문제를 식별하고 확인하며, 범위를 정해 분석하고 해결하는 방법도 배우게 될 것이다. 동료의 감정을 긍정의 힘으로 승화시키는 방법도 익힐 것이다. 또한 더 나은 테스트를 통해 문제에 부딪히지 않고 그 문제를 ‘회피’하는 방법도 알게 될 것이다. 더 많은 개선이 가능한지 여부에 대한 확실한 증거를 찾는 방법도 배울 것이며, 그리고 결국 이해하게 될 것이다.
원한다면 이 책을 교과서라고 생각해도 된다. 필요하면 아무 때고 꺼내 들어 읽을 수 있는 책이기도 하다. 바로 여러분과 같은 수많은 이들이 세상에 긍정적인 영향을 주는 데 도움을 줄 수 있을 책이라고 굳게 믿는다.
- 구드문두르 요셉손 / 이나리스(Inaris)의 성능 전문가이자 디렉터


지은이 캐리 밀샙 Cary Millsap

1990년대 십여 년간 오라클 컨설턴트로 일하며 일생일대의 많은 기술적, 정치적 교훈을 익혔다. 1999년 무렵에는 백여 곳에 달하는 다양한 고객사들과 함께 일하며 인상적인 실적을 쌓았고, 오라클이 전 세계 수백 곳의 고객사를 지원하기 위해 운영한 85명의 엘리트 성능 전문가 팀을 구축하고 교육했다.
2004년에 집필한 『오라클 성능 최적화(Optimizing Oracle Performance)』(오라일리) 책으로 연구자 제프 홀트(Jeff Holt)와 함께 <오라클 매거진>이 선정한 ‘올해의 저자’로 선정되기도 했다.
2008년에는 메서드R사(Method R Corporation)를 설립해서 전 세계 굴지 고객사들을 대상으로 서비스를 제공하며, 수천 개의 오라클 추적 파일을 관리, 마이닝, 조작할 수 있는 세계 최초의 소프트웨어 시스템을 만들기도 했다. 경력 전반에 걸쳐 글쓰기, 교육, 그리고 각종 공개 행사에서의 강연 등을 통해 수천 명의 정보기술 전문가들을 교육해 왔다.

뭔가를 빠르게 만든다는 것은 그 뭔가를 더 나아지게 만드는 것이다. 삶도 나아진다. 이 책은 뭔가를 더 나은 것으로 만드는 방법에 대한 책이다. 이 책은 더 나은 삶을 만들어 준다. 도구가 더 빠르게 동작할수록 여러분이 원하는 일을 할 수 있는 시간도 늘어난다. 도구를 활용해 정보를 처리하는 경우 그 도구를 더 빠르게 동작시킨다면, 여러분은 더 나은 결정을 내릴 수 있다.
(컴퓨터든 쟁기든, 뭐든 간에) 최적화에는 두 가지 스킬이 필요하다. 첫째는 올바른 질문을 하는 것, 둘째는 당연히 그 질문의 답을 구하는 것이다.
최적화에 대해 고민하는 사람들의 대부분은 두 번째 스킬은 잘 이해하고 있다. 하지만 첫 번째 스킬을 이해하는 사람은 그보다 적은 것 같다. 이 첫 번째 스킬—올바른 질문을 던지는 행위—이야말로 여러분이 가장 먼저 개발해야 할 스킬이다. 여러분이 리더라면 특히 더 그렇다. 여러분이 얼마나 빨리 이 스킬을 배울 수 있는지 알게 되면 꽤 놀랄지도 모르겠다.
여기서 문제가 하나 있다. 제대로 질문하는 방법을 가르치기는 방법 자체는 간단하다. 하지만 그런 간단한 질문을 끊임없이 해대는 어린 아이를 키워보지 않은 사람이라면 질문에 답을 하기란 쉽지 않을 것이다. 예를 들어 사내의 모든 컴퓨터를 관리하는 사람들은 금요일 오후 2시에 시스템의 CPU 사용률이 어느 정도인지 정확히 알고 있겠지만, 직원이 주문을 입력하는 데 얼마나 걸릴지에 대한 질문에는 답을 못 할 것이다. 그들이 하고자 하는 답변과 여러분이 묻고자 하는 질문 사이에는 간극이 있다. 이런 간극 때문에 뭔가를 빠르게 할 수 있는 기회를 보지 못한다. 나는 이런 기회를 찾을 수 있는 방법을 가르쳐 주려 한다.
최적화는 기술적이라기보다는 정치적인 경우가 많다. 그렇다면 왜 최적화에 대한 책들은 거의 항상 기술적인 측면만을 다루는지가 궁금해진다. 기술 종사자들은 프로젝트의 비기술적 요소들에 대해 불필요하다거나 말도 안 되는 방해 요소라고 간주하는 경우가 많기 때문이다. 하지만 사실 최적화의 비기술적 측면도 기술적 측면과 마찬가지로 이해와 노력이 필요하다. 뭔가를 최적화하려면 기술적으로 생산적이어야 할 뿐만 아니라, 때로는 불안과 공포가 만들어 낸 괴물을 마주해야 한다. 성공 사례가 충분하다면 다음에 무엇을 해야 할지에 대한 논쟁에서 이기는 데는 도움이 되겠지만, 정치적인 요령을 발휘하지 않고서 그런 성공 사례는 절대로 만들어내지 못할 것이다.
나는 이 책을 통해 여러분이 정치적으로, 그리고 기술적으로 질문하고 답변하는 두 가지 스킬을 개선하는 것을 돕고자 한다. 그 잠재적 보상은 엄청나다. 성능에 대한 기술적 요소와 더불어, 성능에 대해 걱정하는 사람들의 욕구와 감정을 관찰하는 방법을 모두 이해한다면 여러분은 그 무엇이든 최적화할 수 있을 것이다.


옮긴이 장현희

지난 10여 년간 호주와 캐나다에서 시니어 엔지니어 및 스태프 엔지니어로 경험을 쌓았으며 현재는 프린시펄 소프트웨어 엔지니어(principal software engineer)로서 소프트웨어 개발은 물론 성공적인 엔지니어링 팀과 문화의 구축에 힘을 쏟고 있다. 
지금까지 30권이 넘는 개발 관련서를 집필/번역하면서 책이라는 매개체로 멀리서나마 국내 개발자들과 꾸준히 소통하고 있으며 대표적인 번역서로는 『필독! 개발자 온보딩 가이드』(책만, 2023), 『딱 한 줄로! 파이썬 제대로 코딩하기』(책만, 2024),『스태프 엔지니어』(길벗, 2022), 『SRE를 위한 시스템 설계와 구축』(한빛미디어, 2022), 『엔터프라이즈 데이터 플랫폼 구축』(책만, 2020), 『사이트 신뢰성 엔지니어링』(제이펍, 2018), 『클라우드 네이티브 자바』(책만, 2018) 등이 있다.

처음 책만 출판사에서 이 책의 원서인 『How to Make Things Faster』의 검토를 요청하셨을 때 기껏해야 성능 튜닝을 주제로 하는 지루한 기술 서적일거라고 생각하면서 읽기 시작했다가 단숨에 3장까지 읽었던 기억이 납니다.
이 책은 단순히 “어떻게 무언가를 빠르게 동작하게 할 것인가”에 대한 책이 아니라 문제가 무엇인지, 어디를 관찰해야 하는지, 어떤 데이터가 진짜 문제 해결의 단서를 줄 수 있는지를 알아내는 방법을 소개하는 책입니다. 저자는 무려 111가지의 실제 사례를 통해 문제 해결의 본질을 보여줍니다. 그 과정에서 단순히 “느리다”는 증상에만 집착하고 엉뚱한 곳에서 그 원인을 찾는, 엔지니어라면 공통적으로 겪는 실수들을 마주하게 됩니다.
이 책을 번역하면서 가장 인상 깊었던 점은 성능 개선과 관련된 이야기가 사고의 전환과 관찰의 훈련으로 이어진다는 점입니다. ‘문제를 올바르게 해결한다’는 것은 결국 어디를 관찰할 것인지, 어떤 것을 무시할 것인지를 결정하는 과정입니다. 그리고 이 책을 모두 읽은 후에야 수많은 엔지니어들이 이 과정에서 어떻게 잘못된 결정을 내리게 되는지, 그리고 올바른 결정을 내리려면 어떤 식으로 사고를 이어가야 하는지를 알 수 있었습니다.
엔지니어라면 늘상 마주하게 되는 문제 해결의 과정에 이 책이 큰 도움이 되어 주길 바랍니다.


책 속으로

“최적화는 기술적이라기보다는 정치적인 경우가 많다. 그렇다면 왜 최적화에 대한 책들은 거의 항상 기술적인 측면만을 다루는지가 궁금해진다.” __p29

““잘 모르겠습니다. 하지만 문제 해결을 도와드릴 순 있어요”라고 말해보자. 그게 바로 리더십이 발휘되는 순간이다.” __p48

“하지만 진짜 성능 문제는 서버실이나 네트워크 케이블에 있지 않았다. 해답은 고작 3킬로미터 떨어진 낸시의 좁은 칸막이 사무실 책상에 있었다. 우리는 서버실에서 문제를 제대로 보고는 있었지만, 그 문제의 엉뚱한 부분을 바라보고 있었던 것이다.” __p49

“이 이야기의 교훈은 무엇이겠는가? 증상이 발현된 곳으로 가서 관찰하라는 것이다. 부차적 현상이 아니라 실제 증상을, 쉽게 측정할 수 있는 대체 지표가 아니라 실제로 벌어지는 상황을 관찰해야 한다.” __p59

“시스템 관리 도구를 통해서가 아니라, 업무를 처리하지 못해 고통받는 실제 개개인의 관점에서 문제를 관찰해야 한다.” __p62

“우위를 가리기 위한 정보가 필요하다면, 우선 순위가 동일한 증상을 깊이 파헤쳐보기 전에 우선 겉으로 드러난 현상부터 분석해보자. 그래야 어떤 증상이 가장 빨리 완화될 수 있는지를 알아낼 수 있다.” __p64

“여러분이 이 직업에 어울리는 중요한 이유 중 하나는 호기심이다.” __p70

“성능과 관련된 지표는 쉽게 측정하고 개선할 수 있으므로 좋은 성능을 유지하는 데 관측용이성은 무엇보다 중요하다.” __p99

“문제를 발견했을 때 다른 사람의 도움을 받을 수 있는 가장 좋은 방법은 다음의 정보를 포함하는 재현 가능한 테스트 케이스(reproducible test case)를 제공하는 것이다.” __p102

“추적의 반대급부가 사람들이 두려워하는 만큼 나쁜 경우는 거의 없다. 잘 설계한 추적 기능은 풍부하면서도 가볍다.” __p113

“사람들이 원하지 않는 데이터를 프로그램이 더 빠르게 리턴하게 하는 것보다는, 더 적은 데이터를 리턴하게 하는 것이 더 쉽고 저렴하며 훨씬 효율적이다.” __p137

“성능 개선이란 결국 병목(bottleneck)을 제거하는 것이라는 말을 들어본 적이 있을 것이다. 사실 병목이라는 단어 자체가 은유다. 주어진 시간 내에 병에서 따라낼 수 있는 액체의 양은 병의 크기나 용량이 아니라 병 끝에 있는 작은 구멍의 크기에 따라 달라진다.” __p138

“응답 시간에서 가장 많은 비중을 차지하는 부분이 프로그램 실행의 병목이다.” __p138

“나의 설명 덕분인지, 이 프로젝트에서 가장 어려웠던 경청-진정-설득의 절차를 무사히 마칠 수 있었다.” __p187

“문제 해결 과정에서 진전은 현재 일어나고 있는 일에 대해 더 많은 것을 알게 될 때 가능해진다. 즉 읽고 질문하고 더 많은 데이터를 수집하거나 이런 저런 실험을 해봐야 한다는 뜻이다.” __p210

“더그는 우리의 노고에 감사하다는 인사를 남기곤 자리를 떴다. 의사결정권자가 회의실에 있으면 사실 결정은 쉬운 것이었고, 더그에게는 그 결정을 내릴 권한이 있었다. 왜 7시가 아니라 더 일찍, 5시에 더그에게 연락하지 않았을까? 피드백 루프는 최대한 빠르게 가져가자.” __p219, p220

“사람들이 병렬화를 오용하지 않도록 시스템을 관리하는 것은 시스템 관리자의 의무다. 흔히 말하듯 “과유불급”이므로.” __p261

“다시 말해, 사람은 한 번에 하나 이상의 일을 하려 한다면 몸만 축날 뿐 바보가 되어 버릴 수도 있다. 스스로 높은 성과를 내길 원한다면 멀티태스킹은 관두라. 그건 컴퓨터가 할 일이다.” __p266

“최적화를 할 때는, 여러분이 정말로 원하는 것이 무엇인지를 골똘히 생각해보자. 여러분이 정말 관심을 가지는 경험의 속성들을 열거해보자. 그리고 최상의 결과를 만들어 낼 수 있는 트레이드오프 지점을 찾아내자.” __p293

“테스트는 왜 필요할까? 분주한 대규모 시스템 상에서 애플리케이션의 각 기능이 얼마나 빠르게 실행되는지 알 수 있다. 실제로 기능을 작성하는 동안 시스템의 약점이 어디인지는, 테스트를 통해서 알 수 있다. 계획은 테스트를 대체할 수 없다.” __p303

“프로젝트의 막바지에 결함을 수정하는 것은 초기에 일찍 수정하는 것보다 훨씬 더 많은 비용이 들어간다.” __p310

“하수구에 빠뜨린 열쇠를 화분에서 찾을 리는 만무하다.” __p330

“분산식 권한 모델도 여러분이 필요한 권한을 얻을 수 있다면 더 쉽게 진전을 이룰 수 있다. 중요한 것은 필요한 권한을 얻는 것이다.” __p338

“그러니 내가 여러분이 빨리 실패하기를 바란다는 것은, 저주가 아니라 축복을 내리고자 함이다.” __p342

“내 동료 안조 콜크(Anjo Kolk)는 성능 문제의 90%는 정치적인 문제이고 10%만이 기술적인 문제라고 했다. 여러분이 뭔가를 고친다는 것은 곧 다른 누군가가 일을 망쳤다는 암시를 만들어낼 수 있음을 깨달아야 한다.” __p344

“솔직함에는 책임감이 필요하다. 효과적인 솔직함이란 단순히 떠오르는 모든 생각을 여과 없이 내뱉는 것이 아니라 사실이 무엇인지를 신중하게 판단한 후에 사실을 말하는 것이다.” __p345

“대부분의 실패 사례는, 우리 팀은 정확히 어떤 일을 해야 할지 알고 있었음에도 결국 고객사를 설득하지 못한 경우다. 해야 할 일을 하게끔 사람들을 설득하는 것이 프로젝트에서 가장 어려운 부분이다.” __p355

“긴장되는 상황을 두려워하지 말자. 의미 있는 순간을 마주하기 위해 몸이 더 많은 힘과 집중력을 선물해주는 것이라고 받아들이자.” __p359

차례

1장 관찰하기
#001 팀장 밥
#002 필리스의 테스트
#003 진짜 목표
#004 낸시의 좁은 칸막이 책상
#005 올바른 지점을 관찰하기
#006 관찰할 수 없는 상황이라면

2장 방법론
#007 49가지 고충
#008 배송 송장 출력 문제
#009 더 많은 고충들
#010 우선순위
#011 그냥 시스템 전체가 느리다고요
#012 부수적 혜택
#013 은탄환에 대한 기대
#014 증상 목록
#015 R 방법론

3장 프로파일링
#016 급여명세서
#017 시퀀스 다이어그램
#018 간트 차트
#019 애플리케이션 동작의 추적
#020 프로파일
#021 프로파일의 생성

4장 성능 측정하기
#022 성능도 기능이다
#023 재현 가능한 테스트 케이스
#024 간헐적으로 발생하는 문제
#025 얼마나 많은 데이터를 추적해야 할까
#026 경험의 확인
#027 측정 침입

5장 최적화
#028 수수께끼
#029 게임
#030 이벤트 카운트
#031 이벤트 실행 시간
#032 필터링은 되도록 빨리
#033 왼쪽을 바라보자
#034 토우-밀샙의 법칙
#035 병목
#036 ‘시스템 병목’의 이해
#037 서브시스템 최적화의 문제
#038 모든 문제는 왜곡 문제다
#039 주요 실행 경로

6장 지연
#040 케빈
#041 대기 지연
#042 대기열 이론
#043 쌍곡선
#044 트래픽 강도
#045 점유율
#046 쌍곡선 효과
#047 일관성 지연
#048 지연과 처리량

7장 낭비
#049 컨설턴트 데브라
#050 램프 문제
#051 회계 전문가 마사
#052 효율성
#053 문제를 고칠까 아니면 자원을 추가할까
#054 전설 속 설인 예티
#055 빠른 속도 vs 효율성
#056 확장성

8장 문제 해결
#057 4가지 간단한 질문
#058 데이터를 끝까지 살펴보기
#059 임원의 피드백 루프
#060 부수적 피해
#061 과유불급
#062 IT 본부장 더그
#063 완료란 무엇인가

9장 예측
#064 엔터프라이즈 아키텍트 리차드
#065 예측이 필요한 이유
#066 프로파일을 통한 예측
#067 할지 말지에 대한 예측
#068 선형 동작
#069 왜곡
#070 이벤트 간의 상호의존성
#071 비선형 동작

10장 대기 시간 숨기기
#072 엄마의 초단시간 요리 노하우
#073 도미닉
#074 병렬화
#075 시스템 녹이기 게임
#076 멀티태스킹
#077 인간의 멀티태스킹

11장 논리적 오류
#078 사악한 램프요정 지니
#079 가죽 자켓
#080 묻혀 있는 이상치
#081 요청을 할 때는 주의 깊게
#082 백분위수 명세
#083 적중률 문제
#084 연비 문제
#085 비율의 문제
#086 처리량과 응답 시간은 어떨까
#087 비율은 쓸모없는 것일까
#088 비율을 신뢰할 수 있는 경우
#089 개선된 성능에 대해 설명하기
#090 ‘n배 빨라짐’의 미신

12장 테스팅
#091 테스트가 필요한 이유
#092 위험
#093 파괴적 테스트
#094 테스트는 그저 하나의 단계가 아니다
#095 자동화 테스트
#096 문제 예방하기

13장 계획
#097 유틀리 선생님
#098 용량 계획
#099 사용량 목표
#100 하드웨어 업그레이드가 필요한 시점

14장 정치적 견해
#101 입증
#102 더 적은 것을 약속할 때의 문제
#103 프로젝트의 위험을 확인하는 7가지 방법
#104 빨리 실패하기
#105 체면
#106 보석상의 판매 전략
#107 변경 관리
#108 기록 남기기
#109 실패
#110 긴장은 하되 걱정은 금물

15장 재미삼아
#111 꼬맹이들 최적화

댓글