결제 전환 목표 아키텍처 정의 #2

Open
forge-bot wants to merge 6 commits from forge/SPRING-ARC-REFERENCE-1783832425-attempt-2 into main
Showing only changes of commit 302ad66944 - Show all commits

View file

@ -1,16 +1,14 @@
# 결제 전환 경계 결정 문서
# 결제 경계 결정 문서
## Context
본 문서는 결제 교환 시스템의 아키텍처 경계를 정의하며, 청구 및 결제 관련 비즈니스 로직을 처리하는 동작과 외부 결제 게이트웨이와의 통신 방법을 분리합니다. 이 아키텍처는 도메인 중심 설계 원칙에 따라 작성됩니다.
이 문서는 결제 처리 시스템의 아키텍처에 대한 결정을 기록하고 있습니다. 이 시스템의 주요 목표는 외부 결제 게이트웨이를 사용하여 안정적이고 확장 가능한 결제 처리 메커니즘을 제공하는 것입니다. 이 아키텍처는 도메인 로직과 외부 시스템 간의 경계를 명확히 혼선할 수 있는 방법을 정의합니다.
## Decision
결제 서비스는 외부 결제 게이트웨이와의 직접적인 의존성을 피하고, 포트 인터페이스를 통해 통신이 이루어지도록 설계합니다. 이를 통해 결제 도메인은 외부 의존성 변화에 영향을 적게 받도록 합니다.
결제 처리는 포트 인터페이스를 통해 외부 결제 게이트웨이에 접근합니다. 도메인 모델은 외부 시스템에 대한 직접 참조를 피하고, 대신 어댑터 패턴을 사용하여 결제 게이트웨이와 연결됩니다. 이로 인해 결제 시스템이 외부 변경으로부터 독립성이 보장됩니다.
## Alternatives
1. 결제 도메인이 외부 결제 게이트웨이를 직접 사용하는 방법
- 이 방식은 구현이 간단하지만, 외부 의존성에 강하게 결합됩니다.
2. 세션 기반의 결제 전환 만 관리
- 고객의 세션 상태를 기반으로 결제의 모든 변화를 관리하지만, 관리가 복잡해질 수 있습니다.
1. **직접 통합**: 외부 결제 게이트웨이를 도메인 레이어에 바로 통합하는 방법. 이는 초기 개발 속도는 빠를 수 있으나, 장기적으로는 결제 시스템의 확장성 및 유지 보수성을 저하시킬 수 있습니다.
2. **서비스 레이어 사용**: 결제 게이트웨이를 서비스 레이어를 통해 처리하는 방법. 이는 도메인과 서비스 간의 책임 분리를 강화할 수 있으나, 레이어가 증가하게 되어 복잡성을 초래할 수 있습니다.
## Consequences
선택된 아키텍처는 각 모듈이 독립적으로 동작하도록 하여 테스트 용이성과 소프트웨어의 변경에 대한 저항력을 증가시킵니다. 그러나 아키텍처가 복잡해질 수 있으며, 하위 시스템과의 상호작용이 명확히 정의되어야 합니다.
결제 시스템이 외부 게이트웨이에 의존하지만, 포트 인터페이스를 통해 접근함으로써 시스템의 유연성과 테스트 용이성이 향상됩니다. 이는 새로운 결제 게이트웨이를 쉽게 통합할 수 있는 기능을 제공합니다.