이번 기회에 도메인 주도 개발 시작하기 책을 읽게 되었다. 책을 읽어보면서 한편으로는 ddd 개념을 제대로 이해하지 못한채 개발을 하긴 했지만 얼추 태는 비슷하다고 느꼈다. 책을 읽으면서 에그리거트라는 큰 개념을 보게 되었다. 혼자 스타트업에서 백엔드 개발을 하다보니
표현 계층 : 사용자와 소프트웨어의 인터페이스를 담당하는 계층이다. 사용자의 요청을 받고 응용 계층에 전달하는 역할을 한다. 웹 브라우저로부터 http 요청과 응답을 주고받는다.응용 계층 : 표현 계층에서 전달받은 요청을 처리하는 계층이다. 도메인 계층의 기능을 사용하
정의관련된 객체들을 모아 하나의 단위로 취급하는 개념이다.논리적으로 관련된 객체들을 그룹화하여 하나의 묶음으로 다룬다.쉽게 말해, 여러 개의 객체를 묶어 하나의 큰 객체로 다루는 것이다.장점상위 수준에서 모델을 정리하면 도메인 모델의 복잡한 관계를 이해하는 데 도움이
모듈 위치리포지터리를 구현한 클래스는 인프라스트럭처 영역에 속한다.리포지터리 구현 클래스를 인프라스트럭처 영역에 위치 시켜서 인프라스트럭처에 대한 의존을 낮춰야 한다.리포지터리 저장 기능리포지토리의 save() 메소드에 매개변수로 저장할 엔티티 전달리포지터리 조회 기능
스프링 데이터 JPA를 이용한 조회 기능 스펙 정의 JPA에서 스펙은 리포지토리를 통해 데이터를 조회할 때 사용하는 조건을 표현하는 방법이다. JPA는 다양한 검색 조건을 조합하기 위해 CriteriaBuilder와 Predicate를 사용하므로 JPA를 위한
응용 서비스와 표현 영역 사용자에게 기능을 제공하려면 도메인과 사용자를 연결해 줄 표현 영역과 응용 영역이 필요하다. 응용 서비스 표현 영역 사용자의 요청 값 검증과 권한 검사
한 애그리거트로 기능을 구현할 수 없을 때가 있다. 한 애그리거트에 넣기 애매한 도메인 기능을 억지로 특정 애그리거트에 구현하면 안 된다. 억지로 구현하면 애그리거트는 자신의 책임 범위를 넘어서는 기능을 구현하기 때문에 코드가 길어지고 외부에 대한 의존이 높아지게 되며
만약 옷을 판매하는 쇼핑몰에서 고객이 옷을 구매했다고 생각해보자, 고객은 옷을 구매하였고 배송지를 변경하고자 하고 쇼핑몰 운영자는 배송을 준비하기 위해서 배송 준비 중 상태로 변경하고자 한다. 이렇게 될 경우 운영자는 기존 배송지 정보를 이용해서 배송 상태로 변경했는데
등장 배경: 한개의 모델로 여러 하위 도메인을 모두 표현하려고 시도하면 오히려 모든 하위 도메인에 맞지 않는 모델을 만들게 된다.모델은 특정한 컨텍스트(문맥) 하에서 완전한 의미를 갖는다. 같은 제품이라도 카탈로그 컨텍스트와 재고 컨텍스트에서 의미가 서로 다르다. 이렇
이벤트의 구성 요소이벤트 생성 주체(엔티티, 밸류, 도메인 객체)이벤트이벤트 디스패처(이벤트 퍼블리셔)이벤트 핸들러(이벤트 구독자)이벤트의 용도도메인의 상태가 바뀔 때 다른 후처리가 필요하면 후처리를 실행하기 위한 트리거로 이벤트를 사용할 수 있다.서로 다른 시스템 간
CQRS는 Command Query Responsibility Segregation의 약자로, 명령과 쿼리의 책임을 분리하는 패턴을 의미한다. 명령은 시스템의 상태를 변경하는 작업을 의미하며, 쿼리는 시스템의 상태를 조회하는 작업을 의미한다. 단일 모델로 상태 변경과