#Backend

[의존성의 방향을 따라 3/5] OpenRewrite와 Claude가 코드를 변환한다

[의존성의 방향을 따라 3/5] OpenRewrite와 Claude가 코드를 변환한다
01

Summary

AI와 AST의 만남, 50개 레포지토리 마이그레이션을 자동화하는 'Updater'의 비밀

OpenRewrite의 정확성과 Claude의 유연함을 결합하여 수동 코딩 없이 시스템 전체의 기술 부채를 해결하는 방법

본 아티클은 수많은 레포지토리의 의존성을 동시에 업데이트하기 위한 'Updater' 모듈의 핵심 기술을 소개합니다. 결정론적인 코드 변환 도구인 OpenRewrite와 컨텍스트 기반 수정이 가능한 Claude AI를 조합하여, 단순 API 변경부터 복잡한 비즈니스 로직 수정까지 자동화한 실무 사례를 다룹니다.

  • 01정규표현식의 한계를 넘어서는 AST(Abstract Tree Structure) 기반의 정밀한 코드 변환
  • 02대상 레포지토리의 코드 수정 없이 변환을 실행하는 Gradle Init Script 주입 전략
  • 03공식 Recipe와 조직 내 커스텀 규칙을 조합한 재사용 가능한 마이그레이션 아키텍처
  • 04규칙으로 정의하기 힘든 비즈니스 판단 영역에서 Claude AI를 활용한 에러 분석 및 수정
  • 05AI의 제안을 빌드 가드레일로 검증하여 안정성을 보장하는 자동화 루프 구현

RECOMMENDATION

대규모 마이크로서비스를 운영하며 반복적인 프레임워크 업그레이드에 피로를 느끼는 플랫폼 팀에게 강력히 추천합니다. 단순 자동화를 넘어 AI를 가드레일 안에서 안전하게 활용하는 실무 패턴을 학습할 수 있습니다.

The Problem

대규모 마이크로서비스 환경에서 수십 개의 레포지토리에 걸쳐 프레임워크나 라이브러리 버전을 업데이트할 때, 단순 텍스트 치환 방식은 오작동 위험이 크고 수동 작업은 속도가 매우 느립니다. 특히 비즈니스 맥락이 포함된 코드 수정이나 빌드 에러 해결은 규칙 기반 도구만으로 처리하기 어려운 한계가 있습니다.

The Solution

정적 코드 변환 엔진인 OpenRewrite를 통해 결정론적인 AST 기반 변환을 수행하고, 규칙으로 해결되지 않는 예외 상황이나 빌드 에러 수정은 Claude AI가 담당하는 이원화 구조를 도입했습니다. 각 레포지토리의 수정 없이 외부에서 Gradle Init Script를 주입하여 변환 규칙(Recipe)을 실행하고, 빌드 가드레일을 통해 AI의 수정안을 검증하는 루프를 구성했습니다.

The Result

파이오니어의 마이그레이션 경험을 실행 가능한 Recipe로 인코딩하여 50여 개 레포지토리에 동일한 품질로 자동 전파할 수 있게 되었습니다. AI를 활용해 단순 반복 작업뿐 아니라 판단이 필요한 영역까지 자동화 범위를 확장했으며, 빌드 시스템의 검증을 통해 코드 변환의 안정성을 확보했습니다.

Trade-off

AI가 생성한 수정안은 항상 빌드 가드레일 내에서 검증되어야 하므로 CI 비용과 시간이 증가할 수 있으며, 도메인 맥락이 복잡한 경우 AI가 잘못된 비즈니스 판단을 내릴 가능성이 존재하므로 최종적인 테스트 커버리지가 매우 중요합니다.

03

Key Concepts

Concept · 01

OpenRewrite

소스 코드를 추상 구문 트리(AST)로 변환하여 구조적으로 분석하고 수정하는 오픈소스 리팩토링 엔진입니다.

  • 텍스트 치환 방식의 부작용 없이 특정 메서드 시그니처나 타입만 정확히 식별하여 변환함
  • YAML 기반의 선언적 Recipe와 Java/Kotlin 기반의 프로그래밍 Recipe를 모두 지원함
Concept · 02

Recipe

OpenRewrite에서 코드 변환 규칙을 정의한 최소 단위이자 실행 가능한 문서입니다.

  • 여러 개의 작은 Recipe를 조합하여 복잡한 Spring Boot 버전업과 같은 큰 작업을 구성함
  • 멱등성(Idempotency)을 보장하여 여러 번 실행해도 동일하고 안전한 결과를 유지함
Concept · 03

Build Guardrail

자동화된 코드 변경이 시스템의 안정성을 해치지 않도록 빌드 및 테스트 단계에서 검증하는 보호 장치입니다.

  • Claude AI가 제안한 수정안이 문법적으로 옳고 비즈니스 로직을 깨뜨리지 않는지 자동으로 검증함
  • 컴파일 에러 발생 시 로그를 AI에게 피드백하여 다시 수정안을 도출하게 하는 루프의 핵심 기반임