도메인 주도 설계 구현-아키텍쳐(5)

도메인 주도 설계 구현

아키텍처

이벤트 주도 아키텍처

장기 실행 프로세스

실행자와 추적자?

일부 사람들은 실행자(executive)와 추적자(tracker)를 하나의 객체(애그리게잇)의 개념으로 합치는 편이 가장 간단한 접근법이라는 점을 발견했다.

장기 실행 프로세스는 종종 분산 병렬 처리와 관련이 있을 수 있지만, 분산 트랜잭션과는 전혀 상관없다. 여기선 최종일관성을 포괄하는 사고 방식이 필요하다.

이벤트 소싱

일반적인 비지니스 측면에선 엔티티가 생성된 시점과 마지막으로 수정된 시점과 누가 수정했는지만을 추적한다.
이는 변경을 추적하는 단순하고 직접적인 방법이다. 하지만 이런 접근은 모델에서 일어나는 개별적 변경 내용에 관해선 정보를 제공하지 않는다.

더 많은 수의 변경을 추적하려는 바람이 커지면, 비지니스 측에선 더 많은 메타데이터를 요구한다.
시간이 흐름에 따라 수행되는 오퍼레이션 하나하나도 신경쓰고 싶어한다.

이런 개념을 하나의 엔터티에 적용하고 이어서 하나의 애그리게잇으로 그리고 모델 내의 모든 애그리게잇으로 적용을 이어간다고 생각해본다면
우리는 변경 추적 객체의 힘과 우리 시스템에 만들어낼 수 있는 가치가 무엇인지 이해 할수 있다.

이런 수준의 변경 추적은 이벤트 소싱이라는 패턴의 핵심이다.

이벤트 소싱의 장점

  • 이벤트 히스토리가 시스템의 버그를 해결하는 방법을 보여줄수 있다.
  • 명시적 히스토리를 활용한 디버깅에 큰 이점이 있다.
  • 처리량 높은 도메인 모델을 만들수 있다. 확장이 쉽다.

데이터 패브릭과 그리드 기반 분산 컴퓨팅

데이터 패브릭(그리드 컴퓨팅으로 불리기도 한다.)

데이터 복제

인메모리 테이터 캐시를 생각하면 어떤 이유로 캐시가 일부 실패 했을때 우리 시스템 일부나 전체가 기능을 상실할 위험이 실재하는지 고민할수 있다.
패브릭에 중복성을 만들어둔다면 문제의 가능성으로부터 멀어질수 있다.

참조