기록하기

[디프만 13기] 인프런 강의 수강 일기 본문

Server/아키텍처

[디프만 13기] 인프런 강의 수강 일기

jjungdev 2023. 4. 30. 11:48

디프만 13기 SERVER 파트에 참여하게 되었다🥳

 

초반에는 팀 별로 같이 아이디어 회의를 통해 기능을 도출하는 시간이기 때문에 SERVER 파트끼리는 사용해보고 싶은 기술 스택이나 아키텍처에 대해 이야기를 나눌 시간이 주어졌다.

 

이번에 우리 팀에서는 헥사고날 아키텍처를 경험해보고 싶다는 의견과 + 그 내부적인 도메인을 DDD 로 설계하고 싶다는 의견이 나왔다. 그리고 멀티 모듈을 활용하여 설계를 하고 싶다는 의견을 같이 더하여 결국 하고 싶었던 것, 공부해보고 싶었던 것 다 해보자! 라는 결론이 나오게 되었다.

 

 하고 싶은 거 다 해보기! 그러나 DDD 어떻게 설계해야 복잡성이 좀 줄어들 수 있을까?

 

필자는 레이어드 아키텍처만 경험을 해보고 헥사고날, DDD 를 제대로 경험한 적이 없었다. 또한 멀티 모듈도 흔히 common 모듈이 비대해지는 문제를 명확하게 해결해 본 적이 없었다..

다른 팀원들의 경우에는 헥사고날이나 DDD 에 대해 설계 및 스터디 경험이 있었으나 여전히 어려움이 있다고 말해주어 이번에 디프만 13기에서 지원해준 인프런 쿠폰을 활용하여 강의를 구매하여 공부를 진행하게 되었다.

 

디프만 노션 배너를 스크린샷 해왔다ㅎ

 

여러 강의들 중에 우리 팀이 선택한 강의는 이 강의이다.

왼쪽 강의도 고민이 되었으나, DDD 내용을 더 다룬 것은 오른쪽이라고 판단하여 이 강의로 결정하게 되었다.

 

강의 후기

먼저 후기를 말씀드리자면, 현재 miro 를 통해 이벤트 스토밍을 실습해보면서 강의를 수강중인데 여전히 Aggregate, Bounded Context 개념이 어렵게 다가오는 것 같다.

 

여기서 Aggregate 란 아래의 설명과 같다.

- 엔티티를 의미하며,
- Aggregate Root 를 통해 다른 엔티티 및 VO 에 접근할 수 있다.
- 비대해지는 것을 경계하여 작게 설계를 해야하고, 하나의 일을 잘 수행할 수 있는 작은 Aggregate 로 분리해야 한다.

- Aggregate 단위도 마이크로 서비스가 될 수 있으며,
- 한 Aggregate 에서 다른 Aggregate 의 참조는 식별자를 통해서만 참조해야한다.

 

이를 통해 도메인 주도 설계는 의존관계가 적어야 독립적으로 설계가 가능하게 됨을 알 수 있다.

또한 아래의 용어에 대한 설명도 추가로 정리해보고자 한다.

 

  • Ubiquitous Language : 비즈니스 도메인에 관련된 용어, 정확하고 일관, 도메인 내에서 공통적으로 사용하는 언어
  • Bounded Context : 맥락의 경계, 모델의 경계, 도메인 간의 경계
  • Context Map : 바운디드 컨텍스트 간의 접점

 

설명만 정리하려니 잘 이해가 안 되어.. miro 실습 결과를 같이 공유해보고자 한다.

 

도서 대여 프로그램이라는 하나의 예시를 바탕으로 같이 이벤트 스토밍을 진행했는데, 물론 이 내용만으로는 모든 것을 이해하기는 어렵지만 같이 따라해보니 회원이 다른 도메인에서는 대여자, 연체자가 될 수도 있고 크게 회원, 도서, 대여의 도메인으로 묶을 수도 있음을 알게 되었다. 

 

이 강의를 듣고 팀원들과 스터디를 진행하여 현재까지 진행된 아이디어로 이벤트 스토밍을 진행할 예정인데 위 그림을 좀 더 디벨롭 시켜서 같이 도메인을 나누면 더 개념이 명확해질 것 같다.

 

또한 강의 내용 뿐만 아니라 강의 내용에서 추천해주신 책을 같이 스터디하면서 진행하면, 아주 정확한 DDD + 헥사고날 아키텍처 설계는 어려워도 우리 팀만의 아키텍처를 만들어 볼 수 있을 거라고 기대한다.