바운디드 컨텍스트 바운디드 컨텍스트란 특정 도메인 모델의 경계를 나타내는 개념입니다. 한 개의 바운디드 컨텍스트는 논리적으로 하나의 모델을 갖습니다. 또한 바운디드 컨텍스트는 용어를 기준으로 컨텍스트를 분리할 수 있습니다. 예를들어 사람을 회원 도메인에서는 회원이라 표현하지만 주문 도메인에서는 주문자, 배송 도메인에서는 배송자라고 표현합니다. 이렇게 각각의 도메인마다 사용하는 용어가 다르기 때문에 각 모델은 명시적으로 구분되는 경계를 가져서 섞이지 않도록 해야합니다. 만약 도메인 모델이 섞이기 시작한다면 모델의 의미가 약해질뿐 아니라 여러 도메인이 서로 얽히기 때문에 요구사항을 반영하기 힘들고 확장하기 어려운 구조가 됩니다. 바운디드 컨텍스트 모델의 경계 이상적으로 하위 도메인과 바운디드 컨텍스트가 일대..
표현 영역과 응용 영역 표현 영역은 사용자의 요청을 해석합니다. 사용자에의해 웹 브라우저로부터 받은 요청은 표현 영역에 전달되며 이 표현 영역은 URL, 파라미터, 쿠키, 헤더 등의 정보를 이용해서 사용자가 실행하고자 하는 기능을 판별합니다. 응용 영역은 사용자가 원하는 기능을 제공하는 영역입니다. 응용 영역은 표현 영역으로부터 데이터를 받아 사용자가 원하는 기능을 실행합니다. 응용 서비스의 역할 응용 서비스는 사용자가 요청한 기능을 실행합니다. 응용 서비스는 사용자의 요청을 처리하기 위해 리포지터리에서 도메인 객체를 가저와 사용합니다. 응용 서비스의 로직이 복잡하다면 도메인 로직의 일부를 구현하고 있을 가능성이 높으며 이로 인해 코드 중복, 로직 분산으로 인한 낮은 응집도를 가질 수 있습니다. 또한 응..
JPA를 이용한 리포지터리 구현 애그리게이트를 어떤 저장소에 저장하느냐에 따라 리포지터리를 구현하는 방법이 다릅니다. 해당 파트에서는 자바의 ORM 표준인 JPA를 이용해서 리포지터리와 애그리게이트를 구현합니다. 💡 모듈 위치 리포지터리 인터페이스는 애그리게이트와 함께 도메인 영역에 속하며 리포지터리를 구현한 구현 클래스는 인프라 영역에 속합니다. 팀 표준에 따라 리포지터리 구현 클래스를 domain.impl과 같은 패키지에 위치시킬 수 잇지만 이것은 인터페이스와 구현체를 분리하기 위한 타협안이지 좋은 설계가 아니라고 합니다. 💡 리포지터리의 기본 기능 구현 인터페이스는 애그리게이트 루트를 기준으로 작성하며 애그리게이트를 조회하는 기능의 이름을 지을 때 특별한 규칙은 없지만 보통 findBy(프로퍼티 값..
애그리게이트 💡 상위 수준의 관점 애플리케이션을 개발할 때 상위 수준의 개념을 이용해 전체 모델을 정리하면 전반적인 관계를 이해하는데 도움이 됩니다. 💡 개별 객체 수준의 관점 개별 객체의 관계가 복잡해지면 개별 구성요소 위주로 이해하게 되며, 전반적인 구조나 상위 수준에서 도메인 관계를 파악하기 힘들어집니다. 도메인 요소 간의 관계를 파악하기 힘들다는 것은 코드를 변경하고 확장하는데 어려워진다는 것을 의미합니다. 💡 애그리게이트 수준의 관점 복잡한 도메인을 이해하고 관리하기 쉬운 단위로 만들기 위해서는 상위 수준에서 모델을 바라볼 수 있는 방법이 필요한데 그 방법이 애그리게이트입니다. 수 많은 객체를 애그리게이트 단위로 묶어서 표현하면 상위 수준에서 도메인 모델 간의 관계를 파악할 수 있습니다. 애그리..
- Total
- Today
- Yesterday
- polling publisher spring boot
- 공간 기반 아키텍처
- JDK Dynamic Proxy와 CGLIB의 차이
- spring boot redisson destributed lock
- space based architecture
- pipe and filter architecture
- spring boot redis 대기열 구현
- redis sorted set
- java userThread와 DaemonThread
- spring boot redisson 분산락 구현
- spring boot excel download oom
- 레이어드 아키텍처란
- 람다 표현식
- spring boot 엑셀 다운로드
- spring boot redisson sorted set
- microkernel architecture
- redis sorted set으로 대기열 구현
- 트랜잭셔널 아웃박스 패턴 스프링 부트 예제
- 서비스 기반 아키텍처
- @ControllerAdvice
- pipeline architecture
- spring boot poi excel download
- spring boot excel download paging
- redis 대기열 구현
- service based architecture
- 트랜잭셔널 아웃박스 패턴 스프링부트
- java ThreadLocal
- 자바 백엔드 개발자 추천 도서
- transactional outbox pattern
- transactional outbox pattern spring boot
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |