
백엔드
7,000줄 PL/SQL 프로시저와의 결별: 클레임 로직 Java 모듈 이관기
두줄요약
7,000줄 PL/SQL 프로시저에 얽힌 교환·반품 로직을 Java 모듈로 점진 이관한 사례를 소개했습니다. Strangler Pattern과 Fallback, 모니터링 강화로 유지보수성과 확장성을 확보했습니다.
문제 상황
- 주문 완료, 취소, 교환, 반품, 옵션 변경이 7,000줄 PL/SQL 단일 프로시저에 뒤섞인 구조
- 비즈니스 로직 경계 붕괴로 작은 수정이 주문·교환까지 번지는 전사적 리스크
- 디버깅 어려움, 로그 부재, 인력 의존성, 우회 로직 누적으로 블랙박스화된 레거시
원인 분석
- 수년간의 패치와 신규 정책 누적로 분기 처리가 과도하게 증가
- 프로시저 내부에서 암묵적으로 처리되던 트랜잭션과 예외 흐름
- 변경 범위와 영향도 예측이 어려운 구조로 기술 부채 고착화
해결 방법
- Strangler Pattern으로 기존 프로시저를 유지하면서 Java 모듈로 점진 이관
- 주문·교환·반품·옵션 변경의 기능별 경계 재정의와 도메인 모델링
- Fallback, Shadow 트래픽, 단위·통합 테스트, 모니터링 강화로 안정성 확보
주의할 점
- PL/SQL의 성능 이점과 Java 전환 시 성능 저하 우려 고려
- 트랜잭션 처리 방식 재설계 필요
- 한 번에 옮기지 않고 작은 단위로 전환하며 실패 시 즉시 원복 가능한 구조 필요
