일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 루씬 인 액션
- 알고리즘
- 프로그래머스
- 모던 자바 인 액션
- 다리를 지나는 트럭
- 전화번호 목록
- 영속 자료구조
- 해시
- 완주하지 못한 선수
- 크론 표현식
- 커링
- 고차원 함수
- 검색 기능 확장
- 가장 큰 수
- @Getter
- Java
- 스택/큐
- H-index
- @EnableScheduling
- @configuration
- 정렬
- @Setter
- 스프링 스케쥴러
- 기능개발
- kubenetes
- 쿠버네티스
- K번째수
- @Data
- 롬복 어노테이션
- 코딩 테스트
- Today
- Total
목록도메인 주도 설계 (25)
Today I Learned
모든 객체에는 생명주기가 있다. MODEL-DRIVEN DESIGN에서는 이러한 객체들을 관리하는것이 중요하다. 도메인 객체의 관리와 관련된 문제는 두 가지 범주로 나뉜다. 생명주기 동안의 무결성 유지하기 생명주기 관리의 복잡성으로 모델이 난해해지는 것을 방지하기 AGGREGATE, FACTORY, REPOSITORY 세 가지 패턴을 사용해서 문제를 해결한다. AGGREGATE (집합체) 데이터 변경의 단위로 다루는 연관 객체의 묶음 경계 : AGGREATE에 무엇이 포함되고 포함되지 않는지를 정의 루트 : 하나만 존재하며, AGGREGATE에 포함된 특정 ENTITY를 가리킴 경계 안의 객체는 서로 참조할 수 있지만, 경계 바깥의 객체는 루트만 참조할 수 있다. AGGREGATE 적용 규칙 루트 ENT..
SERVICE (서비스) 사물이 아닌 활동, 행동을 표현 다른 객체와의 관계를 강조하며, 클라이언트에 무엇을 제공할 수 있느냐에 따라 정의 서비스의 특징 연산이 ENTITY나 VALUE OBJECT의 일부를 구성하는 것이 아니라 도메인 개념과 관련돼 있다. 인터페이스가 도메인 모델의 외적 요소의 측면에서 정의된다. 연산이 상태를 갖지 않는다. SERVICE와 격리된 도메인 계층 SERVICE는 도메인 계층에서만 이용되는 것이 아니다. 각 계층의 SERVICE들을 구분하고 책임을 나누는데 주의를 기울여야 한다. 예제 - 자금이체서비스 구성 단위 ENTITY와 VALUE OBJECT로부터 클라이언트를 분리하고, 도메인 계층의 인터페이스 구성 단위를 제어하는 수단 클라이언트 제어와 융통성보다는 인터페이스의 단..
모델과 구현은 상세 수준에서 연결돼야 한다. 객체 간의 연관관계를 설계하고, 연간 관계를 합리적으로 구성하는 문제를 논의하는 것으로 시작하자. 객체 간의 연관관계를 이해하고 묘사하는 것은 간단하지만 실제로 구현하는 것은 힘든 문제일 수 있다. 연관 관계를 토대로 상세한 구현 결정이 MODEL-DRIVEN DESIGN을 실현하는데 얼마나 중요한가를 알 수 있다. 상세한 모델 선택과 구현 관심사 간의 관계는 모델을 표현하는 세 가지 패턴인 ENTITY, VALUE OBJECT, SERVICE를 구분하며 설명한다. 마지막으로 MODULE에 관해 논의하면서 모든 설계 관련 의사결정은 도메인에 부여된 통찰력을 바탕으로 내려야한다는 것을 알게 될 것이다. 연관관계 모델링과 실제 구현 간의 상호작용은 여러 객체 간의..
시스템에서 도메인과 관련이 적은 기능으로부터 도메인 객체를 분리할 필요가 있다. 그렇게해서 도메인 개념들 다른 소프트웨어 기술에만 관련된 개념과 혼동하거나, 시스템이라는 큰 덩어리 안에서 도메인을 전혀 바라보지 못하는 문제를 방지할 수 있다. LAYERED ARCHITECTURE (계층형 아키텍처) 도메인에 관련된 코드와 관련없는 코드가 혼재될 경우, 도메인 관련 코드를 확인하고 추론하기 힘들어진다. 또한, 응집력 있고 모델 주도적인 객체를 구현할 수 없게 되고 자동화 테스트가 어려워진다. 격리된 상태에 있는 각 설계 요소에 집중하기 위해 관심사의 분리가 필요하다. LAYERED ARCHITECTURE 계층화를 통해 소프트웨어 시스템을 분리하는 방법으로 널리 쓰인다. 계층화의 핵심 원칙 : 한 계층의 모..