inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

Microservice 구현 (with EDA,Hexagonal, DDD)

외부영역: 프레임워크 헥사곤 구현(카프카어댑터) - 도서/회원/Best도서서비스의 Consumers

MSA 구조에서 공통 클래스

900

백린이

작성한 질문수 38

0

강의를 듣다보면, 여러 MS 사용되는 클래스의 경우, 복붙해서 사용하시는데, 실무에서는 여러 MS 사용되는 클래스의 경우 어떻게 처리하나요? MS 서버별로 팀이 다르다고 했을 때에는 복붙으로만 해결되지 않을 수도 있을 것 같아서요!

EDA msa ddd

답변 2

0

han jeong heon

ㅎㅎ 답변을 좀 늦게 확인했더니, AI가 먼저 답변드렸네요.

일반적인 공통 모듈에 대해서는 아래 AI의 답변을 참고하시면 될 것 같고, 제 강의에서 복붙으로 가져다 쓴 클래스를 기준으로 설명드리면 ...2가지 케이스가 있습니다.

첫째는 도메인 모델에서 중복되는 클래스 IDNAME,Item등입니다. 이런 클래스들은 어느정도 프로젝트 내에서 규정화 되어 있기 때문에 공통클래스로 별도의 baseProject로 생성하여 각 마이크로서비스가 참조하여 사용할 수 있습니다. 그렇지만 엄밀히 말하면 대여의 IDNAME과 회원의 IDNAME은 다른 개념으로 봐야 합니다. 왜냐하면 바운디드 컨텍스트 마다 별도의 유비쿼터스 개념이 틀릴 수 있기 때문입니다. 따라서 각 마이크로서비스의 도메인 객체는 특정 모듈에 의존되거나 종속되지 않는 것을 저는 선호합니다. 따라서 복붙했지만 복붙이후에는 그 도메인에 소속되어 별도의 생명주기로 유지보수되어야 합니다.

두번째는 도메인 이벤트를 전달하기 위해 복붙했던 클래스 들입니다. 이 케이스는 도메인 이벤트를 발행하는 마이크로서비스팀의 기준에 따라 의존되어 변경되어야 할 것 같습니다. 상황에 따라 여러 방식이 있을 것 같지만 강의에서 처럼 pub-sub관계라면 pub하는 측의 공지나 정의를 sub하는 측에서 따라야 할 것입니다.

감사합니다.

1

백린이

그 도메인에 소속되어 별도의 생명주기로 유지보수되어야 합니다.

  • 이 말씀이 예를 들어 회원 바운디드 컨텍스트에서는 회원일 수 있지만, 대여 바운디드 컨테스트에서는 (회원 도메인에서 복붙해왔지만) 대여자로 클래스 네이밍을 하는게 좋을 것 같다는 말씀이신거죵?ㅎㅎ

 

0

han jeong heon

네 그래도 좋죠.

0

인프런 AI 인턴

안녕하세요, 백린이님, 인프런 AI 인턴이에요.
MSA 구조에서 공통 클래스를 다루는 방법은 다양합니다. 일반적으로는 공통 클래스를 별도의 모듈 또는 라이브러리로 분리하여 관리하는 방법을 많이 사용합니다. 이렇게 분리된 공통 모듈은 각각의 MS 서버에서 필요할 때마다 참조하여 사용할 수 있습니다.

또한, 다른 MS 서버들과의 통신을 위한 API 인터페이스를 정의하고 공통 클래스를 활용하여 데이터를 교환하는 경우도 있습니다. 이렇게하면 복붙으로 인한 중복코드를 피하고 재사용성을 높일 수 있습니다.

실무에서는 각 팀이 독립적으로 개발하거나 유지 보수를 하기 때문에 공통 클래스를 분리하여 관리하는 것이 일반적입니다. 이를 통해 코드의 일관성과 유지보수성을 높일 수 있습니다. 감사합니다!

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

0

31

2

user-service jwt

0

28

2

애그리거트 질문있습니다!

0

21

2

DDD 는 마이바티스와 잘 맞지 않는건가요?

0

41

1

스프링부트 버전 문의드립니다.

0

31

1

7강에 2분 쪽에 문의 있습니다.

0

13

2

gRPC 실무에서 질문

0

30

2

5강 43초 부분에서 에러가 납니다.

0

20

2

강의보다 바로 여쭤봅니다.

0

72

2

Aggregate 하위에 꼬리를 무는 Entity 는?

0

133

2

헥사곤 아키텍쳐 관련하여 문의드립니다.

2

167

2

VO 클래스의 불변 필드 선언을 하지 않으신 이유?

0

211

2

RentalCard 의 calculateLateFee 메서드 구현이 잘못된 것 같습니다.

1

161

2

UserCase가 많은데... 이유?

0

502

1

음성 부분이 너무 깨지는데...

0

357

1

CQRS 질문 드립니다.

0

360

1

강의 음성 및 영상

0

349

1

domain.model.event에 정의되는 객체들에 대한 질문이 있습니다

0

367

1

수업에 사용한 소스코드 문의

0

595

1

EDA 이해

0

467

1

보상트랜잭션 후 클라이언트 알림 방법 등

0

356

1

@Repository 두 곳에서 사용하시는 이유

0

458

1

Entity와 VO에 대해..

0

764

1

DTO 클래스의 위치에 대해 질문있습니다!

1

759

1