Как построить шлюз API GraphQL на основе Python и службу федерации для микросервисов Django?
У меня есть набор микросервисов Django, каждый из которых предоставляет API GraphQL. В настоящее время я использую Apollo Server с Apollo Federation для объединения всех подграфов в один суперграф. Однако я столкнулся с несколькими ограничениями:
Некоторые расширенные функции Apollo не бесплатны.
Команда
rover
(используемая для создания суперграфа из подграфов) требует подключения к Интернету, что не идеально для моей установки.
Я хочу создать пользовательское решение на Python (используя Flask, Django или аналогичное), которое может служить как API-шлюзом, так и сервисом федерации GraphQL. Цель - агрегировать все подграфы и создать суперграф, не полагаясь на проприетарные инструменты Apollo.
Кто-нибудь реализовал подобное решение или может предложить фреймворки, библиотеки или стратегии для достижения этой цели? Любые советы по созданию шлюза и работе с GraphQL federation в Python будут очень признательны.
Я ищу возможность создать индивидуальное решение на Python (используя Flask, Django или аналогичное)
На сегодняшний день существует несколько альтернативных GraphQL-шлюзов (бесплатных), проверьте, насколько они совместимы со спецификацией Apollo Federation: https://the-guild.dev/graphql/hive/federation-gateway-audit
Я бы сказал, что сложно создать свой собственный шлюз из-за сложности спецификации Apollo Federation и буквально 0 библиотек, которые помогут вам его создать. Когда я говорю, что это сложно, я имею в виду это, просто посмотрите на тесты, которые я создал для аудита (они с открытым исходным кодом).
Потенциально вы можете использовать планировщик запросов Apollo (на JavaScript, но скоро и на Rust) для создания плана запроса, который вы будете выполнять на Python, но стоит ли это усилий, когда у вас есть так много вариантов с хорошей системой плагинов?