마이크로 서비스 아키텍처를 사용하는 스프링 부트 애플리케이션이 있다고 가정하자. 각 서비스에는 고유 한 도메인 모델이 있지만 각 서비스는 사용자 도메인 개체를 참조해야합니다. 이 문제를 해결하는 가장 좋은 방법은 무엇입니까? 각 서비스마다 userId 만있는 것이 더 좋으며 필요한 경우 사용자 서비스에 사용자 세부 정보를 요청하거나 모든 마이크로 서비스에 대해 공유 도메인 라이브러리를 갖는 것이 더 좋습니까?
마이크로 서비스 아키텍처를 사용하는 스프링 부트 애플리케이션이 있다고 가정하자. 각 서비스에는 고유 한 도메인 모델이 있지만 각 서비스는 사용자 도메인 개체를 참조해야합니다. 이 문제를 해결하는 가장 좋은 방법은 무엇입니까? 각 서비스마다 userId 만있는 것이 더 좋으며 필요한 경우 사용자 서비스에 사용자 세부 정보를 요청하거나 모든 마이크로 서비스에 대해 공유 도메인 라이브러리를 갖는 것이 더 좋습니까?
답변:
확장 성, 느슨한 결합 및 각 서비스를 쉽게 독립적으로 수정할 수있는 이점을 위해 마이크로 서비스를 이용했다면 가능한 한 최대로 유지해야합니다.
전반적인 아키텍처
최선의 접근 방식은 다음과 같습니다.
추가 자료 :
코드 공유
위의 솔루션에 동의하면 사용자 마이크로 서비스 (사용자를위한 캡슐화 도메인 모델)가 있으며 다른 모든 서비스는 동일한 마이크로 서비스의 소비자입니다. 질문은 당신이 원하는지 아는 것입니다.
이 코드 공유 주제에 대해 의견이 분분한 의견 전쟁이 있기 때문에 나는 분명한 입장을 취하지 않을 것이며, 나는 객관적인 입장을 취할 입장에 있다고 생각하지 않습니다. 이미 몇 가지 추가 정보가 있습니다.
그것에 대한 내 자신의 견해는 밀접한 결합을 피하기 위해 사용자 공급자와 사용자 소비자 사이에 코드를 공유해서는 안된다는 것입니다. 그러나 강력한 버전 관리 기능이있는 경우 소비자간에 사용자 소비 코드를 공유해야합니다. 이 방법에는 몇 가지 장점이 있습니다.
가능하다면 공유 라이브러리를 피할 것입니다. 각 서비스에 필요한 사용자 속성이 무엇인지 자문 해보십시오. 지원 도메인에는 종종 userId 만 있으면되므로 사용자를 둘러싼 대부분의 동작이 수행되는 핵심 도메인이 종종 있습니다.
서비스가 사용자에 대한 다른 세부 사항을 필요로하는 경우, 몇 가지 제안을 살펴 가지고 여기에 이러한 상황을 처리하는 방법에 대한을