
ScarfBench: 엔터프라이즈 Java 프레임워크 마이그레이션을 위한 AI 에이전트 벤치마킹
요약
엔터프라이즈 Java 프레임워크 마이그레이션 능력을 평가하기 위한 새로운 오픈 벤치마크인 ScarfBench를 소개합니다. 단순 코드 생성을 넘어 빌드, 배포, 동작 보존 여부를 종합적으로 검증하여 AI 에이전트의 실제 현대화 역량을 측정합니다.
핵심 포인트
- ScarfBench는 Spring, Jakarta EE, Quarkus 간 마이그레이션에 집중함
- 단순 코드 번역이 아닌 빌드 및 배포 성공 여부를 핵심 지표로 활용
- 기존 벤치마크와 달리 애플리케이션의 동작 보존(behavioral validation)을 평가
- 최신 코딩 에이전트들이 프레임워크 마이그레이션에서 겪는 한계를 분석
최근 코딩 에이전트(coding agents)의 발전은 AI 지원 현대화(modernization)에 대한 기대감을 불러일으켰습니다. 하지만 중요한 질문이 남아 있습니다.
AI 에이전트가 실제 엔터프라이즈 애플리케이션을 안정적으로 현대화할 수 있을까요?
기존의 소프트웨어 엔지니어링 벤치마크들은 버그 수정(bug fixing)과 코드 생성(code generation) 분야에서 인상적인 진전을 보여주었지만, 프레임워크 마이그레이션(framework migration)은 근본적으로 다른 도전 과제를 제시합니다. 성공을 위해서는 단순히 코드를 번역하는 것뿐만 아니라, 동작(behavior)을 보존하고, 빌드 시스템(build systems)을 적응시키며, 런타임 의존성(runtime dependencies)을 탐색하는 능력이 필요합니다.
이러한 격차를 해소하기 위해, 우리는 엔터프라이즈 Java의 프레임워크 간 마이그레이션 작업에서 AI 에이전트를 평가하기 위한 오픈 벤치마크인 **ScarfBench (Self-Contained Application Refactoring Benchmark)**를 소개합니다.
ScarfBench는 다음 세 가지 주요 Java 생태계 간의 마이그레이션에 집중합니다:
- Spring
- Jakarta EE
- Quarkus
생성된 코드를 참조 구현(reference implementations)과 비교하는 전통적인 벤치마크와 달리, ScarfBench는 마이그레이션된 애플리케이션이 실제로 빌드, 배포(deploy)되고 동작을 보존하는지를 평가합니다.
프레임워크 마이그레이션은 단순히 어노테이션(annotations)을 교체하는 것 그 이상입니다.
단순한 리포지토리(repository) 마이그레이션이라 할지라도 의존성 주입(dependency injection), 영속성 설정(persistence configuration), 쿼리(queries), 그리고 프레임워크 디스크립터(framework descriptors) 전반에 걸친 변경이 필요할 수 있습니다. 이러한 요소 중 어느 하나라도 작은 실수가 발생하면 성공적인 배포를 방해할 수 있습니다.
Figure: Spring → Jakarta 마이그레이션 예시
프레임워크 마이그레이션은 소스 코드뿐만 아니라 프레임워크 시맨틱(semantics)을 번역하는 것을 요구합니다.
ScarfBench는 엔터프라이즈 Java 프레임워크 마이그레이션 작업에서 AI 에이전트를 평가하는 체계적인 방법을 제공합니다.
애플리케이션은 다음 조건을 충족해야 합니다:
- 성공적으로 빌드될 것.
- 올바르게 배포될 것.
- 동작 검증(behavioral validation)을 통과할 것.
이는 현대화 품질에 대해 훨씬 더 현실적인 측정 지표를 제공합니다.
벤치마크 개요
ScarfBench는 집중적인 마이그레이션 작업과 전체 애플리케이션 마이그레이션을 모두 포함합니다.
Figure: ScarfBench 구축 파이프라인 (Construction Pipeline)
JSR(Java Specification Request) 기반의 엔터프라이즈 Java 분류 체계(Taxonomy)에서 시작하여, 전문가의 마이그레이션을 통해 Spring, Jakarta EE, Quarkus 전반에 걸쳐 검증된 구현체들을 생성합니다.
우리는 ScarfBench를 통해 여러 최첨단 코딩 에이전트(Coding Agents)를 평가했습니다.
전통적인 소프트웨어 엔지니어링 벤치마크에서는 강력한 성능을 보였음에도 불구하고, 프레임워크 마이그레이션은 여전히 어려운 과제로 남아 있습니다. 성공률은 프레임워크 쌍(Framework Pairs)에 따라 상당히 차이가 나며, 애플리케이션 전체 마이그레이션은 특히 까다로운 것으로 나타났습니다.
Figure: 현재 리더보드 (Current Leaderboard)
Figure: 컴파일(Compile) → 배포(Deploy) → 테스트(Test) 진행 과정
컴파일 성공률은 배포 성공률보다 일관되게 높으며, 배포 성공률은 다시 동작(Behavioral) 성공률보다 높습니다. 빌드(Build) 성공률만으로는 마이그레이션 품질을 크게 과대평가하게 됩니다.
Figure: 대상 프레임워크별 마이그레이션 결과 (Migration Outcomes by Target Framework)
마이그레이션 난이도는 대상 프레임워크에 따라 크게 달라지며, 특히 Jakarta EE가 매우 어려운 것으로 증명되었습니다.
ScarfBench는 단순히 성공률을 측정하는 것을 넘어, 현대화(Modernization) 과정에서 에이전트가 어떻게 행동하는지 이해하도록 돕습니다.
마이그레이션된 애플리케이션은 실제로 빌드되고 실행될 때만 유용합니다.
따라서 우리는 에이전트가 보고한 결과와 독립적인 빌드 검증(Build Verification)을 비교했습니다.
Claude Code는 30개의 전체 애플리케이션 중 29개에 대해 빌드 성공을 보고했습니다.
하지만 그중 실제로 빌드에 성공한 애플리케이션은 22개뿐이었습니다.
한편, 에이전트에 의해 실패로 분류된 단 하나의 애플리케이션은 최종적으로 올바르게 빌드되었습니다.
이는 에이전트의 자기 평가(Self-assessment)를 마이그레이션 완료의 신뢰할 수 있는 신호로 취급해서는 안 된다는 점을 시사합니다.
독립적인 빌드 및 테스트 검증은 여전히 필수적입니다.
프레임워크 마이그레이션은 단일 파일이나 레이어(Layer)에만 영향을 미치는 경우가 드뭅니다.
설정(Configuration), 서비스(Services), 데이터베이스(Databases), 웹 컴포넌트(Web Components)의 변경 사항은 종종 애플리케이션 전체에 연쇄적으로 영향을 미칩니다.
가장 빈번하게 방문된 레이어는 다음과 같습니다:
- 설정 (Configuration)
- 웹 (Web)
- 데이터베이스 (Database)
- 서비스 (Service)
일반적인 전환(Transitions)은 다음과 같았습니다:
- 설정 ↔ 웹 (Configuration ↔ Web)
- 서비스 ↔ 데이터베이스 (Service ↔ Database)
이는 마이그레이션이 단순한 소스 대 소스 변환(Source-to-source transformation)이라기보다, 반복적인 의존성 해결(Dependency-resolution) 프로세스임을 시사합니다.
우리는 마이그레이션 노력 (migration effort)의 대리 지표 (proxy)로 레이어 재방문 빈도 (layer revisit frequency)를 사용했습니다. 반복적인 방문이 필요했던 레이어들은 일반적으로 디버깅 (debugging), 의존성 해결 (dependency resolution), 또는 프레임워크 적응 (framework adaptation)을 포함했습니다.
에이전트들은 선형적으로 진행하기보다, 프레임워크 차이점과 의존성 문제를 해결하는 과정에서 설정 관련 아티팩트 (configuration-related artifacts)로 반복해서 되돌아왔습니다.
모든 마이그레이션 문제가 소스 코드에서 발생하는 것은 아닙니다.
에이전트들은 다음과 같은 환경적 문제들로 인해 자주 어려움을 겪었습니다:
- Docker 캐시 불일치 (Docker cache inconsistencies)
- 포트 연결 문제 (Port connectivity problems)
- Maven wrapper 및 빌드 도구 문제 (Maven wrapper and build tooling issues)
이러한 운영상의 우려 사항들은 소스 코드 마이그레이션 자체는 대부분 완료되었음에도 불구하고 검증 (validation)을 지연시키는 경우가 많았습니다.
그림: 실패 모드 분포 (Failure Mode Distribution)
현대화 (modernization) 실패는 빌드 시스템 (build systems), 배포 환경 (deployment environments), 의존성 주입 (dependency injection), 데이터베이스 (databases), 엔드포인트 (endpoints), 어설션 (assertions), 그리고 인프라 (infrastructure)에 걸쳐 나타납니다.
프레임워크 현대화의 가장 큰 과제는 Java 코드를 번역하는 것이 아닙니다.
그것은 설정 (configuration), 인프라 (infrastructure), 그리고 런타임 환경 (runtime environments) 전반에 걸친 의존성의 망 (web of dependencies)을 관리하는 것입니다.
최첨단 에이전트 (frontier agents)들이 마이그레이션 프로세스의 상당 부분을 자동화할 수 있지만, 성공적인 결과를 달성하기 위해서는 신뢰할 수 있는 검증 (validation)과 아키텍처 추론 (architectural reasoning)이 여전히 중요합니다.
ScarfBench는 이러한 과제들을 드러내는 데 도움을 주며, 진정으로 자율적인 애플리케이션 현대화 (application modernization)를 향한 진척도를 측정하는 표준화된 방법을 제공합니다.
ScarfBench는 연구자와 실무자를 위한 오픈 리소스 (open resource)로 설계되었습니다.
리소스에는 다음이 포함됩니다:
- 벤치마크 데이터셋 (Benchmark dataset)
- 평가 인프라 (Evaluation infrastructure)
- 공개 리더보드 (Public leaderboard)
- 문서 (Documentation)
- 오픈 소스 코드 (Open-source code)
연구자들은 에이전트 아키텍처와 기술을 비교할 수 있습니다. 실무자들은 ScarfBench를 사용하여 현대화 솔루션을 프로덕션 환경 (production environments)에 배포하기 전에 평가할 수 있습니다.
프레임워크 마이그레이션은 AI 지원 소프트웨어 공학 (AI-assisted software engineering) 분야에서 여전히 가장 큰 미해결 과제 중 하나로 남아 있습니다. 우리는 ScarfBench가 커뮤니티의 진척도를 측정하고 차세대 AI 지원 애플리케이션 현대화를 가속화하는 데 도움이 되기를 바랍니다.
우리는 연구자, 실무자, 그리고 프레임워크 커뮤니티가 자신들의 에이전트 (agents)를 평가하고, 새로운 마이그레이션 시나리오를 기여하며, 최첨단 기술 (state of the art)의 발전을 도울 것을 권장합니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 HuggingFace Blog의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기