Я работал с GraphQL и микросервисами
Исходя из моего опыта, мне подходит комбинация обоих подходов в зависимости от функциональности / использования, у меня никогда не будет единого шлюза, как в подходе 1 ... но я буду использовать graphql для каждого микросервиса как подход 2.
Например, основываясь на изображении ответа от Enayat, в этом случае я хотел бы иметь 3 шлюза графика (не 5, как на рисунке)
Приложение (продукт, корзина, доставка, инвентарь, необходимые / связанные с другими услугами)
Оплата
пользователь
Таким образом, вам нужно уделить дополнительное внимание дизайну необходимых / связанных минимальных данных, предоставляемых различными сервисами, такими как токен авторизации, идентификатор пользователя, платежное состояние, статус платежа
Например, по моему опыту, у меня есть шлюз «Пользователь», в котором GraphQL у меня есть пользовательские запросы / мутации, вход в систему, вход, выход, изменение пароля, восстановление электронной почты, подтверждение электронной почты, удаление учетной записи, изменение профиля, загрузка изображения и т. д. сам по себе этот график довольно большой !, он разделен, потому что в конце другие службы / шлюзы заботятся только о получающейся информации, такой как идентификатор пользователя, имя или токен.
Этот способ легче ...
Масштабирование / отключение различных узлов шлюзов в зависимости от их использования. (например, люди могут не всегда редактировать свой профиль или платить ... но поиск товаров может использоваться чаще).
Когда шлюз созревает, растет, использование известно или у вас есть больше опыта в области, вы можете определить, какие части схемы могут иметь собственные шлюзы (... случилось со мной с огромной схемой, взаимодействующей с git-репозиториями Я отделил шлюз, который взаимодействует с репозиторием, и увидел, что единственной информацией, необходимой для ввода / связанной информации, был ... путь к папке и ожидаемая ветвь)
История ваших репозиториев более понятна, и у вас может быть репозиторий / разработчик / команда, предназначенная для шлюза и задействованных микросервисов.
ОБНОВИТЬ:
У меня есть кластер kubernetes онлайн, который использует тот же подход, который я описываю здесь со всеми бэкэндами с использованием GraphQL, все с открытым исходным кодом, вот основной репозиторий:
https://github.com/vicjicaman/microservice-realm
Это обновление к моему ответу, потому что я думаю, что лучше, если ответ / подход - это резервное копирование кода, который выполняется и с которым можно ознакомиться / просмотреть, я надеюсь, что это поможет.