diff --git a/docs/architecture/adr-payment-boundary.md b/docs/architecture/adr-payment-boundary.md index 9db2f76..7e746b4 100644 --- a/docs/architecture/adr-payment-boundary.md +++ b/docs/architecture/adr-payment-boundary.md @@ -1,14 +1,14 @@ -# 결제 전환 목표 아키텍처 결정 기록 +# ADR: 결제 전환 경계 정의 ## Context -결제 시스템의 아키텍처를 정의하기 위해, 외부 결제 게이트웨이와의 상호작용을 고려해야 합니다. 이 시스템은 도메인 레이어에서 어댑터를 직접 참조하지 않고, 포트 인터페이스를 통해 외부 시스템과 통신합니다. +현재 시스템은 외부 결제 게이트웨이와의 통합이 필요하며, 이를 위해 아키텍처적으로 명확한 경계를 설정해야 합니다. 결제 프로세스는 여러 단계로 나눠져 있으며, 각 단계는 성공적인 거래와 실패 시의 처리를 명확히 해야 합니다. 특히 '정상 흐름'과 커밋 및 롤백 경계는 다루어져야 합니다. ## Decision -결제 도메인은 외부 결제 게이트웨이에 대한 의존성을 포트 인터페이스를 통해 관리하며, 이를 통해 결제 처리의 유연성과 테스트 용이성을 확보합니다. +외부 결제 게이트웨이는 포트 인터페이스를 통해 접근하고, 도메인 계층에서는 직접적으로 어댑터를 참조하지 않아야 합니다. 이를 통해 결제 프로세스의 각 단계를 잘 구분하고, 예외 처리를 체계적으로 설계합니다. ## Alternatives -1. **직접 의존성**: 도메인에서 외부 결제 게이트웨이를 직접 참조하는 방법. (단점: 결합도가 높아짐) -2. **포트 인터페이스 사용**: 도메인에서 포트 인터페이스를 통해 외부 결제 게이트웨이에 접근하는 방법. (장점: 결합도 감소) +1. **직접 어댑터 참조**: 도메인에서 외부 결제 게이트웨이에 직접 접근하는 방식. 이 방식은 구현이 간단하지만, 결제 시스템의 변경에 대한 유연성을 잃게 됩니다. +2. **에이전트 패턴 도입**: 에이전트를 통해 모든 결제 관련 요청을 처리하는 방식. 이는 복잡성을 추가하지만, 확장성과 유지보수에 유리합니다. ## Consequences -포트 인터페이스를 사용함으로써, 결제 시스템은 외부 결제 게이트웨이에 대한 의존성을 줄이고, 다양한 결제 제공자를 쉽게 통합할 수 있는 구조를 갖추게 됩니다. \ No newline at end of file +현재 선택한 방식은 외부 결제 프로세스를 도메인 비즈니스 로직과 분리시켜, 나중에 API 변경이나 서비스 교체 시 시스템 전반에 미치는 영향을 최소화합니다. 그러나 처음 설계 시 추가적인 추상화와 경계 설정이 필요합니다.