Как построить шлюз API GraphQL на основе Python и службу федерации для микросервисов Django?

У меня есть набор микросервисов Django, каждый из которых предоставляет API GraphQL. В настоящее время я использую Apollo Server с Apollo Federation для объединения всех подграфов в один суперграф. Однако я столкнулся с несколькими ограничениями:

  1. Некоторые расширенные функции Apollo не бесплатны.

  2. Команда 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, но стоит ли это усилий, когда у вас есть так много вариантов с хорошей системой плагинов?

Вернуться на верх