![[도서 리뷰] 자바 최적화 2판 (한빛미디어)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2Fdp8KNl%2FbtsOOdxg2YK%2FAAAAAAAAAAAAAAAAAAAAAEVKo9DLziiFDodTScLiVExweVuHDOZsbBQpCHMD9vUe%2Fimg.jpg%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1751295599%26allow_ip%3D%26allow_referer%3D%26signature%3DnExT8vio0jJFVCKfM4dF%252FtbLP64%253D)

한빛미디어 서평단 <나는리뷰어다> 활동을 위해서 책을 협찬받아 작성된 서평입니다
도서 구매 링크
https://www.hanbit.co.kr/store/books/look.php?p_code=B9520608962
자바 최적화(2판)
자바 성능 튜닝, 소문과 감에 의존하지 말고 과학적으로 접근하라! 구체적인 사례와 코드로 배우는 클라우드 네이티브 자바 실전 가이드
www.hanbit.co.kr
책을 읽게 된 계기
개발 업무와 함께 인프라 구축·운영 경험이 쌓이면서, 자연스럽게 성능 최적화에 관심이 생겼습니다. 실무와 학습을 병행하는 과정에서 GC 튜닝, 스레드, 스케줄러 등 성능 관련 용어들을 자주 접했지만, 이론 위주로만 훑고 넘어갈 뿐 이를 체계적으로 정리하거나 직접 활용해보기에는 기술적인 러닝 커브가 높게 느꼈습니다.
이러한 고민 속에서 📚자바 최적화(2판)이 방향을 잡는데 도움이 될 수 있는 책이라 생각하여 읽게 되었습니다. 특히, 책에서 소프트웨어 개발자가 하드웨어를 이해하려는 태도를 "기계적 공감(mechanical sympathy)"이라 표현한 부분이 인상 깊었고, 먼저 앞서간 업계 선배의 지식과 경험을 듣는다는 마음으로 책을 읽었습니다.
대상 독자
📚자바 최적화(2판) 단순한 코드 튜닝 가이드가 아니라 성능 테스트, JVM 구조, 애플리케이션 운영까지 폭넓게 다루는 책입니다.
개정판에서는 다음 네 가지 주제를 중심으로 구성되어 있습니다.
① 단일 JVM에서 실행되는 코드 성능 분석
② JVM의 내부 매커니즘에 대한 심층 설명
③ 클라우드 스택과 JVM 애플리케이션 간의 상호작용
④ 클러스터 환경에서 자바 애플리케이션이 어떻게 동작하는지에 대한 고찰
이 책은 자바 언어에 익숙한 개발자는 물론, 인프라 환경을 설계하거나 운영해본 경험이 있는 독자에게 유익하다고 생각합니다. 시스템 자원 활용, GC 튜닝, 벤치마크 분석 등 성능 최적화 전반에 대해 실무에 바로 적용 가능한 통찰을 제공하며, 단순한 문법 지식을 넘어 성능 엔지니어링 관점에서 인사이트를 얻고자 하는 분께 추천합니다.
인상 깊었던 내용
📚자바 최적화(2판)에서 인상 깊었던 부분은 초반 1 ~ 3 챕터였습니다. 비교적 가볍게 읽히면서도 자바 성능 최적화라는 주제에 흥미를 붙이기에 충분한 내용을 담고 있어, 이후의 깊이 있는 기술 설명으로 자연스럽게 이어지게끔 구성되어 있었습니다.
- 챕터1. 최적화와 성능 정의
- 챕터2. 성능 테스트 방법론
- 챕터3. 자바 가상 머신 개요
- 그외 생략..
챕터1. 최적화와 성능 정의
챕터1에서는 자바 성능 최적화에 대한 환상을 바로잡는 것으로 시작합니다. “문제 해결을 위한 은탄환은 없다”는 흔한 말처럼, 자바 성능 향상에도 마법 같은 설정이나 비밀 알고리즘은 존재하지 않습니다. 이 장에서는 성능을 실증 과학의 관점에서 접근해야 한다고 강조합니다. 즉, 성능 튜닝은 단순한 요령이 아니라 다음과 같은 현실적인 절차를 필요합니다.
⚙️ 성능 튜닝을 위한 단계
1. 원하는 결과를 정의합니다
2. 기존 시스템을 측정합니다
3. 요구사항을 충족하기 위해 필요한 작업을 결정합니다
4. 개선 작업을 수행합니다
5. 다시 테스트합니다
6. 목표가 달성되었는지 확인합니다.
이러한 접근은 실무에서도 매우 유효한 기준이 되며, 막연한 '최적화'에 매달리는 대신, 명확한 기준과 반복 가능한 절차를 따르는 중요성을 일깨워줍니다. 또한, 이 장에서는 성능을 평가하는 7가지 주요 지표를 정의하고, JDK 미션 컨트롤(JMC) 같은 모니터링 도구를 통해 실제 애플리케이션의 성능 패턴을 어떻게 관찰할 수 있는지도 간단히 소개합니다. 성능 튜닝의 이론과 도구 사용의 접점을 보여주며, 이후 장으로 자연스럽게 이어질 수 있도록 기반을 다지는 구성이라 느껴졌습니다.
스트레스 받지 않는 정상적인 애플리케이션에서 메모리 사용량이 '톱니형' 패턴으로 나타나게 만듭니다. (p42)
챕터2. 성능 테스트 방법론
챕터2에서는 성능 테스트 방법론 전반에 대한 현실적이고 실무적인 통찰을 제공합니다. 개인적으로 공감되었던 부분은, 성능 테스트를 잘못 수행하는 원인 중 하나로 “아무것도 하지 않는 것보다 무언가를 하는 게 낫다”는 믿음을 지적한 대목이었습니다. 책에서는 이러한 태도가 위험한 반쪽짜리 진실에 불과하다고 강조하는데, 성능 테스트란 그저 도구를 돌리는 것이 아니라 명확한 목적과 해석을 기반으로 해야 한다는 점을 다시금 일깨워 줍니다.
이후에는 성능 테스트 유형(7가지)을 구분하여 설명하고, 성능 안티 패턴의 원인, 거짓 상관 관계, 인지적 편향 등 성능 엔지니어가 반드시 경계해야 할 원칙들을 다룹니다. 성능 안티 패턴의 원인으로 지루함/이력 부풀리기/사회적 압박/이해 부족/문제에 대한 오해를 하나씩 짚어가는데, 특히 '2.3.4 이해 부족' 항목에서 언급된 하이버네이트 관련 내용은 실무 경험과 겹쳐 개인적으로 강한 인상을 남겼습니다.
예를 들어 하이버네이트는 객체와 데이터베이스 간의 변환을 단순화하는 솔루션으로 보일 수 있습니다. 그러나 이를 충분히 이해하지 못한 상태에서는 오히려 시스템의 복잡성을 더하거나 장애를 유발할 위험이 있습니다.
결국, 성능 최적화는 ‘감’이 아니라 수치와 통계를 기반으로 한 fact에 기초해야 하며, 비과학적이거나 주관적인 추론에 빠지지 않도록 객관성과 반복 검증을 갖춘 접근 방식이 필요하다는 것을 이번 챕터에서 배울 수 있었습니다.
Hibernate 기술 부채 경험 공유
과거 소속된 팀에서 Hibernate 이해도가 낮은 상태에서 기술을 사용하다가 서버 장애가 발생했던 경험이 있었습니다. 당시 Hibernate의 내부 동작 원리에 대한 팀 내 이해가 충분치 않았고, 코드 기준으로 성급하게 결론을 내리는 등 다양한 인지적 편향이 의사 결정에 영향을 주었던 것 같습니다. 특히 확증 편향, 감정적 판단, 환원주의적 사고, 위험 회피 성향 등이 겹치면서 문제의 본질에 집중하기보다 익숙한 방식으로 대응하려는 경향이 있었고, 그 결과 기술 부채는 해결하지 못한 채 비용 부담으로 이어졌습니다. 이 책을 읽으며 그때의 상황을 다시 떠올릴 수 있었고, 성능 문제를 다룰 때는 기술에 대한 정확한 이해뿐 아니라 심리적 거리 두기와 태도 역시 중요하다는 점을 깨달았습니다.
챕터3. 자바 가상 머신 개요
챕터 3은 자바 가상 머신(JVM)의 전반적인 구조와 실행 흐름, 그리고 운영 관점에서 알아야 할 핵심 요소들을 균형 있게 다룹니다. 스택 기반 인터프리터로서의 동작 원리부터 클래스 로더 체인의 역할, JIT 컴파일 과정, 메모리 관리와 GC, 스레드 모델에 이르기까지 자바 애플리케이션이 컴파일된 이후 실제로 어떻게 실행되는지를 단계별로 설명합니다. 특히 JVM의 내부 요소들이 단순히 개념적으로 나열되는 것이 아니라 하나의 실행 흐름 안에서 유기적으로 연결되어 설명된다는 점이 인상적이었고, 익숙한 개념에 대해 새로운 인사이트를 얻을 수 있는 기회가 되었습니다.
도구 관점에서는 VisualVM과 같은 JVM 모니터링 툴을 중심으로, JMX, 자바 에이전트, JVMTI 등 다양한 계측 수단이 소개됩니다. 특히 VisualVM은 실제로 사용해볼 수 있는 가시적인 도구이고, 각 탭(모니터링, 스레드, 프로파일링 등)의 역할이 명확히 구분되어 있어 초심자에게도 좋은 입문서가 될 수 있다고 느꼈습니다.
마지막으로 JDK 배포판과 자바 릴리스 주기에 대한 설명도 간결하면서 실용적이었습니다. 오라클, 아마존 코레토, 마이크로소프트 OpenJDK 등 다양한 벤더가 존재함에도 실무에서 명확한 기준 없이 선택해왔던 경험을 돌아보게 되었고, 비용, 보안 패치, 버그 수정 가능성 등 실제 운영에서 고려해야 할 기준을 제공해 준 점이 유익했습니다.
그외, 리뷰를 마치면서
챕터 4에서는 마크 앤 스윕, G1, ParallelOld, SerialOld 등 다양한 가비지 컬렉션(GC)을 다루는데, 상대적으로 이론적인 비중이 높아 다소 어렵게 느껴졌습니다. 반면 이후 챕터에서는 컨테이너(Docker), 클라우드 환경, 배포 방식, 관측성 등 인프라와 운영 관점의 주제가 중심이 되어, 실무에서 인프라 구축과 운영을 병행해온 입장에서 흥미롭게 읽을 수 있었습니다.
이 리뷰를 작성하는 시점에서는 챕터 10까지 읽은 상태이며, 제게 📚자바 최적화(2판)은 단순한 튜닝 기법을 넘어 자바 개발자에게 실질적인 문제 해결력과 시스템 전체를 바라보는 기술적 시야를 키워주는 책으로 다가왔습니다. 단순히 코드를 잘 짜는 것을 넘어 기계적 공감(mechanical sympathy)이라는 태도를 가지고, 시스템 동작 원리까지 이해하고자 하는 개발자라면 📚자바 최적화(2판)를 통해 인사이트를 얻을 수 있을거라 생각합니다.
'독서 > 📚' 카테고리의 다른 글
[도서 리뷰] 멀티프로그래밍 패러다임 (0) | 2025.05.26 |
---|---|
[도서 리뷰] 그림으로 배우는 도커 (Docker, Dockerfile, docker-compose) (0) | 2025.04.21 |
[개발 도서] 리팩터링 2판 - 스터디 회고 (Java, JUnit5) (0) | 2025.04.07 |
[도서 리뷰] 자바 코드의 품질을 높이는 100가지 방법, 자바 베테랑이 전하는 실전 오류 패턴과 해법 (0) | 2025.03.07 |
[도서 리뷰] 그로킹 알고리즘(개정판) (1) | 2025.02.21 |

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!