[WIL] Decoupling with event

2025. 8. 31. 17:52·WIL

🧠 이번 주에 새로 배운 것

  • 이벤트를 통해, 하나의 작업에서 길어지는 동기 연산을 구분할 수 있다.
    • 불필요하게 긴 하나의 트랜잭션을 나누어 DB 리소스를 효율적으로 사용한다.
    • 도메인간의 결합도를 낮출 수 있다.
    • 핵심 로직과 부가 로직을 구분하여, 정합성을 맞춰야하는 것과 부가적인 비즈니스를 나누어 수행한다.
  • ‘정말 하나의 트랜잭션으로 관리해야 하는지’, ‘분리한다면, 어떻게 분리하는게 좋을지’ 좋을지 고민할 수 있게 되었다.
  • 스프링의 ApplicationEvent를 통해 어플리케이션 내부에서 이벤트 기반의 흐름을 제어할 수 있다.
    • TransactionalEventListener: 트랜잭션 특정 시점에 이벤트 처리
      • BEFORE_COMMIT, AFTER_COMMIT 등
    • EventListener: 이벤트 발행 시 즉시 처리

💭 이런 고민이 있었어요

  • BEFORE_COMMIT은 결국 같은 트랜잭션 내에서 처리하는데 어떤 이점이 있을까?
    • 코드 레벨에서 도메인 간 결합을 분리할 수 있다.
    • 하지만, 명시적으로 파사드에서 작성하는 것이 더 안정적일 수 있다.
    • 책임 분리와 동시에 트랜잭션 원자성 유지가 목적이라면 사용할 수 있다.
      • ex) 로그 적재, Projection 데이터 업데이트
  • 정말 부가로직으로서 각각 수행해야할까?
    • 결제 실패됨 → 쿠폰 복원 / 주문 상태 변경
      • 쿠폰 복원은 성공했는데, 주문 상태 변경이 실패한다면?
      • 이러한 경우, 두 부가 로직이 하나의 정합성으로 수행해야 함

💡 앞으로 실무에 써먹을 수 있을 것 같은 포인트

  • 기존에 존재하는 하나의 긴 트랜잭션이 정말 하나의 트랜잭션으로 수행되어야 하는지 확인하자.
  • 서비스의 흐름을 이벤트로 구분하여, 핵심 로직과 부가 로직을 나누어보자.
  • 경계를 느슨하게 구성하고 동기/비동기를 나누어보자.

🤔 아쉬웠던 점 & 다음 주에 해보고 싶은 것

  • 스프링의 ApplicationEvent는 JVM 내에서 동작
    • 시스템 외부로 전송해야한다면?
  • 트랜잭셔널 아웃박스 패턴을 통해 DB 커밋과 메시지 발행의 일관성을 유지해보자.

'WIL' 카테고리의 다른 글

[WIL] 카프카와 이벤트  (0) 2025.09.07
[WIL] Failure-Ready System  (2) 2025.08.24
[WIL] 인덱스와 캐시  (0) 2025.08.17
[WIL] 동시성 이슈 제어  (4) 2025.08.08
[WIL] 설계 - Software Design  (2) 2025.07.27
'WIL' 카테고리의 다른 글
  • [WIL] 카프카와 이벤트
  • [WIL] Failure-Ready System
  • [WIL] 인덱스와 캐시
  • [WIL] 동시성 이슈 제어
g-hwang
g-hwang
g-hwang 님의 블로그 입니다.
  • g-hwang
    g-hwang 님의 블로그
    g-hwang
  • 전체
    오늘
    어제
    • 분류 전체보기 (57)
      • 데브코스 (7)
      • 스프링 (8)
      • 자바 (3)
      • 아키텍처 (3)
      • 트러블 슈팅 (4)
      • 알고리즘 (0)
      • 개발서적 (7)
      • 인프런 워밍업 스터디 (7)
      • 오픈소스 기여 (2)
      • WIL (7)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    ZSet
    real mysql 8.0
    자바
    래퍼 클래스
    인프런 워밍업 스터디
    스프링
    도메인
    jpa 순환참조
    워밍업 스터디
    코드래빗
    레이어 아키텍처
    JPA
    스터디3기
    트랜잭션
    다중 컬럼 인덱스
    이벤트 스토밍
    virtual thread
    카프카
    도메인 모델링
    인덱스
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
g-hwang
[WIL] Decoupling with event
상단으로

티스토리툴바