우리는 자바로 구성된 다양한 어플리케이션을 만들고, 개발을 합니다.
다른 개발자가 작성해 놓은 코드를 보기도 하고, 새롭게 작성을 하기도 합니다.
우선 기존에 구축되어 있는 코드를 잘 읽고, 이해하고 디버깅 해야 다른 수정사항을 반영하기 쉽습니다.
그런 관점에서 "자바 잘 읽는 법"이라는 책은 매우 관심이 있는 주제이고, 흥미롭게 다가옵니다.
■ 바로 중요한 부분부터 바로 설명하는 목차
· 주요 관심사에 대해서, 돌려 말하지 않고 독자에게 설명하고 싶은 목차 구성이 좋습니다.
평소에 시도해보지 않은 부분도 많이 언급되어 있어서 필요한거나 궁금한 사항을 바로 찾아서 내용을 살펴볼수 있고,
각 케이스 마다 어떻게 체크를 하고 검증을 하는지 설명되어 집니다.
단순하게 잘 된다고 설명하는 것보다, 기존 코드가 어떻게 동작되어 지면 정상인지 알려주는 방식으로 구성되어 있습니다.
책의 전제를 JVM언어를 사용하는 개발자라고 가정을 합니다.
그 이유는 이러합니다. 꼭 자바 개발자가 아니더라도 JVM을 사용하는 코틀린, 스칼라를 사용하는 개발자도 함께 이 책을 보면 도움이 되는 구성으로 되어 있다고 합니다. 꼭 책의 제목이 "자바 잘 읽는" 이라는 표현은 원서에도 그렇게 되어 있는지 모르겠네요.
· 책에서는 아래와 같은 주제를 논의합니다.
- 기본/고급 디버깅 기법
- 로그를 효과적으로 활용하여 앱 동작 파악하기
- CPU 및 메모리 리소스 소비량 프로파일링
- 프로파일링을 이용하여 실행 코드를 찾기
- 프로파일링으로 앱이 데이터를 저장하는 로직 이해
- 앱 간의 상호 통신 방식 분석
- 시스템 이벤트 모니터링
■ IDE 의 디버깅, 브레이크포인트를 좀더 잘 이해하고 사용하기
· 보통 IDE에서 디버깅을 많이 하는데, 일반적으로 step into, next등에 대해서 오류를 찾는 역활에 주요 목적이 있습니다.
하지만 그렇게 확인하는 패턴말고, 추가적으로 더 확인해볼수 있는 항목을 제시하고 있습니다.
- 프로파일러가 조금더 적합한 경우 및 활용 사례
- 여러 시나라오를 가정으로 접근하는 방법
- 조건부 브레이크포인트를 구성하는 방법
- 실행을 중단시키지 않고, 브레이크포인트를 사용하는 방법
- 변수값을 변경시켜서, 다음 실행에 대한 테스트 방법
■ 원격 앱 디버깅
이러한 부분이 가능한것을 책을 통해서 알고 있으면, 추후 필요시에 많은 유용한 정보가 될것 같습니다.
디비깅을 하는 앱은 java로 시작할때 -agentlib:jdwp2메개별수를 추가하여서, 디버거 에이전트를 통해서 연결시켜야 합니다.
우선 개발서버에서 해당 동작에 대해서 사전에 연동 테스트를 해보고 진행하는 방향이 우선 필요할것으로 보이고,
원격의 고객 앱에 대해서 문제사항을 확인할수 있는 방법은 다앙하게 도움이 됩니다.
■ 로그를 좀더 잘 보기
화면에 로그가 출력되어 있는데, 우리는 그 정보를 정확히 파악하지 못하고 놓지는 경우가 있습니다.
로그를 좀더 살 살펴보면, 오류에 해결책을 알수 있지만 그것을 흘려보내는 경우가 있습니다.
5장에서 로그에 대해서 살펴볼때 주의해서, 찍혀있는 로그를 좀 더 잘 활용할수 있는 방법이 하나하나 코드로 제시되어 있습니다.
로그가 부족하면 조금 더 잘 활용하기 위한 방법도 함께 있고, 이러한 부분는 바로 실무에서도 적용하기 좋은 것 같습니다.
■ 프로파일링 기법을 통한 고급 테크닉 활용하기
고급편에서는 프로파일링기법을 통해서 다양한 제시합니다.
· 프로파일을 통한 리소스 사용 문제 파악
· 프로파일을 통한 숨겨진 이슈 찾기
· 프로파일을 통한 데이터 고급 시각화 도구 적용하기
보통 프로파일 기법을 잘 사용하지 않고 있다면, 다양한 기법 소개를 하나하나 적용해서 필요한 부분에
쉽게 적용이 가능해 보입니다.
보통 프로파일링 도구를 사용하는 3가지 경우가 있는데
1. 비정상적인 리소스 사용량 식별
2. 코드의 어느 부분이 실행되는지 찾기
3. 앱 실행 속도가 저하되는 문제 파악
· VisualVM을 설치해서 구성을 시작합니다.
VisualVM: Home
News: April 24, 2024: VisualVM for VS Code Integration Extension Released The VisualVM for VS Code extension has been released. It integrates the VisualVM tool with Visual Studio Code. More information is available at http://visualvm.github.io/idesupport.h
visualvm.github.io
· 멀티스레드 아키텍처에서 스레드 락을 식별하는 방법도 내용구성으로 되어 있습니다.
스레드락을 분석하고, 대기중이 스레더드 잠긴 스레드등을 통해서 원인을 분석합니다.
· 스레드 덤프를 통해서 데드락을 확인해봅니다.
스레드 덤프는 fastThread을 통해서 분석을 진행합니다.
fastthread.io
Thread Dump Analysis REST API In this modern world, thread dumps are still analyzed in a tedious & manual mode. i.e., Operations engineer captures thread dumps from the production servers; then he transmits those files to developers. Developers use thread
fastthread.io
■ 대규모 시스템 구성
· JProfiler를 통해서 이벤트 시간 및 앱동작, 소켓 이벤트를 조사하고 확인가능합니다.
· 책에서 sentry를 통해서 java오류 등을 확인하는 기법이 소개됩니다.
책에 대해서 정말 다양한 접근법이 소개되어지고, 문제의 원인을 모르고 지나가는 경우가 있지만
실제 오류를 확인하고, 실제 수정하기 위해서 분석을 먼저 진행해야 하는데
이 책은 그러한 부분을 실천하고, 시행착오를 줄일수 있는 방법을 명확하게 제시하고 있어서
너무 큰 도움이 되는 책입니다.
'book' 카테고리의 다른 글
실전 SQL 퀵스타트 (0) | 2024.05.24 |
---|---|
더 나은 프로그래머 되는 법 (0) | 2024.05.23 |
그림으로 공부하는 IT 인프라 구조 (개정판) (0) | 2024.04.21 |
그림으로 배우는 스프링 6 입문 (0) | 2024.04.13 |
초자동화 시대가 온다 (0) | 2024.04.07 |