MicroSQL 아키텍처 내에서 GraphQL이 가장 적합한 위치를 이해하려고합니다.GraphQL 및 마이크로 서비스 아키텍처
API 게이트웨이로 작동하는 단 하나의 GraphQL 스키마 만 있으면 대상 마이크로 서비스에 대한 요청을 프록 싱하고 응답을 강제로 적용하는 것에 대해 몇 가지 논쟁이 있습니다. 마이크로 서비스는 여전히 통신 사고에 REST/Thrift 프로토콜을 사용합니다.
또 다른 방법은 마이크로 서비스마다 하나의 GraphQL 스키마를 여러 개 가지는 것입니다. 요청의 모든 정보 + GraphQL 쿼리를 사용하여 대상 마이크로 서비스에 요청을 라우팅하는 더 작은 API 게이트웨이 서버가 있습니다.
1 접근, 우리는 API 게이트웨이 측면에 따라 GraphQL 스키마를 변경해야를 할 때마다 당신이 당신의 microservice 계약 입력/출력을 변경 단점을 것 API 게이트웨이로 1 GraphQL 스키마를 갖는
.
2 접근
GraphQL 스키마 정의를 적용하기 때문에 방법으로 의미를, microservices 당 여러 GraphQL 스키마를 사용하고, 소비자가 microservice에서 주어진 입력/출력을 존중해야됩니다.
질문
어디 GraphQL에게 microservice 아키텍처를 설계에 적합한 맞춤를 찾을 수 있습니까?
가능한 GraphQL 구현으로 어떻게 API 게이트웨이를 설계 하시겠습니까?
+1 https://nordicapis.com/7-unique-benefits-of-using-graphql-in-microservices/ 질문에 대답하기위한 연구 중 독서의 아주 짧은 비트에 기반합니다. 나는이 대답이 OP 질문을 더 잘 처리한다고 생각한다. –
@helfer : 이것은 정말로 의미가 있습니다 :) 감사합니다. 나는이 화려한 대답 위에 몇 가지 질문을 가지고있다. - GraphQL을 API 게이트웨이로 사용해야한다는 말입니까? - REST 또는 GraphQL 끝점을 노출하는 ** Order ** Microservice가 있다고 가정 해 봅니다. 일단 내가 끝내면, 마이크로 서비스가 공개 할 정확히 동일한 데이터를 반영하도록 기본 GraphQL 스키마를 업데이트해야합니까? 독립성을 유지해야하는 마이크로 서비스 문화에서 중복되거나 멀어지고 있다고 생각하지 않습니까? 마이크로 서비스에 대한 변경 사항은 주 GraphQL 스키마에 반영/복제되어야합니까? – Fabrizio
@Fabrizio GraphQL의 좋은 점은 백엔드 REST API가 변경된 경우에도 REST 서비스가 이전에 노출 한 데이터를 가져올 수있는 한 GraphQL 스키마가 그대로 유지 될 수 있다는 것입니다. 더 많은 데이터를 노출하는 경우이를 처리 할 표준 방법은 기존 스키마에 새 필드/유형을 추가하는 것입니다. GraphQL을 만든 Facebook의 사람들은 4 년 만에 스키마 변경을 한 번도 해 본 적이 없다고 말했습니다. 그들이 만든 모든 변경 사항은 새로운 클라이언트가 새로운 기능을 사용할 수 있다는 것을 의미하며, 기존 클라이언트는 계속 작동 할 것입니다. – helfer