Я не знаю подробностей о ваших услугах, но замечательная схема, которую я успешно использовал в различных проектах, как вы упомянули GraphQL gateway
.
Вы создадите один сервис, я предпочитаю создавать его в Node.js, куда будут поступать все запросы от внешнего интерфейса. Тогда с GraphQL gateway
вы будете запрашивать ваши микросервисы. Это будет в основном ваша единственная точка входа в бэкэнд-систему. Запросы будут аутентифицированы, и вы сможете унифицировать доступ к вашим данным, а также выполнить некоторые оптимизации производительности, такие как реализация кэширования и пакетирования загрузчика данных для смягчения проблемы N + 1. Кроме того, вы уменьшите сложность использования нескольких API и сможете использовать все преимущества GraphQL.
В моем последнем проекте у нас было 7 различных интерфейсов, и каждый использовал один и тот же GraphQL gateway
, и я был очень доволен нашим подходом. Определенно, есть некоторые недостатки, так как вам нужно синхронизировать все свои интерфейсы и GraphQL gateway
, поэтому вам нужно больше знать о ваших критических изменениях, но это можно решить, например, с помощью директивы deprecated
и путем выполнения сине-зеленого развертывания с кластером Кубернетес.
Другой вариант - создать так называемый бэкэнд для внешнего интерфейса в GraphQL. Сейчас у меня нет достаточной информации, какое решение будет лучшим для вас. Вы должны решить, основываясь на потребностях вашего внешнего интерфейса и бизнес-сфере, но обычно я предпочитаю шлюз GraphQL, так как GraphQL обладает большой гибкостью, а необходимость настраивать ваш API для внешнего интерфейса покрывается возможностями GraphQL. Надеюсь, это поможет Дэвид