해당 리뷰는 jpub의 도서 리뷰어로 참여하여 책을 받은 후, 작성하는 리뷰입니다.
그래도 장점은 장점대로 칭찬할 것이며, 단점은 단점대로 언급할 것입니다.
<읽은 기간>
2024/05/06 ~ 2023/05/09
<리뷰 순서>
1) 책의 표지
2) 단원별 구성
3) 읽은 소감
우선 저의 글의 앞부분만 보는 분들을 위해 먼저 간단히 4가지에 대해 답해보겠습니다.
Q 이 책을 읽기 전에 필요한 수준/ 지식은?
=> 기존에 Java, Kotlin, Scala와 같은 JVM 기반의 언어를 공부하고 사용해 오던 사람이라면 부담 없이 읽을 수 있는 책이다!
Q 이 책의 번역 상태는? (4/5)
=> 번역 상태가 좋다, 읽는 동안 어색하다 느낀 단락이 거의 없다. 진짜 거의 없었던것 같아서 이 정도면 번역이 매우 성공적으로 된 책이라 생각된다. 다만 초기 1쇄라 중간중간의 오타나 어색한 부분은 이후에 더 개선될 것이라 생각된다.
<번역 기준>
5/5 : 책을 완독하는 동안 거의 어색함을 못 느낀 번역
4/5 : 한 쳅터를 읽을 때마다 한, 두 번? 어색함을 느낀 번역
3/5 : 한 장을 읽을 때 마다 한, 두 번? 어색함을 느낀 번역
2/5 : 한 문장을 읽을 때 마다 한, 두 번? 어색함을 느낀 번역
1/5 : 그냥 발 번역
Q 이 책을 읽어야 할 필요성, 어디에 도움이 될까?
=> JVM기반의 언어를 통해 애플리케이션을 개발하다 보면, 앱에서 발생하는 여러 문제들이 있는데, 이 책은 그러한 문제들을 잘 "관찰"할 수 있도록 도와주고 방법을 알려주는 책이다. 아마 이 책을 읽어둔다면, 향후 애플리케이션에 문제가 발생하였을 때, 어떤 식으로 원인을 찾아가야 할지 알 수 있을 것이다.
또한 저자는 다음과 같은 기대효과가 있을 것이라 추천해주고 있다!
Q 이 책을 읽은 후 추후 공부는?
=> 이 책은 딱히 후속공부로 뭘 더 해야 하는 책은 아닌 것 같다. 그냥 실제 경험을 통해 책에서 배운 내용을 적용할 일이 있다면 더 좋을 것 같다.
1. 책의 표지
책의 표지를 처음 봤을 때 "MANNING"의 책일 거 같다는 느낌을 받은 책이다 ㅋㅋㅋㅋ
역시나 "MANNING"의 책이었다 ㅋㅋㅋ
책 표지는 깔끔한 게 아주 마음에 든다!~ 더 중요한 내용에 대하여 알아보자!
2. 단원별 구성
이 책의 구성은 다음과 같다.
PART I 트러블슈팅 기본 테크닉
CHAPTER 1 앱에서 모호한 부분 밝히기
CHAPTER 2 디버깅 기법으로 앱 로직 이해하기 21
CHAPTER 3 고급 디버깅 기법으로 문제의 근본 원인 찾기 47
CHAPTER 4 원격 앱 디버깅 65
CHAPTER 5 로그를 활용하여 앱 동작 감시하기 83
PART II 트러블슈팅 고급 테크닉
CHAPTER 6 프로파일링 기법으로 리소스 사용 문제 파악하기 111
CHAPTER 7 프로파일링 기법으로 숨겨진 이슈 찾기 133
CHAPTER 8 프로파일링 한 데이터에 고급 시각화 도구 적용하기 159
CHAPTER 9 멀티스레드 아키텍처의 락 문제 조사하기 183
CHAPTER 10 스레드 덤프로 데드락 문제 조사하기 207
CHAPTER 11 앱 실행 중 메모리 관련 이슈 찾기 227
PART III 대규모 시스템의 트러블슈팅
CHAPTER 12 대규모 시스템에 배포된 앱의 동작 조사하기 255
APPENDIX A 이 책에서 사용한 도구 275
APPENDIX B 프로젝트 열기 277
APPENDIX C 기타 참고 도서 279
APPENDIX D 자바 스레드 이해 281
APPENDIX E 자바 메모리 관리 체계 299
목차만 봐도 JVM언어를 좋아하는 개발자에게 매우 매력적으로 보이는 책이다.
나는 아직 이 책중 1,2 장만 읽은 상태라 2장 "디버깅 기법으로 앱 로직 이해하기"를 기준으로 책의 리뷰를 작성하겠다.
3. 디버깅 기법으로 앱 로직 이해하기
책의 초반에 해당 파트에서 다룰 예기를 살짝 요약해 주는데, 이러한 부분 하나하나가 독자를 배려하는 작업이라 생각된다.
내 리뷰 대부분에서 언급하지만, 첫 페이지에 아주 짧은 소개파트를 난 높게 평가한다!
일종의 숲을 보고 들어가는 느낌이라! 이런 부분이 책에 신뢰감을 더 주는 것 같다!
또한 책에서 실행 부분을 보여줄 때 사용하는 IDE는 아마 한국 Java 개발자들에게 아주 친숙할(?) Intellij를 사용해 준다.
덕분에 책을 읽을 때 조금 더 거부감이 없었던 것 같다.
위 사진에서는 Stack Trace에 대한 설명과 이를 통해 얻을 수 있는 이점을 보여준다.
코드 상으로만 보면 A.call() --> B.call()을 부르는 것 같은데, 실상은 달라지는 코드를 예시로 들어주고 있다.
중간에 aspect()가 껴서 그런데, 이는 Spring의 AOP기술로 횡단관심사를 처리할 때 사용하는 기법이다.
이런 부분은 Stack Trace를 보지 않으면 중간에 값이 왜 바뀌었는지, 자기가 짠 코드여도 까먹는 경우가 있다고 한다.
위 사진은 그러한 예시를 보드로 보여주고 있다.
Main -> ProductCotroller.saveProduct() -> ProductService.saveProduct() 순으로 호출되는데, 코드를 그대로 따라 읽어도 내 예상과 다른 결과가 나왔다 ㅋㅋㅋㅋㅋㅋ
중간에 Proxy를 만들어 처리하는 부분을 알아차렸어야 하는 문제인데, 이를 Stack Trace를 통해 확인할 수 있었다!
또한 이 책은 다음과 같이 갈색 부분으로 어떤 문제에서 고민해 볼 만한 점을 언급해 주며!
항상 책 마지막에는 쳅터의 요약으로 마무리를 하고 있다! 전형적인 좋은 책의 태도를 갖고 있다고 생각한다!
4. 읽은 소감
우선 쳅터 1,2 까지만 읽은 상황에서 책이 주는 느낌부터 강렬하다. 저자가 JVM으로 오래 개발해 온 분이라는 것을 알아서 그런지 더욱 믿음이 가더라. (이 책의 저자는 예전에 읽었던 "스프링 시큐리티 인 액션"이라는 책의 저자이기도 하다!)
내용이 일단 매우 흥미로워서 계속 읽게 되는 것 같다. 중간중간 영화 장면에 비유하여 설명하는 부분들도 있는데, 한국에서도 유명했던 영화들, 가령 "인셉션"과 같은 영화 내용에 비유해 주는 점 또한 정말 좋다 생각한다.
또한 뒤로 갈수록, 더욱 흥미를 가질만한, Heap Dump, Thread Dump, 로깅에 관한 내용들이 나오며, 이는 Spring 개발자들에게 필수로 읽어볼 만한 부분이라 나는 생각한다. 연차가 많다면 몸소 경험해서 필요 없을 수 있지만, 나처럼 저 연차 일 수록, 이러한 가르침 하나하나가 중요하기에 조금 더 흥미를 갖고 읽을 수 있는 것 같다!
또한 내용을 설명할 때 스크린샷 부분이 많아 이해하기에도 수월하다!
다시 한번 이런 책을 만들어준 저자에게 감사함을 전하며, 많은 한국 개발자 분들도 이 책을 읽어보길 권장하고 싶다!!
'Life > Book Record' 카테고리의 다른 글
[서평] 그림으로 공부하는 IT 인프라 구조 (0) | 2024.04.24 |
---|---|
[서평] 백엔드 개발을 위한 핸즈온 장고 (0) | 2024.03.16 |
[서평] 아토믹 코틀린 (4) | 2023.07.26 |
[서평] 컴퓨터 구조 및 설계 (0) | 2023.06.22 |
[서평] 도메인 주도 개발 시작하기 : DDD 핵심 개념 정리부터 구현까지 (2) | 2023.01.20 |
댓글