WIL

반응형

원래 정해진 형식때로 작성했었는데 생각해보니 그럴 필요까지는 없을거 같다는 생각이 든다.
아무튼
이번엔 DDD에 대해 학습을 하였다. 대략적으로 도메인에 대해 학습할 수 있었던 시간이었던거 같다.
저번주 화욜인가 수욜인가 멘토링을 끝나고 도메인이 어떤건지 고민을 해보았고
그것을 같은 팀원분들께 공개 한적이 있었다.

방금 확인했는데 수욜날 멘토링을 했었군요 암튼

제가 어제 멘토링 끝나고 고민해봤는데요..
도메인은 '재료'로 비유할 수 있을 거 같아요.
예를 들어, 계란국을 요리한다고 했을때,
계란,물이 도메인이라는 생각이 들었어요.
도메인에서 서로 통신 하면 안된다는건
재료의 순수성을 해치면 안된다는 걸로 이해가 되어집니다.
이를 잘 알 수 있는 방법으로 계란과물을 합쳤을때 새로운 단어인 A로 바꿀 수 있다면
A라는 도메인으로 치환이 된다고 생각했어요.
즉, A 안에 물과 계란이 있는거죠..
하지만 실제로는 물과 계란은 하나로 합칠 수 없습니다. 합치는 순간 새로운 무언가가 될거고
두개는 더 이상 물과 계란이 아니기 때문이죠..
아까 제가 계란국을 요리한다고 말했었는데 이 요리하는 과정이 application계층이라는 생각이 들었습니다.
application계층에서 물 도메인과 계란 도메인을 가져와서 합쳐주는 과정을 말하는거 같습니다.
그러면 인프라스트럭쳐는 뭐냐라고 한다면,
외부에서 준비를 해야 되는 것들이라고 생각해요.
지금 계란과 물이 있는데 계란국을 만들려면 냄비가 필요한데
집에 냄비가 없다면 두개를 합칠 수 있는 공간이 없는거잖아요.
결국 냄비를 마트에서 구매해야할거고 그걸 인프라스트럭쳐라고 부르는거 같아요.
또, DTO가 레이어마다 다르게 사용해야 된다는 말은 제가 생각했을때,
요리 시작전에는 순수한 물과 계란 이었지만,,
요리가 된 이후(application)는 어찌되었든 계란과 물인거잖아요.
근데 불려지는 말이 달라졌고,
결국 우리 앞에 (controller)왔을땐, 더 이상 물과 계란은 아니죠..
DTO가 달라져야 한다는건 이런거 같아요,  도메인의 변화하는 상태라고 생각이 되어지고
도메인 계층과 application 계층은 1:1일 필요는 없다고 생각합니다.

요렇게 한번 끄적여 봤다. 도메인이 뭔지 유비쿼터스가 뭔지 그래도 어렴풋이 나마 이제는 알거 같다.
기존에는 도메인과 어플리케이션은 1:1관계로만 생각했었다.
근데 생각해보니 아닌거 같다.

왜냐하면
도메인에는 포인트,주문,결제,재고,상품이 존재하고 상품하위에 재고가 존재한다고 해서
어플리케이션에도 그렇게 존재할 필요는 없었다.
즉, 도메인에는 상품 -> 재고 이지만 
실질적으로 어플리케이션으로 활용될때는 결제 -> 재고,포인트가 존재할 수 도 있다.
그러니까 내가 하고 싶은 말은 도메인과 어플리케이션은 동등하게 바라보는건 잘못된 방향으로 느껴진다.

이런식으로 생각하니 어느정도 답이 보이기 시작한거 같다.
그래도 아직은 잘 모르는거 투성인거 같다.
하위로 들어가면 어그리게이트라던지, 바운디드라던지 걔네는 아직 감이 잡히지 않는 상태라.. 어떻게 말할 수 있지는 않을거 같다.

사실 DDD에서 어려운건 DDD자체도 있지만 유비쿼터스 언어로 이해하는것도 쉽지 않는다고 생각한다.
뭔가 자연스럽게 메소드명을 작성하고 그걸 자연스럽게 읽히는게 유니쿼터스 언어라고 생각이 드는데
일단 계속해봐야 알수도 있을거 같다는 생각이 든다.

다음주는 동시성에 관한 시간이다. 생각보다 쉽지 않을거 같고
이번장은 구현보다는 뭔가 학습에 시간이 더 쓸거 같다라는 느낌적인 느낌이 든다.

아자아자!!!~~~


댓글

Designed by JB FACTORY