Cursor와 GitLab으로 Java 현대화하기
Cursor AI 코딩 에이전트와 GitLab MCP 서버를 연동해 Java 8 레거시 애플리케이션을 Java 21로 단계적으로 마이그레이션하는 방법을 다룬다. 코드 수정 범위를 단계별로 좁히면서 테스트 실패 수정 → CI/CD 품질 게이트 구축 → 컴포넌트 현대화 순서로 진행해 에이전트 속도와 안전성을 동시에 확보한다.
피크 타임에 Redis CPU 사용률이 100%를 유지하면서 응답 시간이 평소의 3~5배까지 증가하는 장애를 겪었다. 원인을 추적한 결과 Spring Data Redis의 @RedisHash 기반 Repository 패턴이 복잡한 중첩 객체(1,600~2,000개 필드)를 저장할 때 HMSET·SADD·인덱스 연산을 다중 실행하는 구조적 특성이 문제였다. RedisTemplate으로 전환해 JSON 직렬화 단일 SET 명령으로 바꾸자 저장 속도가 2.45배 빨라지고 CPU가 100%에서 10%로 급락했다.
Cursor AI 코딩 에이전트와 GitLab MCP 서버를 연동해 Java 8 레거시 애플리케이션을 Java 21로 단계적으로 마이그레이션하는 방법을 다룬다. 코드 수정 범위를 단계별로 좁히면서 테스트 실패 수정 → CI/CD 품질 게이트 구축 → 컴포넌트 현대화 순서로 진행해 에이전트 속도와 안전성을 동시에 확보한다.
여기어때 전시개발팀이 숙소 상세(PDP) API를 해부한 결과, 코드상으로는 DB 호출 3번처럼 보이던 요청이 실제로는 MongoDB $lookup 체인으로 컬렉션을 19회 접근하는 구조였다. 이 트랜잭션 스크립트 방식의 핵심 문제는 "aggregation이 I/O를 가린다"는 점으로, 독립적인 쿼리 10개가 단일 파이프라인에 직렬화되어 병렬화 기회를 잃고, 가격 때문에 거의 안 바뀌는 이미지까지 매 요청마다 읽어야 하는 읽기 증폭이 발생했다. V3에서는 "조회 시점 조립"을 "쓰기 시점 사전 조립"으로 전환하고, 화면별로 복제되던 가격 계산 로직을 goodsprice 단일 모듈로 수렴했다. 4개 API(PLP/PDP/RDP/ILP)의 반복 마이그레이션은 Claude Code skill로 절차를 고정하고 쉐도잉 + 동일성 검증으로 안전망을 마련하는 방식으로 진행됐다.
Vercel의 Chat SDK가 X(Twitter) 어댑터를 추가해 Slack, Discord, GitHub, Teams 등과 함께 단일 코드베이스에서 여러 플랫폼을 지원하게 됐다. X API v2와 X Activity API를 기반으로 공개 멘션 응답과 DM 대화 봇을 구축할 수 있다.