2

이 기사 (https://docs.microsoft.com/en-us/dotnet/standard/microservices-architecture/microservice-ddd-cqrs-patterns/ddd-oriented-microservice)에서 설명한대로 DDD 지향 마이크로 서비스 아키텍처에서 생각하고 있습니다. 하지만 데이터 액세스 및 엔티티에 대해 의심 스럽습니다.DDD 지향 마이크로 서비스에서 인프라 및 엔터티는 재사용 할 수 있습니까?

도메인 엔티티와 데이터 액세스를 공통 프로젝트 또는 너겟에 넣는 것이 합리적일까요? 왜냐하면 나는 각 서비스에 대해 동일한 데이터 액세스를 여러 번 다시 작성할 것이라고 생각하기 때문입니다.

답변

2

상관없이 당신이 DDD 여부를 사용하는 경우, SOA의 네 가지 원칙은 다음과 같습니다

  • 서비스가 명시 적 경계를
  • 서비스는 자율적
  • 서비스 클래스가 아닌 스키마와 계약을 공유
  • 있습니다
  • 정책에 따라 상호 운용되는 서비스

이러한 결과는 서비스가 끈기를 공유하지 않는다는 것입니다.

서비스 경계가 바운드 컨텍스트와 어떻게 조화되는지에 대한 논의가 있지만 간단하게 시작할 수 있고 일대일 정렬을 시작할 수 있으며 바운드 컨텍스트는 계약을 사용하는 것보다 다른 방식으로 지속성을 노출하지 않는 것도 있습니다 .

3

TL : DR : 아니오.

마이크로 서비스는 API를 사용하여 서로 이야기해야합니다.

두 가지 이유 : 집계 뿌리로

  • 마이크로 서비스는 명확 트랜잭션 경계를 정의합니다. 코드를 재사용한다는 것은 잠재적으로 사전 조건, 사후 조건 및 불변의 확인을 피하는 지름길을 취하는 것을 의미합니다.
  • 두 번째로, 코드 공유를 사용하면 모델에 변경 사항을 모든 종속 마이크로 서비스와 통합하여 잠재적으로 마이크로 서비스 채택의 목적을 무력화 할 수 있습니다. 다른 API 버전을 사용하면 점진적으로 관리 할 수 ​​있습니다.