빠에야는 개발중

자바 성능 튜닝 이야기 본문

책 리뷰

자바 성능 튜닝 이야기

빠에야좋아 2019. 3. 19. 23:34

내가 해본 걸 너에게 알려줄게

이 책은 이렇게 말하는 것 같다. “너 자바 배웠어? 잘알아? 써봤어? 그럼 이건 어때?”. 저자가 개발자로서 경험한 것들 중 도구로서의 사용법을 알려주는 듯 했다. 시중에는 자바의 문법이나 철학을 말하는 책이 많이 있지만 내가 원했던 건 그걸 실제 서비스에서 사용해보면서 부딪혔던 문제와 그 해결법을 자세하게 알려주는, 어찌보면 사소할 수 있고 어찌보면 가장 중요한 것일 수 있는 주제였다. 이 책은 그런 점에서 내 이목을 끌었고 다른 책들을 제쳐두고 내 책장에서 선택받았다. 지금도 자바를 사용하고 있고 하나의 프로젝트를 끝마쳐가는 즈음의 나에게 지금까지 해온 것들을 돌이켜보고 더 좋은 방법, 놓치고 있었던 포인트를 집어줄 수 있지 않을까 하는 호기심도 이 책을 읽게 되는데 한 몫 했다.

내가 하는거랑 비슷한데?

내가 자바로 개발을 시작하고부터 지금까지 몇개의 프로젝트를 진행해오면서 항상 내 속에 잠재되어있던 생각은 “내가 잘 하고 있는걸까?” 였다. 좋은 프로그래밍을 말하는 사람들은 디자인 패턴, 알고리즘, 자료구조 등을 말했고 나도 그 중요성을 알고 있다. 하지만 그런 원론적인, low level의 지식도 중요하지만 내가 개발하고 있는 방법, 도구에 대해서도 좀 더 갈고닦을 필요가 있다고 생각했다. 성능 튜닝이라는 단어가 그래서 더욱 끌렸다. 더 좋은 성능을 내기 위해서 무엇을 시행하는지, 어떤 도구를 사용하는지 관심이 있었고 더 나아진다는 기준이 무엇인지, 얼마만큼 나아지는 것이 잘 한것인지 궁금했다.

전체적으로 봤을 때의 내 감상은 “지금과 별반 다를 바 없다” 였다. 그렇다고 이 책에 있는 모든 내용을 내가 모두 해봤다는 것은 아니고, 내가 전혀 몰랐던 완전히 새로운 것이 나오지는 않았다는 것이다. String이 불변 객체이므로 StringBuilder나 StringBuffer를 사용하자던지, 서버를 세팅할 때 스레드 풀이나 db 커넥션 풀의 개수에 유의하자던지 하는 내용들은 지금까지 개발하면서 어느 정도 보고 들은 지식들이었다. 이것들이 어찌보면 당연한 것이라고 생각했기 때문에 그렇게 중요하고 critical한 내용들인지 하는 것들을 생각하지 않고 있었는데, 이 책을 읽으면서 내가 하던 것들을 좀 더 대단하다고 여겨도 되나? 라는 생각을 하게 되긴 했다.

너 그래도 이건 안 해봤잖아

최근 스케줄링 작업 방식을 비동기&콜백 방식으로 변경하는 작업을 하고 있는데, 쓰레드 풀을 만들어서 돌려보는 작업을 처음으로 해보았다. 그 과정에서 jvisualvm이라는 jdk 내장 툴을 사용해보게 되었는데, 실시간으로 jvm을 모니터링 할 수 있어서 좋았다. 하지만 완전 순정 상태에서 보여주는 화면만 본게 전부였는데, 이 책에서는 확장 기능까지 소개해주는 챕터가 있었다. 또 jstat이나 verbosegc같은 툴에 대해서도 알려주고, 코어 덤프에 대해서도 소개해줬다. 이런 것들은 내가 접한지 얼마 안됐거나 사용해보지 않아 몰랐던 도구들이었기에 도움이 되었다. 특히 JMH라는 벤치마크 하네스는 성능을 체크할 때 유용하게 쓰일 수 있을 것 같아 인상적이었다. 또 지금은 사용하고 있지 않지만 안드로이드나 jsp 같은 프론트엔드 쪽 개발 유의사항도 언급을 해주었기에 새로운 이야기를 들을 수 있어 좋았다.

리마인드, 그리고 자신감

이 책을 통해 지금까지 내가 해온 것들이 영 틀린 것들은 아니었고, 더 잘하기 위해서는 어떤 것들을 더 알면 되는지 얼추 알 수 있었다. 그리고 새로운 도구들을 알게 되어 앞으로 개발할 때 써먹어봐야겠다는 호기심과 기대를 갖게 되었다. 나중에 개발하다가 전체적인 프로세스를 훑게 될 때 이 책을 참고해보면 좋을 듯 하다.

'책 리뷰' 카테고리의 다른 글

테스트 주도 개발  (0) 2019.07.02
실용주의 프로그래머 & 실용주의 디버깅  (0) 2019.02.27
클린코드 리뷰  (0) 2018.01.16
Comments