
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. ]

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

, .
, graphql.
3-4 , , , - - elixir graphql. MySQL Pipedrive /graphql.
, , - CRUD, .
2019, , GraphQL stitching graphql-compose REST API. , , - graphql .
:
. dataloader', N+1 . - .
. , , . - - , - .
, POST gateway .
graphql - . , Protobuf Thrift, GRPC, OData.
, graphql (insights, teams) , ( User). typescript + relay , .
.
, - API ? ? Gateway - ? .
, - , - . Confluent’s schema-registry Atlassian’s Braid, , Java, .
3 :

:

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 , -
Apollo studio . gateway.

, - , - . opensource - graphql-schema-registry.
graphql gateway . , gateway .
, gateway , - . Apollo studio - .
, ( -) . . Gateway schema-registry /schema/compose , .
schema-registry ,


REST Graphql API, , REST.
REST
REST graphql, openapi-to-graphql, .

- , , ? REST .
, REST API , .

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

CQRS
Pipedrive TTL-.
, , . , . 3 .
- PHP-, nodejs ( monograph), memcached. -. , .

CQRS pattern. , 80% .

- . , - . - , 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 .
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!