Мы взяли интервью у Дэвида Норта и Марко Лиси, вице-президента и технического директора компании Sticker Mule. Они уже год используют GraphQL в качестве шлюза производственного API и поделились с нами своим опытом и советами 🔮

Как вы используете GraphQL в Sticker Mule?

Мы используем GraphQL для нашего шлюза API, который предоставляет единую конечную точку, через которую наш интерфейсный код может получать данные из нескольких сервисов. Шлюз извлекает данные для разрешения запросов с помощью gRPC.

Какие библиотеки GraphQL вы используете?

Шлюз - это Node - мы используем express-graphql. И мы используем Apollo Client в наших одностраничных приложениях. Недавно мы также начали использовать GatsbyJS, который зависит от GraphQL для получения всех данных.

Как вы решили перейти на GraphQL?

Изначально мы пробовали GraphQL при извлечении основной службы из нашего монолита. Причина выбора заключалась в том, что у API этой службы было много разных клиентов, у каждого из которых были очень разные требования к данным. Открывая все через GraphQL, эти клиенты могут выбирать только то, что им нужно. Позже мы осознали больший потенциал GraphQL в качестве интерфейса нашего шлюза, где он позволил бы нам моделировать все наши сервисы и их отношения в виде единого графа и позволить клиентам шлюза извлекать данные из нескольких сервисов с помощью одного запроса.

Как ваша команда изучила GraphQL?

Мы начали с чтения официальной спецификации, руководств и сообщений в блогах. Чтение книги сейчас - глоток свежего воздуха - все сжато и структурировано в одном ресурсе.

Какие пожелания у вас есть по поводу GraphQL?

Интересная проблема, с которой мы сталкиваемся с нашим шлюзом, заключается в том, что с единой конечной точкой GraphQL для всех запросов очень сложно установить конкретное ограничение скорости, фильтрацию и мониторинг. Это может привести к тому, что клиенты будут запрашивать сложные данные, которые переводятся в неоптимизированный запрос в серверных службах.

Что вы посоветуете другим, переходящим на GraphQL?

Установите всеобъемлющий стандартный стиль для своей схемы, прежде чем начинать реализовывать слишком много, чтобы избежать несогласованности по мере ее роста.

Вы нанимаете? 😄

Действительно! Вот наша страница карьеры ☺️

Спасибо Дэвиду и Марко за то, что поделились своим опытом! Что касается ваших пожеланий, мы рекомендуем Apollo Server - переключение с express-graphql должно быть довольно безболезненным, и в нем есть пара вещей, которые могут вам помочь. Поскольку у вас нет общедоступного API (только клиенты, которые вы создаете, используют его), вы можете настроить белый список запросов. (Общедоступные API могут делать что-то как Github, вычисляя стоимость каждого запроса.) А для мониторинга GraphQL API Apollo Engine - лучший инструмент!