전체 글
-
TIL 171일 - 이뮤터블 클래스 장점공부/개발 전체적인 2022. 6. 18. 18:01
이뮤터블 클래스? 한번 객체로 생성되면 필드의 값이 바뀌지 않는 클래스를 의미한다. 장점? 사이드 이팩트를 줄여준다. Order라는 주문정보를 가지는 클래스가 있고, 이 클래스의 필드 중에 총 주문액을 가지는 필드가 있다고 하자. 그리고 Order 클래스의 멤버 변수로, detailOrder라는 금액과 관련된 정보들을 가지는 클래스가 있다고 하자. Order 객체가 생성될 때 생성자 args로 들어간 detailOrder의 정보에 의해 총 주문 금액 필드가 12000원이 되었을 때, 이뮤터블 객체가 아니라서 detailOrder의 금액과 관련된 정보들이 바뀐다면? 객체의 일관성이 깨지게 된다. /* DDD 관점에서 봤을 때 Order라는 애그리거트 루트가 정합을 지켜주지 못하는 상황이라고 볼 수 있을 듯..
-
TIL 169일 - DDD, Transaction 어노테이션공부/개발 전체적인 2022. 6. 16. 23:39
뜬금없지만... 음... DDD, TDD 이런 것들은 공부를 하더라도 한 순간에 습득이 되는 공부는 아닌 거 같다. 몰랐던 사실이 아니긴 하지만 그래도 한번 더 생각이 들었다. 실제 도메인 모델의 엔티티와 DB 관계형 모델의 엔티티는 같은 것이 아니다. 표현 영역(Presentation) 사용자가 전송한 데이터 형식이 올바른지 검사한다. 사용자가 전송한 데이터를 application service가 요구하는 형식으로 변환해서 전달한다 Application Service 도메인 모델을 이용해서 기능을 구현한다. 도메인의 상태를 변경하므로 변경 상태가 물리 저장소에 올바르게 반영되도록 트랜잭션을 관리해야 한다. 애그리거트 도메인 규칙에 따라 함께 생성되는 구성요소는 한 애그리거트에 속할 가능성이 높다. 애그..
-
TIL 167일 - 복잡한 행동을 하는 REST API의 네이밍은 어떻게...?공부/개발 전체적인 2022. 6. 15. 00:02
REST API는 자원과 method를 통해 해당 API가 어떤 동작을 하는지 알 수 있다. GET /users/{id} 위 같은 API는 id와 동일한 유저 데이터를 가져오고 PUT /users/{id} 위 같은 API는 바디 리퀘스트에 담긴 값을 사용해서 id와 동일한 유저의 데이터를 수정할 것으로 예측할 수 있다. 그런데 어떤 user에게 임시 비밀번호를 발급을 한다고 하고, 이메일이나 핸드폰으로 임시 비밀번호를 보내준다면? 이런 행동은 어떻게 정의할 수 있는거지? 뭐하는 서비스인지 정확히는 모르지만 아래 서비스에서는 email 전송을 아래처럼 표현하고 있다. POST /email POST /email/batch (여럿에게 보내기) https://postmarkapp.com/developer/use..
-
TIL 166일 - DDD카테고리 없음 2022. 6. 13. 22:28
엔티티와 밸류 엔티티는 식별자(id)가 있다. 밸류는 이뮤터블 하다.(고로 setter가 없다? 없어야 한다?) 도메인 모델에서는 public setter를 사용하지 않는 것이 좋다.(private은 괜찮음 공통적인 validation 가능) application 계층에서 infrastructure 계층 코드를 사용할 일이 있다면? 의존성을 역전시킨다. 중간에 인터페이스를 하나 둬서, 양 계층이 인터페이스를 바라보도록 만든다. 하위 기능을 추상화한 인터페이스는 고수준 모듈에위치해야 한다. 도메인 영역의 주요 구성요소 엔티티 - 고유의 식별자를 가짐, 라이프 사이클을 가짐, 도메인 모델의 데이터를 포함 밸류 - 개념적으로 하나인 값 애그리거트 - 연관된 엔티티와 밸류를 하나로 묶은 것 레포지토리 - 도메..