컨퍼런스(Conference, Session)/우아콘(WOOWACON)

[2022 우아콘] 회원시스템 이벤트 아키텍처 구축하기

Chaany 2022. 10. 21.
728x90

1. 세션 시청 배경

  • 차세대 프로젝트에 MSA, Event-Driven/Domain-Driven Architecture 도입
  • 이벤트 아키텍처에 대한 이해도 향상을 위함
  • Java Spring framework, Kafka 기반 이벤트 아키텍처 구축에 대한 이해도 향상 요함
  1.  
  •  

2. 내용

  • Micro-Service Architecture
    • 마이크로서비스(microservice)는 애플리케이션을 느슨하게 결합된 서비스의 모임으로 구조화하는 서비스 지향 아키텍처(SOA) 스타일의 일종인 소프트웨어 개발 기법이다.
    • 느슨한 결합을 위해 Event-Driven Architecture을 도입하였다.
  • 이벤트
    • 발행해야할 이벤트는 이벤트로 인해 달성하려는 목적이 아닌 도메인 이벤트 그 자체
    • 3개의 이벤트 발행, 구독 계층을 두는 Architecture 설계하였음
    • 어플리케이션 이벤트
      • 주요 행위와 트랜잭션 공유
      • 주요 행위와 성능 공유
      • 주요 행위와 강한 정합성 보장이 필요한 작업
    • 열린 내부 이벤트
      • 주요 행위와 트랜잭션 분리
      • 주요 행위와 성능 분리
      • 주요 행위와 강한 정합성 보장이 필요하지 않은 작업
    • 닫힌 외부 이벤트
      • 세 번 째 구독 계층에서는 페이로드 값 변경에 영향 받지 않게 설계해야 함
      • Zero-payload 정책 적용

내부, 외부 이벤트와 세 개의 발행/구독 계층
외부 이벤트/ZERO-PAYLOAD 정책 적용

  • 이벤트 저장소
    • 이벤트 로그를 관리하는 저장소 ex) DB 테이블
    • 이벤트 유실을 방지함
    • Transaction Outbox Pattern 도입
      • 이벤트 로그를 따로 저장소를 두고 관리하는 기법
      • 저장소 데이터 형태
        • 식별자 - 누가
        • 속성  - 어떤 변화가
        • 행위 - 무엇을 하여
        • 시간 - 언제
    • 이벤트 구독 시점에 이벤트 저장소 구독 여부 컬럼 변경을 통해 데이터 유실 방지
    • 이벤트 저장소 컬럼 지정을 통해 분산되어 있던 기록 테이블 통합하여 한 테이블로 로그 저장/분석 가능

 

트랜재션 아웃박스 패턴 모형
이벤트 저장소의 데이터 형태
데이터 유실 방지 방법
이벤트 기록 테이블 통합 데이터 형태

3. 느낀점

 

적절한 이벤트 및 저장소 활용은 효율적인 로그 기록/분석을 유도하고 더 나아가 MSA 상의 데이터 정합성 향상에 적합한 것 같다.

 

 

출처
2022 우아콘 - 회원시스템 이벤트기반 아키텍처 구축하기
: https://www.woowacon.com/ko/detailVideo/16

 

728x90

댓글