전략 패턴을 활용한 유연한 결제 모듈 구현기
아키텍처
전략 패턴을 활용한 유연한 결제 모듈 구현기
두줄요약
전략 패턴으로 PG별 결제 연동을 분리해 결제 플로우를 단순화했습니다. 새 PG 추가 시 기존 코드를 거의 수정하지 않도록 확장성을 확보했습니다.
문제 상황
- 여러 PG 연동이 늘어날수록 결제 서비스 로직에 if-else 분기가 누적되는 구조
- PG별 인증 헤더, 응답 파싱, 통신 세부사항이 핵심 결제 흐름과 강하게 결합되는 문제
- 새로운 PG 추가 시 기존 결제 플로우까지 수정해야 하는 확장성 저하
해결 방법
- 공통
PgProxy인터페이스로 PG별 승인 로직을 추상화 @ConditionalOnProperty로 환경별 필요한 구현체만 스프링 빈으로 등록PgProxyFactory가 Map 기반으로 전략 객체를 라우팅해 결제 서비스는 승인 위임만 수행
적용해볼 점
- 결제 플로우와 외부 PG 연동 책임 분리
- 신규 PG 추가 시 기존 코드 수정 최소화
- 외부 통신부 분리로 테스트와 운영 설정 단순화
