Der Weg zu Federated GraphQL

Bild von dgraph.io
Bild von dgraph.io

Programmierer lieben gute Geschichten, daher hoffe ich, dass die fünfjährige Reise zu einer zusammengesetzten API mit GraphQL in einer Produktionsumgebung (mit maximal 110 Anforderungen pro Sekunde bei einer Latenz von 100 ms) interessant sein wird.

[Wenn Sie sich beeilen, gehen Sie weiter unten zu den Lektionen und werfen Sie einen Blick auf die Open-Source- Graphql-Schema-Registrierung. ]

Schema-Registrierung mit Beispiel-Testschema
Schema-Registrierung mit Beispiel-Testschema

, Pipedrive ( 2020 10 ), REST API . /users/self, , , 30 . PHP , . , .

/ users / Selbstverteilung der Latenz für den verbleibenden Datenverkehr
/users/self

, .

, graphql.

3-4 , , , - - elixir graphql. MySQL Pipedrive /graphql.

, , - CRUD, .

2019, , GraphQL stitching graphql-compose REST API. , , - graphql .

:

2019, , Apollo , . , Core, .

, POST gateway .

graphql - . , Protobuf Thrift, GRPCOData.

, graphql (insights, teams) , ( User). typescript + relay , .

.

, - API ? ? Gateway - ? .

, - , - . Confluent’s schema-registry  Atlassian’s Braid, , Java, .

3 :

  • ( ) 15%. REST /graphql

  • 30%. graphql .

  • (- )

, , .. .

Netzwerkanforderungen beim Laden der Web-App
-

:

Dienstleistungen, an denen gearbeitet werden soll

schema-registry , , (swagger, typescript, graphql, avro, proto). .

Gateway schema-registry . frontend autocomplete .

, graphql , , .

/users/self - ? (!). - , .

( 2020), - 13% 25% (- ), UI Datadog.

, - REST.

- ( 600+ ), - . IOS- Android- graphql .

60 , -

? , .

Mark Stuart, Paypal Engineering

Apollo studio    . gateway.

Unser schriftliches Schema-Validierungs-Toolkit

, - , - . opensource - graphql-schema-registry.

- Pipedrive. , DC . , , , ?

graphql gateway . , gateway .

, gateway , - . Apollo studio - .

, Apollo , .. . .

, ( -) . . Gateway schema-registry /schema/compose , .

schema-registry ,

Registrierung des Systems zu Beginn des Dienstes

REST Graphql API, , REST.

REST

REST graphql, openapi-to-graphql, .

- , , ? REST .

, REST API , .

REST API . , - deal.pipeline_id. graphql, ,

json-. , REST _, .

ein zusammengeschlossenes Pipedrive-Datendiagramm (links) mit 2 Diensten (von 539) und ein noch nicht zusammengeschlossenes Leads-Dienstdiagramm (rechts)
Pipedrive () 2 ( 539) -- leads ()

CQRS

Pipedrive TTL-.

, , . , . 3 .

- PHP-, nodejs ( monograph), memcached. -. , .

CQRS pattern. , 80% .

Durchschnittliche Antwortlatenzzeit von Monolith (links) und Graphql-Gateway (rechts) in der US-Region basierend auf NewRelic
() graphql gateway () US NewRelic

- . , - . - , identity. .

Identity , kafka, monograph . , ( 1 ), . , - .

APM - . Datadog .

, 30 memcached. . memcached 10, , 220. , - mcrouter. , 20 .

- , getMulti . resolver' , 5 debounce .

. graphql gateway . , .

28 30 , 500, .

graphql , /graphql . 3-5 , ( debounce FE )

, - (APM) tracing:true, .

700 300 . , ( performance.now()), .

graphql gateway  Chrome DevTools, , .

  .

, graphql . /graphql ( vendors.js) . , - - .

- graphql    gql . bundle, fetch. , - - . server-side-rendering service workers .

Wrap / Graphql-Abfrage links
/graphql

graphql , . , , rate limit .

graphql-cost-analysis , , - , , ( , , CPU, ). gateway schema-registry. .

js/typescript . graphql .

koa-graphql  apollo-server-koa GraphQLSchema . apollo/server :

buildFederatedSchema([{typeDefs, resolvers}])

, , gql , schema.graphql , ,  ASTNode ( parse / buildASTSchema)

canary

- .

, graphql 100 -"". 1000 , 1%, 10%, 30%, 50% .

company ID . , - , graphql . - graphql .

, , ( ), .

- graphql , - , , . - .

graphql API , API. OAuth ( ) .

schema-registry , gateway - , , , (persisted query), .

, go, - GRPC - , graphql , gateway. GRPC - , graphql msgpack?

Was die Außenwelt betrifft, hoffe ich, dass Apollo mit seinem Constellation-Projekt die Bearbeitung einer Anfrage für Rust beschleunigen wird, sodass keine 10% ige Leistungssteuer anfällt, und dass Graphql-Dienste ohne größere Änderungen an letzterer zusammengelegt werden können.

Im Allgemeinen eine großartige Zeit, um die Entwicklung zu genießen, bei der es viel Komplexität gibt!




All Articles