diff --git a/docs/architecture/adr-payment-boundary.md b/docs/architecture/adr-payment-boundary.md new file mode 100644 index 0000000..45b8bd8 --- /dev/null +++ b/docs/architecture/adr-payment-boundary.md @@ -0,0 +1,24 @@ +# Context + +이 아키텍처 결정은 결제 시스템의 경계를 정의하고 각 구성 요소 간의 책임을 명확히 하기 위해 작성되었습니다. 이 시스템은 상품 구매, 결제 처리, 및 주문 관리와 관련된 다양한 기능을 구현하고 있으며, 신뢰성과 보안이 중요한 요소입니다. + +# Decision + +결제 시스템의 경계는 다음과 같이 정의됩니다: +1. **Payment Gateway**: 외부 결제 제공자와의 통신을 처리합니다. +2. **Order Service**: 결제와 관련된 주문 데이터를 관리합니다. +3. **Transaction Management**: 결제의 트랜잭션 관리를 담당하며, 성공적인 결제, 실패 처리, 및 롤백 작업을 수행합니다. + +결제 성공시 주문상의 상태를 업데이트합니다. + +# Alternatives + +1. **모듈화된 아키텍처**: 결제 기능을 서비스별로 나누어 각 기능이 독립적으로 동작하도록 설계. +2. **마이크로서비스 아키텍처**: 각 결제 관련 기능을 독립된 서비스로 배포하여 스케일링과 관리 용이성을 제공. + +# Consequences + +결제 시스템이 정의한 경계를 통해 다음과 같은 결과를 병행할 수 있습니다: +- 각 서비스의 책임이 명확해져서 유지보수가 용이해짐. +- 결제 실패시의 롤백 처리 체계가 단순화되며, 외부 API 통신 실패 시의 처리 방법이 명확해짐. +- 마이크로서비스 접근법에 따라 유연한 스케일링이 가능하지만, 서비스 간의 오버헤드 증가로 인해 성능이 저하될 수 있음.