아키텍처
배송최적화 시스템 구축기 Part 02. 복잡한 비즈니스 로직에 유연한 디자인 패턴 입히기
두줄요약
복잡한 배송 센터 결정 로직을 전략 패턴과 컴포지트로 분리해 확장성과 유지보수성을 높였습니다. DB 기반 룰 On/Off와 실행 순서 제어로 배포 없이 정책 변경과 성능 최적화도 가능하게 했습니다.
문제 상황
- 배송 센터 결정 로직이 권역, 배송 타입, 택배사, 재고, CAPA 등 복합 조건으로 얽혀 if-else 중첩과 테스트 경우의 수 증가 문제 발생
- 새로운 배송 규칙이나 정책 변경이 자주 생길 수 있어, 기존 코드 수정이 잦은 구조로는 유지보수와 확장성 확보가 어려운 상황
원인 분석
- 단일 분기 로직으로는 여러 조건을 독립적으로 다루기 어렵고, 조건 추가 시 사이드 이펙트 범위가 커짐
- 후보군 추리기와 최종 결정하기가 하나의 책임으로 섞여 있어 로직 분리가 필요함
해결 방법
- 선택 전략과 결정 전략을 분리하고, 여러 Selection 전략을 Composite로 조합해 하나의 흐름으로 실행
- 전략 활성화 여부를 DB로 제어해 코드 수정 없이 룰 On/Off 가능하도록 구성
- 전략 실행 순서를 조정하고 조기 종료 상태를 두어 비싼 외부 API 호출을 뒤로 미루고 불필요한 연산 절감
