Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

전술적 설계 - 시간 차원의 모델링 #7

Open
nooose opened this issue Aug 15, 2024 · 2 comments
Open

전술적 설계 - 시간 차원의 모델링 #7

nooose opened this issue Aug 15, 2024 · 2 comments
Labels
documentation Improvements or additions to documentation

Comments

@nooose
Copy link
Owner

nooose commented Aug 15, 2024

📅 2024.08.15 - 시간 차원의 모델링

📝 학습 내용 요약

  • 주요 주제: 이벤트 소싱

🧠 이해한 내용

  • 핵심 개념: 이벤트 소싱을 개념을 적용해 상태를 관리하자
  • 애그리게이트의 상태 변화 마다 이벤트를 발행/저장한다.
    • 이벤트로 상태 변화를 추적할 수 있게된다.
    • 이벤트 목록을 Reply 하면서 최종 상태를 계산할 수 있다.
  • 분석과 같은 복잡한 조회 요구사항있다면?
    • 뒤에서 배울 CQRS 패턴을 적용해 해결할 수 있다.

❓ 궁금한 점 및 논의할 주제

  • 질문 1: 저장된 이벤트가 10,000건일 때,애그리게이트 모델에서 이벤트 추가를 어떻게 해야할지? replay를 어떻게 해야할까?

🔍 추가 참고 자료

🗒 기타 메모

@nooose nooose added the documentation Improvements or additions to documentation label Aug 15, 2024
@dltkqnr
Copy link

dltkqnr commented Aug 23, 2024

📅 2024.08.22 - 시간 차원의 모델링

📝 학습 내용 요약

  • 이벤트 소싱 패턴

🧠 이해한 내용

  • 이벤트 소싱 패턴은 에그리게이트의 상태를 관리하는데 사용된다.
    • 상태를 직접 저장하는 대신 모델은 도메인 이벤트(상태변경 설명)를 생성한다.
      • 이벤트를 저장하는 데이터베이스는 ‘이벤트 스토어’라고 부른다.
  • 데이터 모델에 ‘시간’ 개념을 도입한다.
  • 이벤트를 통해 애그게이트의 상태를 변경하는 것은 시스템의 성능에 부정적인 영향을 미칠 수 있다.
    • 일반적으로 1만개 이상의 이벤트가 발생하면 성능 저하가 눈에 띄게 발생한다.
    • 그러나 대부분의 시스템에서 애그리게이트의 수명은 100개 이벤트를 넘지 않는다.
    • 만약 많은 이벤트가 쌓이는 경우, 스냅샷 패턴과 같은 패턴을 적용할 수 있다.

❓ 궁금한 점 및 논의할 주제

  • 질문 1 : 저장된 이벤트가 10,000건일 때,애그리게이트 모델에서 이벤트 추가를 어떻게 해야할지? replay를 어떻게 해야할까?
    → 일정주기 마다 애그리게이트의 현재 상태를 저장해두는 스냅샷 패턴을 적용한다.
    → 상태를 복원할 때 모든 이벤트를 reply할 필요없이 가장 최신 스냅샷 이후의 이벤트만 reply 한다.

🔍 추가 참고 자료

🗒 기타 메모

@nonoro
Copy link
Collaborator

nonoro commented Aug 26, 2024

📅 2024.08.12 - 시간 차원의 모델링

📝 학습 내용 요약

  • 이벤트 소싱과 도메인 모델링

🧠 이해한 내용

  • 이벤트 소싱은 시스템의 모든 상태 변경을 이벤트로 기록하고, 이를 통해 현재 상태를 관리하는 방법.
  • 이 방식은 과거 데이터를 쉽게 추적하고, 필요한 시점의 상태를 재구성하는 데 유리하지만 복잡성과 성능 문제도 고려해야 한다.
  • 도메인 이벤트는 시스템 내 중요한 상태 변화를 나타내며, 프로젝션은 여러 이벤트를 적용해 현재 상태를 재구성하는 과정이다.

❓ 궁금한 점 및 논의할 주제

질문 1: 프로젝션이 정확히 뭐하는건지 잘 모르겠음
질문 2: 이벤트에서 애그리게이트 상태를 재구성 이게 무슨 말인지 이해하지 못하겠음

🔍 추가 참고 자료

🗒 기타 메모

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
documentation Improvements or additions to documentation
Projects
None yet
Development

No branches or pull requests

3 participants