spring-architecture-quality.../docs/architecture/adr-payment-boundary.md

15 lines
1.8 KiB
Markdown

# Payment Boundary Architecture Decision Record
## Context
결제 시스템의 아키텍처를 정의하기 위해, 외부 결제 게이트웨이와의 통신, 도메인 로직 처리 및 데이터 관리 방식에 대한 명확한 경계를 설정하려고 합니다. 이를 통해 시스템의 유지 보수성과 확장성을 높이며, 다양한 결제 제공자의 통합을 용이하게 할 수 있도록 합니다.
## Decision
- 외부 결제 게이트웨이는 포트 인터페이스 뒤에 두고, 도메인에서 직접 어댑터를 참조하지 않습니다. 이를 통해 도메인은 결제 외부의 변화에 영향을 받지 않으며, 결제 관련 로직이 외부 환경에 의해 복잡해지지 않도록 유지합니다.
- 결제 도메인 모델은 결제 요청과 관련된 비즈니스 로직(예: 유효성 검사, 가격 검증 등)을 포함하여, 외부 시스템에 대한 의존성을 최소화합니다.
## Alternatives
- 모든 결제 로직을 직접적으로 도메인에서 처리하여 결제 서비스의 실시간 통합을 고려할 수 있지만, 이는 결제 제공자의 변경이나 추가 시 도메인 로직을 대대적으로 수정해야 할 수 있습니다.
- 완전히 새로운 서비스를 도입하여 결제 로직을 마이크로서비스로 분리할 수 있지만, 이는 시스템 복잡성을 증가시키고, 서비스 간의 통신 오버헤드가 발생합니다.
## Consequences
이 결정을 통해 시스템의 결제 부분이 더 강력하게 캡슐화되고, 외부 결제 서비스의 변경에 대한 내부 도메인 구조의 복잡성을 줄일 수 있습니다. 그러나 새로운 결제 시스템을 추가할 때 어댑터의 구현이 필요하고, 도메인과 어댑터 간의 명확한 계약이 필요하게 됩니다.