일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 |
- spring Batch
- Java in action
- AWS101
- head first
- Design Pattern
- Java8 in action
- CQRS
- 패스트캠퍼스
- domain
- Clean Code
- spring boot
- facade pattern
- Java
- 디자인 패턴
- Java8
- 자바의 신
- web
- 자바8인액션
- jsp
- Was
- 자바
- Template Method Pattern
- ddd
- 자바8
- 클린코드
- SERVLET
- Java 8 in action
- spring
- 스트림
- Stream
- Today
- Total
목록domain (4)
주난v 개발 성장기

애그리거트와 트랜잭션 운영자 스레드와 고객 스레드는 개념적으로 동일한 애그리거트지만, 물리적으로는 다른 애그릭더트 객체 이다. 운영자 스레드가 주문 애그리거트 객체의 배송 상태를 변경했는데, 고객이 그 사이에 배송지 정보를 변경 --> 애그리거트의 일관성이 깨진다. 이를 보완하는 트랜잭션 처리 기법이 필요! 1. 선점(Pessimistic) 잠금 - 먼저 애그리거트를 구한 스레드가 사용이 끝날 때까지 다른 스레드가 해당 애그리거트를 수정하는 것을 막는다. 한 스레드가 애그리거트를 구하고 수정하는 동안 다른 스레드가 수정할 수 없으므로, 동시에 데이터를 수정하는 충돌 문제 해결 가능 선점 잠금 방식은 DBMS가 제공하는 행 단위 잠금을 사용해서 구현한다. LockModeType.PESIMISTIC_WRIT..

애그리거트는 관련된 객체를 하나의 군으로 묶어준다. 애그리거트를 이용하여 모델 간의 관계를 개별 수준뿐만 아니라 상위 수준에서도 이해가능하다. 일관성을 관리하는 기준이 되기도 한다. 애그리거트 관련된 모델을 하나로 모은 것 동일한 라이프 사이클 Order가 생성되면, OrderLine, ShippingInfo등 애그리거트에 속한 구성 요소는 대부분 함께 생성하고 소멸된다. 애그리거트는 경계를 가진다. 경계의 설정은 도메인 규칙, 요구사항이 중요하다. 하지만, 'A가 B를 갖는다'고 가정한다면 A와 B를 한 애그리거트로 묶어서 생각하기 쉽다. 그러나 그렇지 않다. Product - Review같은 경우는 함께 생성되거나 변경되지 않고, 변경주체도 다르다. 애그리거트 루트 구매할 상품의 개수를 변경하면, O..

네 개의 영역 표현 영역 사용자의 요청을 받아 응용 영역에 전달 응용 영역의 처리 결과를 다시 사용자에게 전달 도메인 영역 도메인 모델 구현 Order, OrderLine 등이 도메인 모델 영역에 위치한다. Entity, Value Object 인프라스트럭처 영역 구현 기술 RDB, SMTP, Queue 계층 구조 아키텍쳐 도메인의 복잡도에 따라 응용과 도메인을 분리하기도 하고, 합치기도 한다. 계층 구조는 상위 계층에서 하위 계층으로만 의존하고, 역으로는 발생하지 않는다. 응용 영역과 도메인 영역은 DB나 외부 시스템 연동을 위해 의존하나, 응용에서 도메인을 무조건 의존 할 필요는 없다. 결국, 표현 - 응용 - 도메인 계층은 모두 인프라스트럭처에 의존하게 되고, 별도의 외부 기술(가격 할인 등)과 같..

도메인 "서점" 도메인 회원, 주문, 결제, 배송 하위 도메인 존재 도메인 모델 패턴 사용자 인터페이스, 표현 계층 사람, 외부 API 등 에게 요청을 받고, 정보를 보여줌 사용자의 세션을 관리 응용 계층 비즈니스 로직 X 각 도메인 계층에 업무를 위임하고, 이를 조합하여 실행 도메인 계층 비즈니스 로직 인프라 스트럭쳐 계층 RDB SQS, MQTT API Q ) 새로운 요구사항 출고 전에 배송지를 변경 할 수 있다. 주문 취소는 배송전에 할 수 있다. 이 2가지 요구사항을 각각 출고 서비스, 주문 서비스, 배송 서비스에서 구현을 해도 할 수는 있지만, 유지보수가 어렵고 한 쪽에서 정책이 바뀐다면 모든 코드를 다 확인해야 한다. public class Order { private OrderState st..