독서/DDD
![[DDD] Chapter 3. 애그리거트 [3/11]](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcxNimT%2FbtrWeYZ8zS9%2FKTF0URM6TzEDO5fwnJxwW0%2Fimg.jpg)
[DDD] Chapter 3. 애그리거트 [3/11]
애그리거트 : 복잡한 도메인을 이해하고 관리하기 쉬운 단위로 만들기 위해, 상위 수준에서 모델을 조망할 수 있는 방법 * 단, 'A가 B를 갖는다로 해석할 수 있는 요구사항이 있다고 하더라도, 이것이 반드시 A와 B가 한 애그리거트에 속한다는 의미는 아니다. * 구분기준: 두 객체가 함께 생성되지 않고 함께 변경되지 않는 등, 변경의 주체가 다르면 다른 애그리거트에 속한다. * 조건: 다수의 애그리거트가 한 개의 엔티티 객체만 갖는 경우가 많음. 두 개 이상의 엔티티로 구성되는 애그리거트는 지양 애그리거트 루트와 역할 애그리거트 루트 엔티티 : 애그리거트 전체를 관리할 주체 * 도메인 규칙을 지키기 위해선, 애그리거트에 속한 모든 객체가 정상 상태를 가져야함 애그리거트 루트 역할 1. 애그리거트에 속한 ..
![[DDD] Chapter 2. 아키텍처 개요 [2/11]](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbFKv5Q%2FbtrVA05sDNM%2Fo946KH2JqpeYgnKUtzS2uk%2Fimg.jpg)
[DDD] Chapter 2. 아키텍처 개요 [2/11]
아키텍처 1. 구성요소 : 표현 | 응용 | 도메인 | 인프라스트럭처 * 고수준 모듈 : 의미있는 단일 기능 (예시 : 고객 정보를 조회 + 할인율 계산) * 저수준 모듈 : 하위 기능을 실제로 구현한 것 (예시: JPA를 이용한 DB 조회 + Drools을 이용한 룰 적용) * 인프라스트럭처의 저수준 모듈을 이용하여 고수준 모듈의 기능을 개발 영역 설명 SpringBoot 계층 예시 UI 또는 표현 사용자의 요청을 처리하고 응답을 보여줌 여기서 사용자는 사람일 수도 있고, 외부 시스템일 수도 있음 컨트롤러 (API계층) 응용(Application) 사용자가 요청한 기능 실행 도메인 계층을 조합해서 기능 실행 (로직의 직접 구현 X) * 예시1 : Entity에 구현한 메서드를 호출해서 사용 * 예시2 ..
![[DDD] Chapter 1. 도메인 모델 시작 [1/11]](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbA7dyT%2FbtrVAttiHBb%2FKk0pyIQUPkBGlnzYC8Kax1%2Fimg.jpg)
[DDD] Chapter 1. 도메인 모델 시작 [1/11]
도메인이란? [핵심] 도메인 = 주제 : 소프트웨어로 해결하고자 하는 영역 더보기 상위 도메인 (=대주제) 예시 : 쇼핑몰 하위 도메인 (=소주제) 예시 : 회원, 주문, 혜택, 카탈로그, 리뷰, 결제, 배송 *일반적으로 칭하는 도메인 외부 도메인 (=외부인용) 예시 : 외부 결제(PG), 외부 배송(물류) 등 도메인 전문가와 개발자 간 지식 공유 [핵심] 개발자는 요구사항에서 진짜 뭘 원하는지 잘 캐치해내야 함 : 개발자는 요구사항을 이해할 때 왜 이런 기능을 요구하는지, 실제로 원하는 것이 무엇인지를 도출해내야 하기때문 도메인 모델 [핵심] 스키마 디테일하고 정황하게 잘 짜라는 말 (테이블 + 멤버 + 타입 + API 등) : 특정 도메인을 개념적으로 표현한 것 : 도메인을 이해하는데 도움이 되면 됨..