inflearn logo
강의

講義

知識共有

トビーのクリーン・スプリング - ドメインモデルパターンとヘキサゴナルアーキテクチャ Part 1

Splearn ドメインモデル作り (1)

Domain Expert가 정확히 어떤 역할을 하는 사람인가요?

224

counterchord89

投稿した質問数 14

0

도메인 모델을 만들기 위해서는 Domain Expert에게서 듣고 배워야 한다고 말씀하셨는데, 이들의 정확한 역할이 잘 이해가 가지 않습니다.

온라인 서점을 예로 들자면 제 머리속에 상상되는 Domain Expert는 실제 서점을 운영하는 사장님이 떠오르는데 강의에서는 회사에서 해당 일을 오랫동안 해 오신 분이나, 관련된 시스템을 개발해 본 경험이 있는 시니어 개발자 같은 사람을 Domain Expert라고 말씀 주셨습니다.

그렇다는건 Domain Expert 라는 역할은 이 회사가 개발하고 있는 서비스를 가장 잘 알고 있는 사람 (그것이 개발자가 되었든, 디자이너, po와 같은 비 개발자가 되었든)이라고 이해해도 되는 것일까요?

java spring spring-boot jpa 리팩터링 ddd

回答 1

0

tobyilee

안녕하세요.

예전에는 소프트웨어를 개발해서 적용하는 업무 영역과 대상, 즉 도메인이 시스템을 개발하기 이전에 이미 존재했고, 비즈니스가 동작하던 경우가 대부분이었죠. 그 시절에는 보통 IT 부서 외의 실무 업무와 구조, 비즈니스를 잘 알고 있는 사람을 도메인 전문가라고 불렀습니다.

그런데 인터넷 기반의 비즈니스들이 등장하고 발전하면서 이제 소프트웨어 개발자들도 비즈니스에 대해서 처음부터 이해하고, 여러 업무와 의사 결정에 참여하기도 하면서 회사에서 일을 오래 해온 개발자가 도메인 전문가로서 충분한 지식을 가지고 있는 경우도 많이 있죠. 그 분들이 도메인 전문가로서의 역할도 해낼 수 있습니다. 아직 시작한지 얼마 안 된 스타트업의 경우도 마찬가지죠.

그런데 도메인 중심의 소프트웨어 개발팀에서 도메인 전문가는 단순히 업무에 대한 지식과 경험이 많기만 해서는 안 됩니다. 도메인에 익숙하지 않은 개발자들과 적극적으로 소통하면서 자신의 경험과 지식을 도메인 모델로 만들어가는데 적극적으로 참여하고, 개발 기간 내내 꾸준한 협업을 지속할 수 있어야 합니다. 또, 보편 언어를 개발자들과 함께 "개발"해나가는 의지도 중요하죠. 원래 현장에서 쓰이던 언어를 그대로 가져오는 것이 보편 언어는 아닙니다. 도메인 모델을 만들고 발전시켜 가면서 모델에 사용되는 언어를 기존에 현업에서 정확하지 않은 의미로 사용해오던 것, 또는 기존에 없던 언어를 새롭게 개발할 수도 있어야 합니다. 그런 작업에도 적극적으로 참여할 수 있어야겠죠. 때로는 개발자들이 좋은 아이디어를 제시하고, 그게 도메인 모델의 보편언어가 되어 도메인 전문가들이 그걸 수용해서 소통하게 되기도 합니다.

결론적으로 질문하신 내용이 맞습니다. 온라인 서비스라면 도메인 자체가 기술로 만들어진 서비스 또는 시스템이기 때문에 그에 대한 이해를 가장 잘 하고 있고, 이걸 기반으로 개발자들과 소통하면서 도메인 모델을 발전시켜나가는 사람이라고 보시면 됩니다.

그런데 규모가 커지면 한 명이 모든 도메인의 영역을 다 자세히 알지 못하는 경우가 있습니다. 또, 현장에서는 업무 부서마다 유사하지만 다른 용어를 쓰기도 하고, 언어가 혼란스러워 지기도 합니다. 이 정도가 되면 좀 복잡한 전략이 필요할 때도 있습니다. 이걸 DDD에서는 전략 패턴이라고 말합니다. 실제로 규모가 큰 조직인 경우 도메인 모델은 하나 이상이 되고, 보편 언어도 그에 따라 여러개가 되기도 합니다. 이건 좀 고급 주제이긴한데, 어쨌든 그런 경우에도 도메인 전문가가 참여하는 것이 필요하겠죠.

 

 

도메인 모델에서 관계와 규칙을 구분하는 방법

0

32

2

헥사고날 아키텍처에서의 배치, 시큐리티, 비동기 이벤트 처리는 어떻게 하나요?

0

108

2

어댑터에서 도메인에 직접 의존하는 경우에 대해

0

110

2

Member 도메인이 PasswordEncoder를 받는 구조 질문 있습니다.

0

98

2

MemberService와 EmailSender 책임 분리에 대한 질문

0

99

2

NonNullApi를 NullMarked로 대체하라고 합니다.

0

120

2

39. 문서와 코드 다듬기 updateInfo 테스트 질문 있습니다.

0

69

2

Repository Adapter 설계에 대해 피드백을 부탁드립니다

0

102

2

헥사고날 part2 강의 출시 예정일 문의 드립니다.

0

242

2

PT 문의사항

0

94

1

초기 어플리케이션 구동 시 compose.yml 파싱 오류

0

145

2

애플리케이션의 JPA 리턴과 도메인 모델

0

123

2

애그리거트 루트의 하위 도메인들의 depth가 깊어질 때 문의

0

131

2

페이징 처리를 해야한다면 어떻게 해야할까요?

0

184

2

애그리거트의 repository

0

114

2

회원 애플리케이션 서비스 테스트 (1)

0

100

2

정적 팩토리 메서드 관련 질문드립니다!

0

101

2

spotbug + @NonNullApi 로만 Null 방어가 될까요?

0

125

2

required 포트에 관해서

0

86

2

혹시 다음 편은 언제쯤 오픈할까요?

0

160

2

서비스 단위 테스트 코드 작성

0

92

2

domain 모듈에 entity를 정의한다고 했을때

0

90

2

여러 엔티티의 조합으로 리포트를 제공해야할 때

0

75

2

Member와 MemberDetail 엔티티를 나누는 기준에 대해

0

79

2