피드로 돌아가기
How I Used the JVM’s JDWP to Cut GlassFish Redeploys from 2 Minutes to 5 Seconds
Dev.toDev.to
DevOps

JDWP 기반 Hot-swap 구현으로 GlassFish 재배포 시간 2분에서 5초로 단축

How I Used the JVM’s JDWP to Cut GlassFish Redeploys from 2 Minutes to 5 Seconds

Omar Faruqe Riyad2026년 6월 2일14intermediate

Context

Jakarta EE 기반 GlassFish 환경에서 코드 수정 시마다 발생하는 전체 redeploy로 인해 평균 2분의 대기 시간 발생. CDI, EJB, JPA 등 복잡한 프레임워크의 재가동으로 인한 개발 피드백 루프 저하 및 생산성 손실이 심각한 상황.

Technical Solution

  • JVM 내장 Java Debug Wire Protocol(JDWP)를 활용하여 런타임 중 클래스 바이트코드 직접 교체 구조 설계
  • IDE 의존성을 제거하고 Bash 및 Java 기반의 CLI 브릿지를 구축하여 터미널 중심의 워크플로우 구현
  • JDWP의 Redefine Class 기능을 통해 애플리케이션 재시작이나 Classloader 재생성 없이 메서드 본문 수정 사항을 즉시 반영
  • 수정 범위에 따라 Hot-swap(코드 변경), UI Reload(정적 자원), Full Redeploy(구조 변경)로 구분한 계층적 동기화 전략 채택
  • 기존 JDK 표준 기능을 활용하여 커스텀 JVM 설치나 상용 솔루션 도입 비용 없이 범용적인 적용 가능성 확보

1. 단순 로직 수정 시 전체 재배포 대신 JVM의 Hot-swap 가능 범위(메서드 본문 수정 등)인지 먼저 확인

2. 특정 IDE에 종속된 생산성 도구보다 CLI 기반의 자동화 툴을 구축하여 CI/CD 및 AI 에이전트와의 통합 가능성 검토

3. JDWP 포트 개방을 통한 런타임 바이트코드 조작 시 보안 정책 및 환경 제약 사항 사전 체크

원문 읽기