nuQLeus - это новый инструмент разработки с открытым исходным кодом, который позволяет разработчикам предоставлять метрики производительности на уровне преобразователя из API-интерфейсов GraphQL, работающих на express-graphql или apollo-server. С помощью nuQLeus разработчики могут отправлять запросы и изменения в GraphQL API, просматривать ответ и быстро определять, какие конкретные функции преобразователя наиболее негативно влияют на производительность приложения.

GraphQL Landscape

В последние годы GraphQL изменил то, как разработчики управляют потоком информации между лицевой и внутренней частью приложений. В потоке данных HTTP традиционно преобладала архитектура RESTful; однако выпуск Facebook GraphQL в 2015 году перевернул почти повсеместное внедрение архитектуры RESTful с ног на голову. Многие разработчики теперь предпочитают развертывать API с реализацией GraphQL, а не с архитектурой RESTful. GraphQL предлагает множество преимуществ по сравнению с традиционной альтернативой RESTful, в том числе: поддержка рекурсивных запросов, декларативных структур данных, гарантия того, что в ответе возвращаются только запрошенные данные, и бесшовная интеграция нескольких микросервисов и других внешних API в единую унифицированную конечную точку.

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

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

Резолверы - это функции, которые собирают (или разрешают) данные для заданного запроса или мутации. Тестирование производительности GraphQL API требует внимания к его решателям, которые часто являются источником проблем, связанных с производительностью. Здесь на помощь приходит nuQLeus.

Что такое NuQLeus

nuQLeus (выпущенный в бета-версии 0.1.0) - это инструмент разработки с открытым исходным кодом, предназначенный для помощи разработчикам в выявлении проблем с производительностью GraphQL путем отслеживания путей преобразователя и визуализации времени ответа. Инструмент предназначен для использования как на новой, так и на существующей кодовой базе; Для начала установите пакет nuQLeus npm, оберните пакет nuQLeus вокруг схемы GraphQL и посетите localhost:3030/nuqleus, чтобы получить доступ к графическому интерфейсу nuQLeus. Для более подробной процедуры установки обратитесь к read-me на GitHub nuQLeus (ссылка внизу страницы). Инструмент разработчика в настоящее время доступен как для реализации express-graphql, так и для реализации apollo-server, с целью в будущих версиях поддержки большего количества реализаций сервера GraphQL в Node.js.

Целевая аудитория

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

Будущее

В настоящее время nuQLeus находится в стадии бета-тестирования, и есть что добавить! Основные сложные цели включают в себя следующее:

  • Включите поддержку дополнительных реализаций движка graphql, таких как graphql-yoga и graphql-helix.
  • Добавить поддержку трассировки для подписок на graphql
  • Включите дополнительные визуализации релевантной информации, которая может оказаться полезной для пользователей.
  • Настроить систему хранения истории для вводимых пользователем данных и результатов
  • Разрешить сравнения между прошлыми и настоящими запросами и изменениями

Для всех заинтересованных, пожалуйста, загляните в Github и отправьте PR! Ждем ваших комментариев и отзывов!





Авторы