Shopify, mierząc się z wyzwaniami skalowalności API, zidentyfikowało narzut związany z resolverami pól jako kluczowe wąskie gardło w swoich implementacjach GraphQL.
W odpowiedzi na ten problem, firma opracowała Cardinal – innowacyjny silnik wykonawczy, który znacząco przyspiesza przetwarzanie dużych zapytań, redefiniując podejście do optymalizacji wydajności.
Kluczowe możliwości silnika Cardinal
Cardinal to silnik wykonawczy GraphQL działający w trybie breadth-first, co stanowi odejście od tradycyjnego przetwarzania pole po polu. Zamiast indywidualnego przetwarzania każdego pola, Cardinal grupuje i przetwarza całe zestawy obiektów w ramach jednego zakresu.
- Eliminacja narzutu resolverów: Zidentyfikowany jako pierwotne wąskie gardło, a nie operacje I/O.
- Znaczący wzrost wydajności: Oszczędność ponad 4 sekund w przypadku dużych zapytań (P50).
- Przetwarzanie breadth-first: Optymalizuje wykonanie poprzez grupowanie zestawów obiektów.
- Kompromis w obsłudze błędów: W zamian za masowy wzrost przepustowości na ścieżce sukcesu, silnik rezygnuje z granularności błędów dla pojedynczych elementów.
Kontekst technologiczny i rynkowy
Współczesne aplikacje, bazujące na API, często napotykają wyzwania związane z wydajnością i skalowalnością, zwłaszcza w przypadku złożonych zapytań do rozproszonych systemów. GraphQL, choć oferuje elastyczność w pobieraniu danych, może generować znaczny narzut, jeśli jego implementacja nie jest odpowiednio zoptymalizowana. Problem narzutu resolverów, zidentyfikowany przez Shopify, jest powszechny w systemach o dużej złożoności danych i intensywnym ruchu. Rozwiązania takie jak Cardinal wskazują na rosnącą potrzebę innowacji w obszarze silników wykonawczych API, które muszą sprostać rosnącym wymaganiom użytkowników i biznesu w zakresie szybkości i efektywności dostarczania danych.
Materiał opracowany przez redakcję BitBiz na podstawie doniesień rynkowych.

Dodaj komentarz