Cara untuk Federated GraphQL

Gambar dari dgraph.io
Gambar dari dgraph.io

Pemrogram menyukai cerita yang bagus, jadi saya berharap perjalanan lima tahun ke API komposit menggunakan GraphQL dalam lingkungan produksi (pada puncak permintaan 110 per detik pada latensi 100 md) akan menarik.

[Jika Anda terburu-buru, proskrolte di bawah ini untuk pelajaran dan lihat open source graphql-schema-registry ]

skema registri dengan contoh skema pengujian
skema registri dengan contoh skema pengujian

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

/ users / self distribution dari latensi untuk lalu lintas yang tersisa
/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 .

  • (- )

, , .. .

Permintaan jaringan saat aplikasi web dimuat
-

:

Layanan untuk bekerja

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.

Toolkit validasi skema tertulis kami

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

- Pipedrive. , DC . , , , ?

graphql gateway . , gateway .

, gateway , - . Apollo studio - .

, Apollo , .. . .

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

schema-registry ,

Pendaftaran skema saat layanan dimulai

REST Graphql API, , REST.

REST

REST graphql, openapi-to-graphql, .

- , , ? REST .

, REST API , .

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

json-. , REST _, .

grafik data Pipedrive federasi (kiri) dengan 2 layanan (dari 539) dan grafik layanan prospek yang belum tergabung (kanan)
Pipedrive () 2 ( 539) -- leads ()

CQRS

Pipedrive TTL-.

, , . , . 3 .

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

CQRS pattern. , 80% .

Waktu latensi respons rata-rata dari monolit (kiri) dan gerbang graphql (kanan) di wilayah AS berdasarkan 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 .

Kueri bungkus / graphql kiri
/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?

Sedangkan untuk dunia luar, saya berharap Apollo dengan proyek Constellation -nya akan mempercepat pemrosesan permintaan Rust sehingga tidak ada pajak kinerja 10% dan akan dapat menggabungkan layanan graphql tanpa perubahan besar pada yang terakhir.

Secara umum, waktu yang tepat untuk menikmati perkembangan di mana ada banyak kerumitan!




All Articles