예.. 어그로 죄송합니다 제목의 당신은 바로 저였습니다.
이번주차는 설계와 문서화가 메인입니다.
코치님이 말씀해준 것 중에 뇌리에 깊게 박힌 내용이 있어요.
여러분들 설계 안하고 코드 먼저 작성한다고 할 때 어떻게 하시나요?
클래스 한 개 만든 뒤, 필드 하나 넣었다.. 뺐다.. 이게 맞나? 이거 하시죠?
이게 코드를 작성하는 건가요?
아니죠? 오히려 설계를 하고 있는거죠!
네.. 충격 많이 먹었습니다.
[들어가기 전]
다음 용어가 무엇인지 알고, 설명할 수 있나요?
깃허브 프로젝트를 이용해 마일스톤을 만들었다.
음.. 이쁘다!
머메이드를 이용해 시퀀스 다이어그램을 그렸다. 원래는 d2를 이용하려 했는데, 깃허브 마크다운에서 지원한다해서 사용했다!
혹시 그런 고민 안해봤나요?
"시퀀스 다이어그램에 어디까지 그려야하지.."
위 질문에 대한 답은 코치님들도 모두 달랐지만, 내가 동의한 결론은 모든 도메인을 포함시키자 였다!
그럼 개발할 때 공수가 줄어든다 😁
이 또한 머메이드를 이용해서 그렸다.
크게 다음과 같이 구성된다.
OpenAPI Spec이라는 것을 이용해서, yaml
파일을 먼저 작성해 만들었다.
이 API 언제 뽑혀요?.. 테스트 해봐야 하는데..
를 안들을 수 있다.이거 API 왜 업데이트 안했어요?
, 이거 저번에 XX 하기로 하지 않았어요?
프로젝트를 계속 진행하며 날 괴롭히고 오해한 DDD
의 개념이 하나 있다.
바로 DDD의 어그리게이트 루트
이다.
DDD
에서 어그리게이트 루트
는 한 도메인의 진입점이자, 모든 수행을 관장하는 뿌리다.
모든 서비스와 요청은 어그리게이트 루트
를 DB에서 불러와서 처리한다.
예를 들자면
Order order = orderRepository.findById(1L);
order.changeOrder(new Order(...));
한 도메인의 어그리게이트 루트는 한 개이고, 한 개의 엔티티로 관리된다.
라고 이해하면서 한 도메인 내의 모든 JPA 엔티티를 @Embeddable
, @ElementCollection
을 이용하여 관리하려고 노력했다.
근데 이게 틀렸다.
왜냐하면 DDD의 엔티티
는 JPA의 엔티티
와 다르기 때문이다.
이 문제를 코치님께 여쭤봐서 깨달았다. 같은 용어라도 다른 컨텍스트라면 다른 개념이다.
혹시 [들어가기전]의 답변이 궁금하신가요!?
글을 읽다보니 '아..! 나도 저거 알아야하는데!' 하진 않으신가요?!
여기까지 글을 읽으셨다면, 아마 항해 플러스 과정에 관심있으신 분이라고 생각합니다.
궁금한 점이 있으시다면 저에게 편하게 댓글 남겨주세요!
혹은 highestbright98@naver.com
으로 메일을 남겨주셔도 굉장히 빨리 답변한답니다!
항해 플러스 백엔드에 관련해서 궁금하신점이 있다면 언제든 편하게 말씀주세요!
그리고 글이 도움됐다면, 등록하실때 제 추천인 코드 [9MPLfu] 입력하면,
20만원 할인의 혜택이 있답니다! (물론 저에게도 혜택이 있습니다! 😉)