open:애그리게이트

애그리게이트

  • 애그리게이트에는 원소에 대한 접근을 캡슐화한 루트 엔티티(장바구니)가 있음
  • 원소마다 고유한 정체성이 있지만 시스템의 나머지 부분은 장바구니를 나눌 수 없는 단일 객체처럼 참조해야 함
  • DDD 커뮤니티에서 공유하는 설계 패턴
  • 다른 도메인 객체들을 포함하며 이 객체 컬렉션 전체를 한꺼번에 다룰 수 있게 해주는 도메인 객체
  • 애그리게이트에 있는 객체를 변경하는 유일한 방법은 애그리게이트와 그 안의 객체 전체를 불러와 애그리게이트가 지원하는 메서드를 호출하는 방뻐
  • 관련 도메인을 하나의 군집으로 묶은 것
  • 애그리게이트 내부에서 다뤄야 하는 객체는 Batch
    • Shipment를 경계로 사용할 수도 있음
      • 각 선적에는 여러 배치가 들어갈 수 있고 모든 배치는 동시에 창고로 전달
    • Warehouse를 경게로 사용할 수도 있음
      • 각 창고에는 여러 배치가 들어있고 모든 재고 수량을 동시에 파악하는 게 좋음
    • Shipment, Warehouse 모두 DEADLY-SPOON, FLIMSY-DESK를 동시에 할당할 수 있지만 같은 창고 혹은 같은 선적에 포함되어 있어야 할당 가능하기 때문
    • 주문 라인을 할당할 때는 주문 라인으로 같은 SKU에 속하는 배치에만 관심이 있음
      • GlobalSkuStock 같은 개념
        • 주어진 모든 SKU에 속한 모든 배치의 컬렉션
    • 이름이 좋아 보이지 않아 아래 이름을 검토 후 최종 Product이라 부르기로 결정
      • SkuStock, Stock, ProductStock 등

  • open/애그리게이트.txt
  • 마지막으로 수정됨: 2022/01/27 06:32
  • 저자 127.0.0.1