'MDD.BB'에 해당되는 글 3건

  1. 2007.01.13 Aggregates, Factories, and Repositories by 김민재
  2. 2007.01.12 Service (28) by 김민재
  3. 2007.01.11 Layered Architecture by 김민재
이 셋의 공통점은 도메인 객체의 생명주기와 연관이 있다는 것이다.
생성하고, 메모리에 올려 놓고, 계산을 위해 사용한 다음 제거하기까지.. 경우에 따라서는 DB와 같은 공간에 지속적으로 저장을 한다.

다른 점은,
Aggregates의 경우는 도메인 객체의 오너쉽과 경계를 정의하는데 사용하는 패턴,
Factories는 생성,
Repositories는 저장.

8개의 BB중 현재까지 파악한 바로는 Aggregates가 가장 어렵다.
왜냐하면 이 패턴은 여러종류의 associations(연관관계)와 invariant를 위한 것이기 때문이다.
The invariants are those rules which have to be maintained whenever data changes.

신고
Posted by 김민재

Service

패턴/DDD : 2007.01.12 00:02
DDD.BB의 서비스를 떠올려야 할 시점..
도메인의 행위긴 한데.. 하나의 도메인의 행위로 규약하기엔 뭔가 어설픈..
곧 서비스라 함은 복수개의 도메인 객체와 관련이 있다는 것이다. 2개 이상... 무~~조건..

서비스는 명확하게 따로 선언하자.
서비스가 복수개의 도메인 객체와 관련 있으므로, 각각의 도메인 객체에 행위가 나눠 들어가도 가능은 하지만.. 이 도메인 객체들간의 복잡도가 증가한다. 그러므로 서비스로 뽑자.

서비스의 3가지 특징
1. The operation performed by the Service refers to a domain concept which does not naturally belong to an Entity or Value Object.
2. The operation performed refers to other objects in the domain.
3. The operation is stateless.

1. 도메인 컨셉이어야 한다. applicaton layer상의 서비스처럼 비즈니스 로직이 아닌 서비스가 아니다. 얘는 비즈니스 로직인 서비스다.
2. 둘 이상.. 오케이??
3. 도메인 레이어는 비즈니스 객체의 상태를 유지하는 곳이지만, 서비스처럼 상태가 없는 비즈니스 객체도 같이 어울려 레이어를 구성한다. 상태를 유지하는 것들은 엔티티라고 보면 될 것이다.

While using Services, is important to keep the domain layer isolated.

도메인 레이어에 속한 서비스들을 인프라스트럭처 레이어 또는 애플리케이션 레이어의 서비스와 구별 못하는 실수를 범하기 쉬운데, 서비스마다 각자 제 위치를 찾아 주는게 무엇보다 중요하다.

도메인 레이어 서비스에 대한 예를 웹 리포팅 애플리케이션을 들어 설명을 마무리하고 있다.
신고
Posted by 김민재

Layered Architecture

패턴/DDD : 2007.01.11 23:41
이 세상엔 수많은 소프트웨어 아키텍처가 존재한다. 그런데, DDD를 가장 잘 표현할 수 있는 아키텍처는 Layered Architecture(이하 LA)이다. 부가적인 이유를 들자면, DDD는 도메인 레이어를 다른 레이어와 구별해야 한다. 따라서 레이어의 개념이 있어야 한다.

DDD에서의 LA는 4개의 레이어로 구성된다.
Presentation|Application|Domain|Infrastructure

PADI -> 암기용.. 파.. 디립따..

여기서 꼭 기억할 것..
AL does not contain business logic.

DL은 도메인에 관한 정보가 위치하는 곳. 비즈니스 객체의 상태는 여기서 유지되어야 하는데, IL에 위임하는 것도 가능은 하다.

IL은 다른 3가지 레이어를 지원하는 라이브러리 성격이라고 볼 수 있다. PL에서 바로 IL로의 접근이 가능하다. 레이어간의 커뮤니케이션을 담당한다.

AL에 존재하는 것으로 application service가 있다. 여기서의 서비스와 Model-Driven Design(이하 MDD)의 기본 원칙 중 Service는 다른 개념임을 반드시 확인하자. 어떻게 다른지는 Service 를 다룰 때 설명한다.

흠... 8개로 구성된 기본원칙에 대한 정리를 진행 중인데, 이 기본원칙은 DDD의 기본 원칙이 아니라 MDD의 기본 원칙이다.
DDD의 패턴은 MDD의 패턴을 포함해서 여러개가 더 있다. 유비쿼터스 언어도 해당될 수 있고, 모델 Integrity를 위한 패턴도 해당된다. 따라서 DDD가 MDD보다 포괄적이다.


신고
Posted by 김민재

티스토리 툴바