NAVER DEVIEW DAY 2에 참가하여 12시즈음부터 총 4개를 들었다.
그 중에 Scavenger가 제일 흥미로웠던 세션이었고 동시에 가장 많은 인원이 들어온 세션이었다.
시작 전 10분전부터 만석이었고 자리를 찾는 사람들이 많았는데, 이전 세션부터 계속 앉아 있었기 때문에 다행히 편하게 들을 수 있었다.
어떻게 죽은 코드를 발견해줄까?
라는 컨셉부터가 듣지 않아도 너무 흥미로웠다.
이제는 NAVER 사내에서만 사용되던 Scavenger를 세션 마지막에 Private에서 Public으로 전환해서 모두가 이용 가능하다.
GitHub - naver/scavenger: a runtime dead code analysis tool
a runtime dead code analysis tool. Contribute to naver/scavenger development by creating an account on GitHub.
github.com
실행 방법
Scavenger는 아래의 3개가 모두 작동이 되어야만 실행이 된다.
Agent - 자바 애플리케이션 동작 정보 수집
API - Agent가 수집한 데이터를 데이터베이스에 처리하고 저장해줌
Collector - 저장된 데이터를 수집해서 분석 도구에 전달하는 역할
일단은 Collector를 먼저 실행한 후 API 서버를 실행해야 한다. 만약 API 서버를 먼저 실행한 후 Collector를 실행한다면, API 서버는 Collector와 통신할 수 없기 때문에 정상적으로 동작하지 않는듯 하다.
기존에 만든 은행 서버 시스템에 Scavenger를 적용해보았다.
Collector 시작
java -Darmeria.port=9090 -Dspring.profiles.active=h2 -jar scavenger-collector-boot-1.0.3.jar
API 시작
java -Dscavenger.collector-server-url=http://localhost:9090 -Dspring.profiles.active=h2 -jar scavenger-api-boot-1.0.3.jar
Agent와 함께 어플리케이션 실행
java -javaagent:scavenger-agent-java-1.0.3.jar -jar banking-server.jar
실행화면
localhost:8081/scavenger 로 접속하면 아래 화면이 나온다.
워크스페이스 만들고 Conf 파일 만들기
아래에서 package만 설정해서 저장을 했다. 저장된 conf 파일로 앞으로 프로젝트를 실행하면 코드를 검사할 수 있다.
서버 재시작
java -Dscavenger.configuration=scavenger.conf -javaagent:scavenger-agent-java-1.0.3.jar -jar banking-server.jar
API 호출 후 스냅샷 생성
아래와 같이 실행된 서비스와 실행되지 않은 서비스를 확인하여 죽은 코드를 확인할 수 있다.
후기
죽은 코드를 발견해주는 것만으로도 엄청나게 흥미로웠지만 또 하나 흥미로웠던건 이 오픈소스를 만든 과정 또한 신기했다. "어떻게 클래스 파일을 뜯어볼 생각을 할 수 있지"라는 생각에 입을 다물지 못했다.
실행해보니 아직은 UI나 자잘한 버그가 존재하는 것 같지만 지속적으로 발전하게 될 것 같고 강의 또한 명확하고 쉽게 강연해서 듣는 내가 정말 신날 정도였다.
아무튼 정말 좋았다.
'🗂️ Etc' 카테고리의 다른 글
도메인 네임 구매에 대한 ChatGpt와의 대화 (0) | 2023.03.11 |
---|---|
[Java] 원본 값의 길이와 암호화 된 값의 길이가 같은 암호화 방식 (0) | 2023.03.08 |
ChatGPT로 공룡 그려 달라고 하기 (0) | 2023.01.10 |
안드로이드 웹뷰 카카오 공유하기 기능 멈춤 현상 (0) | 2023.01.08 |
웹 개발자를 위한 안드로이드 웹뷰 만들기 (2) | 2023.01.05 |