DDD
-
도메인 주도 개발 시작하기 CH.8 ~ CH.9DESIGN PATTERN & ARCHITECTURE 2024. 7. 3. 23:40
Ch. 8 : 애그리거트 트랜잭션 관리 8.1애그리거트와 트랜잭션 동시에 한 데이터를 수정하고자 하는 경우 (동시성 이슈 발생)애그리거트의 일관성이 깨짐 해결 방안 선점 잠금한 스레드가 애그리거트를 수정하는 동안 다른 스레드가 변경 불가능하게 방지 동시에 애그리거트를 수정할 때 발생하는 데이터 충돌 해소 가능 DBMS의 행단위 잠금 사용하여 구현 ex) JPA Entity Manager의 LockModeType, 스프링데이터 JPA의 @Lock 애너테이션, 하이버네이트 PESSIMISTIC_WRITE 잠금 모드 (for update 쿼리)잠금 순서에 따른 교착 상태를 주의다른 스레드가 대기 상태에 빠질 수 있어 대기 시간 설정이 필요 ex) JPA lock.timeout, 스프링 데이터 JPA의 @Que..
-
도메인 주도 개발 시작하기 CH.6 ~ CH.7DESIGN PATTERN & ARCHITECTURE 2024. 6. 26. 22:42
Ch. 6 : 응용 서비스와 표현 영역 6.1표현 영역 사용자의 요청 해석 및 담당 응용 서비스 호출 응용 서비스가 요구하는 형식으로 사용자 요청을 변환 응용 서비스 호출 후 실행 결과를 사용자에게 맞는 형식으로 응답 덕분에, 응용 서비스가 표현 영역에 의존하지 않을 수 있음응용 영역 실제 사용자가 원하는 기능을 제공 기능 실행에 필요한 인자를 메서드 인자로 받고 실행 결과 리턴 6.2응용 서비스 사용자(클라이언트)가 요청한 기능 실행 역할기능 실행 레포지터리에서 도메인 객체를 가져와 사용 도메인 객체를 사용=> 도메인 영역과 표현 영역을 연결해주는 창구 역할 응용 서비스가 복잡하다면, 도메인 로직을 구현하고 있는지 파악해보아야 함 도메인 로직을 분산해서 구현하면, 코드 품질 문제 발생 및 반복..
-
도메인 주도 개발 시작하기 CH.4 ~ CH.5DESIGN PATTERN & ARCHITECTURE 2024. 6. 19. 23:53
Ch. 4 : 레포지토리와 모델 구현 4.1.레포지터리 인터페이스 애그리거트와 같이 도메인 영역에 속함 인터페이스는 애그리거트 루트를 기준으로 작성해야 함레포지터리 구현 클래스 인프라스트럭처 영역에 속함 인프라스트럭처에 대한 의존을 낮춰야 함 레포지터리의 기본 기능 ID로 애그리거트 조회 ID외의 다른 조건으로 애그리거트를 조회할 때에는 JPA의 Criteria나 JPQL을 사용할 수 있음 애그리거트 저장 JPA를 사용한다면 트랜잭션 범위에서 변경한 데이터는 자동 저장되므로 저장하는 메서드를 추가할 필요가 없음 삭제 기능의 경우 삭제 요구사항이 있더라도 데이터 조회가 필요한 경우나 원복해야하는 경우도 있기 때문에 데이터를 실제로 삭제하는 경우가 많지 않음 4.2스프링 데이터 JPA레포지터리 인터페..
-
도메인 주도 개발 시작하기 CH.1 ~ CH.3DESIGN PATTERN & ARCHITECTURE 2024. 6. 10. 23:13
쿠버네티스 스터디를 끝내고 새로운 스터디를 들어가게 되어, 책을 공부하면서 정리를 해보려고 한다!책은 최범균 저자의 이다. https://www.yes24.com/Product/Goods/108431347 도메인 주도 개발 시작하기 - 예스24가장 쉽게 배우는 도메인 주도 설계 입문서!이 책은 도메인 주도 설계(DDD)를 처음 배우는 개발자를 위한 책이다. 실제 업무에 DDD를 적용할 수 있도록 기본적인 DDD의 핵심 개념을 익히고 구현을www.yes24.com Ch. 1 : 도메인 모델 시작하기 1.1도메인소프트웨어로 해결하고자 하는 문제영역 한 도메인은 다시 하위 도메인으로 나눌 수 있음 고정된 하위 도메인이 존재하는 것은 아님 상황에 따라서 하위 도메인 구성 여부가 달라짐 특정 도메인을 위한 ..