Eu tenho trabalhado com GraphQL e microsserviços
Com base na minha experiência, o que funciona para mim é uma combinação de ambas as abordagens, dependendo da funcionalidade / uso, nunca terei um único gateway como na abordagem 1 ... mas nether um graphql para cada microsserviço como abordagem 2.
Por exemplo, com base na imagem da resposta de Enayat, o que eu faria neste caso é ter 3 gateways de gráfico (não 5, como na imagem)
Aplicativo (produto, carrinho, remessa, inventário, necessário / vinculado a outros serviços)
Forma de pagamento
Do utilizador
Dessa forma, você precisa dar atenção extra ao design dos dados mínimos necessários / vinculados expostos a partir dos serviços dependentes, como um token de autenticação, ID do usuário, ID do pagamento, Status do pagamento
Na minha experiência, por exemplo, eu tenho o gateway "Usuário", no GraphQL eu tenho consultas / mutações de usuário, login, login, logout, alteração de senha, recuperação de email, confirmação de email, exclusão de conta, exclusão de perfil, edição de perfil, upload de imagem , etc ... este gráfico por si só é bastante grande !, é separado porque no final os outros serviços / gateways se preocupam apenas com as informações resultantes, como ID do usuário, nome ou token.
Desta forma é mais fácil ...
Escale / encerre os diferentes nós de gateways, dependendo do uso. (por exemplo, as pessoas nem sempre estão editando seu perfil ou pagando ... mas a pesquisa de produtos pode ser usada com mais frequência).
Depois que um gateways amadurece, cresce, o uso é conhecido ou você tem mais experiência no domínio, é possível identificar qual é a parte do esquema que poderia ter seu próprio gateway (... aconteceu comigo com um esquema enorme que interage com os repositórios git , Separei o gateway que interage com um repositório e vi que a única entrada necessária / informações vinculadas era ... o caminho da pasta e a ramificação esperada)
O histórico de seus repositórios é mais claro e você pode ter um repositório / desenvolvedor / equipe dedicado a um gateway e seus microsserviços envolvidos.
ATUALIZAR:
Eu tenho um cluster on-line do kubernetes que usa a mesma abordagem descrita aqui com todos os back-ends usando o GraphQL, todos de código aberto, eis o repositório principal:
https://github.com/vicjicaman/microservice-realm
Esta é uma atualização da minha resposta, porque acho que é melhor se a resposta / abordagem tiver um código de backup em execução e puder ser consultado / revisado, espero que isso ajude.