TL; DR-서비스간에 POJO 라이브러리를 공유해도 되나요?
일반적으로 우리는 가능한 경우 서비스 간 공유를 없음으로 엄격하게 제한하고 싶습니다. 데이터를 공유하는 서비스가 클라이언트가 사용할 클라이언트 라이브러리를 제공해야하는지에 대한 논쟁이있었습니다. client-lib는 일반적으로 서비스 클라이언트가 선택적으로 사용할 수 있으며 client-lib를 사용하든 대체 언어를 사용하든 라이브러리 등의 일반적인 측면을 사용하든 API를 사용할 수 있습니다.
필자의 경우-데이터 객체를 만드는 서비스라고 생각합니다. 이 개체가 PET라고 가정합니다. 데이터베이스 엔터티는 아니지만 기본 데이터를 암시 적으로 나타내는 POJO입니다. 이 POJO는 API가 정의한 것입니다. 애완 동물-연령, 체중, 이름, 소유자, 주소, 종 등
서비스 1 -PetKeeper : 어떤 이유로 든 애완 동물을 생성하고 모든 데이터를 유지하며 애완 동물을 얻거나 애완 동물을 수정하기 위해이 서비스를 참조해야합니다. 이 서비스에 대한 API 호출.
서비스 2- 애완 동물 접근 자 :이 서비스는 애완 동물을 모으고 유효성 검사를 수행합니다.
서비스 3,4- 더 많은 중간 서비스 요청
서비스 5- 사용자 인터페이스
이것들은 매우 임의적이지만 요점은 간단합니다. UI 또는 일부 사용자 대면 서비스는이 "PET"개체를 어떤 식 으로든 제시하려고합니다. 필요한 정보를 수집하고 릴레이를 시작하는 서비스에 도달 할 때까지 서비스를 호출하는 서비스를 호출하는 서비스를 API를 통해 호출해야합니다. 마지막으로 UI 서비스에는 표시 할 PET 개체가 있습니다.
이것은 매우 일반적입니다. 그러나 절대적인 사고 방식으로 모든 서비스에서 PET 개체를 복제했습니다. DRY (반복하지 마십시오) 원칙은 서비스 내부의 코드에만 적용되며 여러 서비스에 적용되지 않지만 요점은 여전히 있습니다. 필드를 추가하면 ... 각각 POJO의 5 개 서비스를 수정해야합니다.
-또는-API의 일부 포조를 포함하는 Pet-Objects-Library를 제공 할 수 있으며 각 서비스는 라이브러리에서 가져 오기 / 의존성을 가질 수 있습니다. 서비스 자체에는 의존하지 않고 일반 라이브러리 만 있습니다. 각 서비스가 동일한 유형의 개체를 가지며 업데이트가 더 쉬워 지도록이 아이디어가 마음에 듭니다. 그러나 나는 하나님의 대상에 대해 걱정하고 있습니다.
프로 / 콘은 무엇입니까-최고의 디자인은 무엇입니까? 분리 된 상태를 유지하면서 동일한 POJO 클래스 반복을 최소화하기 위해 서비스간에 데이터를 전달하기 위해 무엇을 했습니까?