Les programmeurs aiment les bonnes histoires, alors j'espĂšre que le voyage de cinq ans vers une API composite utilisant GraphQL dans un environnement de production (au maximum de 110 requĂȘtes par seconde Ă 100 ms de latence) sera intĂ©ressant.
[Si vous vous dĂ©pĂȘchez, proskrolte ci-dessous pour les leçons et jetez un Ćil Ă l'open source graphql-schema-registry ]
, 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?
Quant au monde extérieur, j'espÚre qu'Apollo avec son projet Constellation accélérera le traitement d'une demande de Rust afin qu'il n'y ait pas de taxe de performance de 10% et puisse fédérer des services graphql sans modifications majeures de ce dernier.
C'est le moment idĂ©al pour profiter du dĂ©veloppement lĂ oĂč il y a beaucoup de complexitĂ©!