클라이언트가 웹 페이지를 클라이언트에로드하는 데 필요한 데이터를 얻기 위해 클라이언트에서 하나씩 직접 호출해야합니까?
때에 따라 다르지; 그러나 클라이언트에게 직접 사용할 수있는 기능을 제공하고 결과가 어떻게 구성되는지에 대한 세부 정보를 숨기거나 (캡슐화) (예 : 여러 마이크로 서비스를 통해) 제안합니다.
클라이언트가 개별 마이크로 서비스 결과를 결합하는 데 너무 많은 로직이 포함 된 경우, 일부 비즈니스 로직이 클라이언트에 우연히 발생할 수 있습니다. 또한 원하는 것보다 더 많은 내부 아키텍처를 클라이언트에 노출시켜 나중에 마이크로 서비스 리팩토링을 방해 할 수 있습니다.
즉, 마이크로 서비스의 경우, 클라이언트에게 유용한 추상화가있는 엔드 포인트를 제공하고 다른 (아마도 더 내부적 인) 마이크로 서비스의 상위 레벨 조정을 수행하는 랩퍼 마이크로 서비스를 갖는 것이 도움이되는 경우가 있습니다.
(또한 클라이언트 왕복 요금은 마이크로 서비스에서 다른 왕복 요금보다 비쌉니다.)
예를 들어 GraphQL이 취한 방향을 살펴보면 엔드 포인트에 직접 관련 쿼리를 발행하는 클라이언트를 찾을 수 있습니다.이 서비스는 micrservices 컬렉션으로 구현되거나 구현되지 않을 수 있습니다. 마이크로 서비스의 아키텍처는 GraphQL 뒤에 숨겨져 있기 때문에 아키텍처를보다 쉽게 리팩터링하고 클라이언트에게 친숙하게 만들 수 있습니다. 예를 들어 https://stackoverflow.com/a/38079681/471129를 참조하십시오 .