Download presentation
Presentation is loading. Please wait.
1
Domain Driven Design 2014년 9월
2
목차 DDD 등장배경 DDD 이란 DDD와 JPA 관계
3
POJO(Plain Old Java Object)
1. DDD 등장배경 소프트웨어 공학의 선구자인 Frederick Brooks는 그의 기념비적인 논문 “은 총알은 없다”에서 소프트웨어가 태생적으로 안고 있는 본질적인 문제로 인해 앞으로 10년 내에 생산성, 신뢰성, 단순성을 단 열배라도 향상시켜줄 기술이나 기법은 출현하지 않을 것이라고 예견했다. 정보 은닉과 소프트웨어 아키텍처의 기틀을 닦은 David L Parnas 역시 “새 프로그래밍 언어가 극적인 향상을 가져오리라 기대해서는 안되며, 프로그램밍 환경 문제가 우리 분야의 진짜 장애물은 아니다”라고 이야기 했다. Agile Alliance 변화수용과 즉각적인 피드백 “언제나 설계하라” Domain Driven Design - 기술이 중심이 아닌 도메인을 중심으로 개발. 비침투적인 프레임워크 Spring Hiberante POJO(Plain Old Java Object)
4
2. DDD 이란 – 도메인 모델 정의 1. 모델이란 현실이라는 기반 위에 해결하고자 하는 문제에 적합한 새로운 추상화 계층을 창조하는 과정이다. 2. 도메인이란 소프트웨어를 사용할 사용자의 활동이나 관심사의 대상이 되는 영역을 말한다. 3. 도메인 모델은 단지 도메인 전문가의 머리 속에만 존재하는 지식이 아니라 소프트웨어 개발에 적합하도록 지식을 정밀하게 조직하고, 선택적으로 추상화한 것이다. “소프트웨어의 본질적인 문제를 외면한 상태에서 비약적인 생산성의 향상을 기대할 수는 없다. 따라서 소프트웨어의 본질적인 문제를 해결하기 위해서는 도메인을 이해하고 끊임없는 탐구를 통해 적절한 도메인 모델을 선택하는 것이 중요하다” – Frederick Brooks
5
2. DDD 이란 – 도메인 모델의 요구사항 모델과 핵심 설계는 상호 영향을 주고 받으며 구체화된다.
분석 설계 구현 일치화 모델은 모든 팀 구성원들이 사용하는 언어의 근간을 이룬다. 모델과 구현이 통합/일치화 되고, 도메인 전문가가 바라보는 관점을 담고 있기 때문에 모든 구성원의 커뮤니케이션은 모델로 사용된다.(도메인 전문가도 포함) 모델과 구현 모두 공통된 언어를 사용해야 한다.(Ubiquitous Language) 도메인 전문가와 개발자 용어의 교집합으로 구성 모델은 불순물을 걸러낸 핵심 지식만을 포함한다.
6
2. DDD 이란 – 도메인 모델의 요구사항 분석 설계 구현 일치화 도메인 전문가 모델러 개발자 Domain Model
Ubiquitous Language 일치화 모델러 개발자
7
2. DDD 이란 – 주요 패턴 ENTITY(Reference Object)
“이것이다”라고 지칭할 수 있으며, 추적성에 대한 개념이 있는 지로 식별한다. 예)주문한 고객(한달 전에 주문한 고객이 그 고객인지 식별) VALUE OBJECT 추적성이 없으며 값의 중요성만 존재하는지로 식별한다. 일반적으로 생성주기가 Entity에 종속된다. 예)주문한 금액(한달 전에 10,000지폐로 주문하였는데 그 지폐에 대한 추적성 보다 10,000이 중요) AGGREGATE 연관성이 있는 객체에서 Entry Point 객체를 식별하여 Entry Point객체에서 연관객체를 관리. 예) 주문-주문품목에서 주문품목을 추가/삭제/변경 할려면 주문(Entry Point)을 통해서 관리 SERVICE Client(Controller)에 공개되는 서비스 단위 예) 주문 생성, 주문 삭제 … REPOSITORY AGGEGATE의 생명주기를 관리하고, Entity의 영속성을 주관하는 객체이다. Entry Point별 구현한다. 예) 주문-주문품목에서 주문(Entry Point)에 대한 생명주기를 관리하고, 주문-주문품목의 영속성을 주관
8
3. DDD와 JPA 관계 – ORM의 역할 Service Layer Repository Layer Service
구현체 Domain Layer 주문 Entity Entry Point 사용자 ORM(JPA) Aggregate 상품 주문상품 DataBase
9
3. DDD와 JPA 관계 – ORM의 개념도 Domain Layer(객체모델) DataBase(관계모델) Entity
사용자 주문 Entity Entry Point Aggregate 주문상품 상품 Service Layer Repository Layer Domain Layer(객체모델) 주문 생성 주문 Insert 주문 주문상품 Insert 주문상품 ORM(JPA) DataBase
10
End of Document
Similar presentations