loose
이로운 개발하기
loose
전체 방문자
오늘
어제
  • 전체 (204)
    • ☕ Java (24)
    • 📘 Effective Java (9)
    • 🍃 Spring (48)
    • 📖 ORM (9)
    • ☸️ Kubernetes (13)
    • 🐧 Linux (5)
    • 🐋 Docker (5)
    • 🛠️ CI & CD (7)
    • 🕸️ Web (6)
    • 🔗 Distributed System (3)
    • 📜 Js (10)
    • 📈 Database (11)
    • 🗂️ Etc (34)
    • 🧑 Chitchat (10)
    • 📒 문학 (10)
    • 👜 개인 공부 창고 (0)

공지사항

반응형

최근 글

최근 댓글

loose
🗂️ Etc

NAVER DEVIEW DAY 2 - 런타임 데드 코드 분석 도구 Scavenger

NAVER DEVIEW DAY 2 - 런타임 데드 코드 분석 도구 Scavenger
🗂️ Etc

NAVER DEVIEW DAY 2 - 런타임 데드 코드 분석 도구 Scavenger

2023. 3. 3. 18:27
반응형

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나 자잘한 버그가 존재하는 것 같지만 지속적으로 발전하게 될 것 같고 강의 또한 명확하고 쉽게 강연해서 듣는 내가 정말 신날 정도였다.

 

아무튼 정말 좋았다.

728x90

'🗂️ Etc' 카테고리의 다른 글

도메인 네임 구매에 대한 ChatGpt와의 대화  (0) 2023.03.11
[Java] 원본 값의 길이와 암호화 된 값의 길이가 같은 암호화 방식  (0) 2023.03.08
ChatGPT로 공룡 그려 달라고 하기  (0) 2023.01.10
안드로이드 웹뷰 카카오 공유하기 기능 멈춤 현상  (0) 2023.01.08
웹 개발자를 위한 안드로이드 웹뷰 만들기  (3) 2023.01.05
  • 어떻게 죽은 코드를 발견해줄까?
  • 실행 방법
  • Collector 시작
  • API 시작
  • Agent와 함께 어플리케이션 실행
  • 실행화면
  • 워크스페이스 만들고 Conf 파일 만들기
  • 서버 재시작
  • API 호출 후 스냅샷 생성
  • 후기
'🗂️ Etc' 카테고리의 다른 글
  • 도메인 네임 구매에 대한 ChatGpt와의 대화
  • [Java] 원본 값의 길이와 암호화 된 값의 길이가 같은 암호화 방식
  • ChatGPT로 공룡 그려 달라고 하기
  • 안드로이드 웹뷰 카카오 공유하기 기능 멈춤 현상
loose
loose
불만하는 사람은 90명, 해결하는 사람은 9명, 리드하는 사람은 1명
음악과 낭만을 좋아합니다.
hELLO. 티스토리 스킨을 소개합니다.
제일 위로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.