마이크로 서비스와 관련하여 서비스의 개발 수명 주기도 독립적이어야합니다. *
다른 SLDC 및 다른 개발 팀
실제 MS 시스템에는 하나 이상의 서비스를 담당하는 생태계 개발과 관련된 여러 팀이있을 수 있습니다. 이 팀들은 서로 다른 사무실, 도시, 국가, 계획에 위치 할 수 있습니다. 아마도 그들은 서로를 알지 못해 지식이나 코드를 공유하는 것이 매우 어렵습니다 (가능한 경우). 그러나 이것은 공유 코드가 일종의 공유 추론을 의미하기 때문에 매우 편리 할 수 있습니다. 특정 팀에 적합한 것이라도 다른 팀에 대해 그것을 만들 필요가 없다는 점을 기억해야합니다. 예를 들어, DTO Customer가 주어지면 고객 은 서비스마다 다르게 해석 (또는보기) 되기 때문에 사용중인 서비스에 따라 다를 수 있습니다 .
다른 요구, 다른 기술
또한 격리 된 SLDC를 통해 팀은 필요에 가장 적합한 스택을 선택할 수 있습니다. 특정 기술로 구현 된 DTO를 적용하면 팀의 선택 능력이 제한됩니다.
DTO는 비즈니스 규칙이나 서비스 계약이 아닙니다.
실제로 어떤 DTO입니까? 한 쪽에서 다른쪽으로 데이터를 이동하는 것 외에 다른 목표가없는 일반 개체. 게터와 세터의 가방. 전혀 지식이 없기 때문에 재사용 할 가치가있는 "지식"이 아닙니다. 그들의 휘발성은 또한 커플 링의 나쁜 후보가됩니다.
Dherik의 말과 달리 서비스가 다른 서비스를 동시에 변경하지 않고도 DTO를 변경할 수 있어야합니다 . 서비스 는 관대 한 독자, 관용 작가 및 내약성 이어야 합니다 . 그렇지 않으면 서비스 아키텍처가 의미가없는 방식으로 연결됩니다. Dherik의 답변과는 달리, 세 개의 서비스에 정확히 동일한 DTO가 필요한 경우 서비스 분해 중에 문제가 발생한 것 같습니다.
다른 사업, 다른 해석
서비스간에 교차 개념이있을 수 있지만 모든 서비스가 동일한 방식으로 해석하도록 강제 모델을 적용해야한다는 의미는 아닙니다.
사례 연구
우리 회사에 고객 서비스 , 판매 및 배송 부서가 있다고 가정 해 봅시다 . 이 릴리스들 각각에 하나 이상의 서비스가 있다고 가정하십시오.
고객 서비스는 도메인 언어 로 인해 고객 이 개인 인 고객 개념을 중심으로 서비스를 구현합니다 . 예를 들어 고객 은 이름 , 성 , 연령 , 성별 , 이메일 , 전화 등 으로 모델링됩니다 .
이제 영업 및 배송 은 각 도메인 언어에 따라 서비스를 모델링합니다. 이러한 언어에서는 고객 개념이 나타나지만 미묘한 차이가 있습니다. 그들 에게 고객 은 (필수적으로) 사람 이 아닙니다 . 들어 판매 , 고객은이다 문서 번호 신용 카드 및 청구 주소 에 대한, 배송 전체 이름 과 배송 주소를 너무가.
우리가 강제하는 경우 판매 및 배송 의 표준 데이터 모델을 채택하는 고객 서비스 , 우리는 그들이 전체 표현을 유지하고 유지해야하는 경우 불필요한 복잡성을 도입 끝낼 수 있었다 불필요한 데이터를 처리하도록 강제하는 고객 과 동기화 된 데이터를 고객 서비스 .
관련된 링크들
* 이 아키텍처의 장점은 다음과 같습니다.
proto
gRPC 용 파일 또는avro
Kafka 용 스키마를 공유하고 두 서비스 모두에서 DTO를 생성하는 것은 좋지만 두 프로젝트간에 공유 라이브러리는 공유하지 않습니다.