Java 디컴파일러로 운영 서버와 형상관리 소스의 불일치를 해소하다
두줄요약
운영 클래스와 형상 소스 불일치를 디컴파일·AI 분류·재컴파일 검증으로 복구했습니다.\nANT를 Gradle로 전환하고 직접 수정 통제로 재발 경로를 차단했습니다.
문제 상황
- ANT 증분 배포 누락과 SFTP 직접 수정으로 운영 클래스와 형상관리 소스의 장기적 불일치
- 운영 서버에는 최신 .class 파일만 남고 대응 Java 소스가 유실된 레거시 백오피스 환경
원인 분석
- 운영 직접 수정 뒤 형상관리로 되돌리는 책임·강제 절차의 부재
- 디컴파일러별 코드 재구성과 추론 차이로 단순 소스 덮어쓰기의 높은 유지보수 위험
해결 방법
- 운영 클래스와 형상 소스 재컴파일 클래스를 동일 디컴파일러로 변환 후 diff 비교
- AI 위험도 분류를 참고해 로직 차이만 선택 반영하고, JAD·CFR·Fernflower 교차 검증
- 재컴파일 클래스의 해시·바이트코드 비교로 동등성 확인
성능/운영 포인트
- AI는 diff와 상·중·하 위험도 분류, 엔지니어는 반영 판단과 최종 검증 담당
- ANT를 Gradle로 전환하고 운영 직접 수정 제한 및 CI/CD 정식 배포 강제
- 직렬화 UID, 리플렉션 메타데이터, 람다·익명 클래스 영역의 별도 점검

