#node.js #mongodb #mongoose #graphql #microservices
#node.js #mongodb #мангуст #graphql #микросервисы
Вопрос:
В разгар разработки Graphql API для нашего приложения мы решили использовать архитектуру микросервисов и приняли решение, что у нас должен быть другой API для платежей (который также будет Graphql API), чтобы мы могли начать с разделения нашего приложения. Мы используем MongoDB для нашей базы данных с Mongoose. Проблема, с которой мы сталкиваемся на данный момент, заключается в том, что для работы с платежами нам нужно было бы получить пользовательские данные, но в нашем платежном API нет моделей Mongoose, с помощью которых мы могли бы запрашивать пользовательские данные. Нам интересно, каков наилучший подход к решению этой проблемы. Копируем ли мы модели, которые нам нужно запросить, из первого API? Что мы здесь делаем не так? Является ли неправильным вообще иметь общую базу данных в архитектуре микросервисов?
Ответ №1:
Вся идея GraphQL заключается в том, чтобы иметь единую конечную точку. Это снижает сложность для «интерфейсных» разработчиков (потребителей API).
Итак, у вас будет служба конечных точек GraphQL, которая управляет доступом к базе данных.
Обычно «микросервисы» имеют свои собственные базы данных.
Вы все равно можете поместить бизнес-логику в микросервисы, но вы бы попросили эти службы связаться с вашей службой GraphQL для доступа к базе данных.
Но если вы подключаетесь к системе с помощью GraphQL API, то вы создаете единую конечную точку.
Чтобы иметь эти дискретные микросервисы, как вы описываете, вы обычно делаете их REST или gRPC для потребителя.