Yelp β . 30 . , 5 . . Yelp Cassandra. , Cassandra Day Russia 2021 , Database Reliability Engineer Yelp.
Cassandra β NoSQL. , distributed wide-column NoSQL datastore. Cassandra writeβ, consistency .
, , Cassandra Yelp. . MySQL Cassandra. MySQL , Cassandra . , .
:
- : , . , . , .
- Cassandra. β Cassandra- host port, . , - .
- , , .
Cassandra Yelp
90 , 60 Kubernetes- 500 ( β Cassandra).
, Read Load β 600 . RPS , Write Load β 400 RPS. .
Yelp . , . , - batch-, -, Cassandra - Cassandra.
- Cassandra. Cassandra , - ; Cassandra caching- distributed tracing β Yelp, , ( ).
, .
Cassandra : us-east us-west.
, us-east us-west, multi region cluster. us-east, , us-west.
( Kubernetes) Kubernetes-. β Cassandra: , , - CPU . , , , β . , .
, , , , . , , . etcd. Etcd β distributed key-value store.
AWS, EBS volumes β Amazon Elastic Block Storage. Kubernetes, .
, Smartstack, Envoy.
Yelp (Schema Changes)
: (schema), , β . Cassandra node , , , Cassandra, , - (, - ), Cassandra , β , .
, , , , , , , Jira-.
. : Alter Table . , , . . , , . , . , , - , ?
- , -, , , , , Cassandra, , , , butch-, . . : development, staging, production, , production , development.
β , . , -, , .
, , , Database Reliability, . , SQL-, , , : , , , , , - .
. , , . , , - , , . β . - SQL statement .
. Yelp pushplan β , , - . . , . , , pushplan. pushplan- Cassandra.
, Yelp. keyspace Cassandra, pushplan dev-, , utility- , pushplan. pushplan, , : Jira-, , , keyspace, . SQL-.
SQL-. , , create table. «» pushplan, ⦠, , SQL-.
, , . , , β . , .
, , .
, : ID, , , .
-. - DRE , , .
, , pushplan. , dev, stage prod. , . , . - , , . , .
:
- SQL-. , , . , , .
- DRE- best practices. , , primary key; - 20 pushplan β . .
.
Cassandra
, Cassandra : Cassandra- Cassandra-.
. , Cassandra, web application .
Cassandra- , , Cassandra- : host-, . , - , Cassandra, β . , .
, proxy-, Apollo. Python, Cassandra-.
. -, , Cassandra, host port, , Cassandra. . β host port Apollo.
SmartStack, , Apollo. host port, : Β« ApolloΒ», SmartStack .
, .
β , , DRE, Cassandra-. , , Cassandra, , scale up scale down , , . .
proxy- .
Apollo-. , , - , , .
: β . Query-. . , , , .
, β -β¦ , - 140 40 . 60 . -. , , 60 integration-, . .
, select-, .
, , GET_REVIEWS, , , SQL- .
unit-, swagger spec, β end point API Apollo, fake data β end-to-end .
, ( pushplan) , , . , . , - , , . Apollo , : , . .
, - , Apollo, :
- . .
- Cassandra-, , .
, Stargate. Open Source , DataStax. API . .
Cassandra-, , , . , , β . , consistency requirements, , .
Stargate. Stargate Cassandra- . : β¦ , Stargate . : , , , . proxy Stargate.
, Stargate⦠Cassandra, , API . REST API, gRPC, WebSocket GraphQL.
GraphQL API.
GraphQL
Stargate Cassandra schema β , key space , GraphQL-. : Type-safe API. GraphQL over under fetching. : . , Apollo. Cassandra- . , , - .
GraphQL API development . , Facebook ( ), Twitter, Github. Yelp GraphQL.
, . , , - Yelp. , MVP ( Stargate ) β , Yelp.
Stargate
Apollo, Stargate : ( node), Cassandra- , β 100 , 3 . RPS 24 . ? : Cassandra ? ?
, 24 3 . RPS.
rage of latencies , . (high tail) (99.9+), spite.
, Stargate :
- , , CPU , . high tail latencies, JVM, Stargate .
- , , Stargate.
Client libraries
, , ? : http-, REST-. .
swagger spec β endpoint, . API endpoint β GraphQL/{keyspace}. keyspace GraphQL-. : swagger spec Client Libraries.
, , Client Libraries , , , , , , .
, Stargate-. Client Library, GraphQL Query .
:
- Service Discovery ( , host port).
- request budget. , , - Yelp 2 . , 100 . , -.
- distributed tracing β , .
- : , , 200 .
GraphQL Playground
Playground β development environment, . GraphQL, Playground. Stargate out of the box. IDE, /graphqlschema, Cassandra-, GraphQL Queries.
: , , .
Operability
Operability, Stargate, , , Yelp-. β Distributed Tracing Integration. β , - Stargate. , Loadβ¦ , , CPU, β¦
Stargate Cassandra-, property, Cassandra- . ( - ) TLS .