본문 바로가기

DDD7

[도메인주도설계] 2022.06.19 ~ 2022.07.24 네번째 스터디 회고록 [도메인주도설계] 2022.06.19 ~ 2022.07.24 네번째 스터디 회고록 도메인주도설계! 이름하여 DDD 네번째 스터디 회고록 이번 스터디는 조금 규모가 컸다 디자인 패턴 스터디 같이 하는 개발자분이 동생과 도메인주도설계 스터디를 하려는데 참가할 사람을 모집하여 첫 스터디 인원은 총 10명! 그러나 첫 스터디 후 두명이 탈주하여 최종적으로 8명으로 스터디를 마무리하게 되었다. 내가 DDD 라는 개념을 처음 접한건 인프런에서 김영한님의 JPA 강의를 들으면서인데, 사실 이때는 이게 도메인 주도 설계 방법인지 모르고 들었다. 그냥 "엔티티에 비즈니스 로직을 넣는것을 도메인 모델 패턴이라고 하고 서비스에 비즈니스 로직을 넣는것을 트랜잭션 스크립트 패턴이라고 한다. 복잡한 로직은 도메인 모델 패턴을 사.. 2022. 7. 25.
[도메인 주도 개발 시작하기] 07. 이벤트와 CQRS [도메인 주도 개발 시작하기] 07. 이벤트와 CQRS 1. 이벤트 1.1 시스템 간 강결합 문제 쇼핑몰에서 구매를 취소하면 환불 처리를 해야하는데, 이 때 환불 기능을 실행하는 주체는 주문 도메인 엔티티가 될 수 있다. 도메인 객체에서 환불 기능을 실행하려면 환불 기능을 제공하는 도메인 서비스를 파라미터로 받아 실행 할 수 있다. 또는 응용 서비스에서 실행할 수도 있는데, 보통 결제 시스템은 외부에 존재하므로 응용서비스는 외부에 있는 결제 시스템이 제공하는 환불 서비스를 호출한다. 이 때 두가지 문제가 발생할 수 있다. 첫번째로 외부 서비스가 정상이 아닐 경우 트랜잭션 처리에 대한 부분이다. 익셉션이 발생하면 트랜잭션을 롤백 해야 할까? 아니면 일단 커밋해야 할까? 두번째 문제는 성능에 관한 것이다. .. 2022. 7. 23.
[도메인 주도 개발 시작하기] 06. 도메인 서비스 & 도메인 모델과 바운디드 컨텍스트 [도메인 주도 개발 시작하기] 06. 도메인 서비스 & 도메인 모델과 바운디드 컨텍스트 1. 여러 애그리거트가 필요한 기능 도메인 영역의 코드를 작성하다 보면 한 애그리거트로 기능을 구현할 수 없을 때가 있다. 대표적인 예가 결제 금액 계산 로직인데, 실제 결제 금액을 계산할 때는 다음과 같은 내용이 필요하다. 상품 애그리거트: 구매하는 상품의 가격이 필요하다. 또한 상품에 따라 배송비가 추가되기도 한다. 주문 애그리거트 : 상품별로 구매 개수가 필요하다. 할인 쿠폰 애그리거트: 쿠폰 별로 지정한 할인 금액이나 비율에 따라 주문 총 금액을 할인한다. 회원 애그리거트: 회원 등급에 따라 추가 할인이 가능하다. 이 상황에서 생각해 볼 수 있는 방법은 주문 애그리거트가 필요한 데이터를 모두 가지도록 한 뒤 할.. 2022. 7. 16.
[도메인 주도 개발 시작하기] 04. 응용 서비스와 표현 영역 [도메인 주도 개발 시작하기] 04. 응용 서비스와 표현 영역 1. 표현 영역과 응용 영역 잘 만든 도메인이 제 기능을 하려면 사용자와 도메인을 연결해주는 매개체가 필요하다. 응용 영역과 표현 영역이 사용자와 도메인을 연결해 주는 매개체 역할을 한다. 표현 영역은 사용자의 요청을 해석한다. 사용자의 요청을 받은 표현 영역은 URL, 요청 파라미터, 쿠키, 헤더 등을 이용해서 사용자가 실행하고 싶은 기능을 판별하고 그 기능을 제공하는 응용 서비스를 실행한다. 응용 영역에 위치한 서비스는 실제 사용자가 원하는 기능을 제공한다. 응용 서비스의 메서드가 요구하는 파라미터와 표현 영역이 사용자로부터 전달받은 데이터는 형식이 일치하지 않기 때무에 표현 영역은 응용 서비스가 요구하는 형식으로 사용자 요청을 변환한다... 2022. 7. 9.
[도메인 주도 개발 시작하기] 03. 애그리거트 [도메인 주도 개발 시작하기] 03. 애그리거트 1. 애그리거트 - 온라인 쇼핑몰 시스템을 개발할 때 아래와 같이 상위 수준 개념을 이용해서 전체 모델을 정리하면 전반적인 관계를 이해하는 데 도움이 된다. 위의 상위 수준 모델을 개별 객체 단위로 다시 그려보면 아래와 같다. 상위 모델에 대한 이해 없이 개별 객체 단위 수준에서 개념을 파악하려면 더 오랜 시간이 걸린다. 백 개 이상의 테이블을 한 장의 ERD에 표시하면, 개별 테이블 간의 관게를 파악하느라 전반적인 구조나 큰 수준에서의 도메인 간의 관게를 파악하기 어려워져, 코드를 변경하고 확장하는 것이 어려워진다. 복잡한 도메인을 이해하고 관리하기 쉬운 단위로 만들려면 상위 수준에서 모델을 조망할 수 있는 방법이 필요한데, 그 방법이 바로 애그리거트다... 2022. 7. 3.
[빗썸테크아카데미] 아홉번째, 열번째 - MSA 설계 및 생성과제와 나의 인생 첫 PR 날리기 [빗썸테크아카데미] 아홉번째, 열번째 - MSA 설계 및 생성과제와 나의 인생 첫 PR 날리기 아홉번째날, 매주 목요일은 개인 과제시간이라서 수업이 없다 너무 행복한 날 이번 과제는 DDD와 MSA를 이용한 설계를 하고, 해당 설계를 구현체 없이 interface만 구현해서 코드 짜보기였다. domain model 다이어그램을 그려야하는데 인터넷에 뭔가 딱 이렇게 해야합니다! 하는 틀이 없는 것 같아 어떻게 짜야할지 고민을 많이했다. 그래서 목요일날 회사가 끝나고 저녁에 바로 서점에 가서 DDD Start! 로 저자로 유명한 최범균님이 쓰신 이번에 새로 나온 따끈따끈한 2022년판 도메인 주도 개발 시작하기를 읽었다. 다읽기엔 시간이 모자라서 도메인 모델 설계하는 부분을 중점으로 한 세시간정도 보고 왔는.. 2022. 4. 24.
728x90
반응형