logo

이벤트를 발행하여, 트랜잭션과 관심사 분리하기

language-logoSpring

• 결제와 알림 전송 로직을 분리하여 트랜잭션의 안전성을 확보하기 위해 이벤트 기반 처리 방식을 도입하고, 결제 로직은 핵심 트랜잭션 내에서만 처리하며, 트랜잭션이 성공적으로 커밋된 이후에 이벤트를 발행하여 부가적인 후처리를 안전하게 실행하도록 변경한다.
• 스프링의 `ApplicationEventPublisher`와 `ApplicationListener`를 활용하여 결제 완료 이벤트를 발행하고, 이를 구독하는 리스너가 알림 전송 등의 부가 로직을 처리함으로써 시스템의 신뢰성과 확장성을 향상시킨다.
• 스프링 이벤트를 사용하여 결제 처리와 알림 전송 로직을 분리하였으나, 기본적으로 같은 트랜잭션에서 실행되기 때문에 이벤트 리스너에서 예외가 발생하면 전체 트랜잭션이 롤백된다.
• `@TransactionalEventListener`를 사용하여 결제 완료 이벤트 리스너가 트랜잭션 커밋 후에 실행되도록 설정하면, 이벤트 리스너에서 오류가 발생하더라도 결제 처리 로직은 롤백되지 않고 유지된다.

thumbnail
북마크
공유하기
신고하기
24분 분량
조회수 161
profile-image우쨈
한 달 전
Copyright © 2025. Codenary All Rights Reserved.