Cassandra en Yelp

imagen







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







:







  1. : , . , . , .
  2. Cassandra. — Cassandra- host port, . , - .
  3. , , .


Cassandra Yelp



90 , 60 Kubernetes- 500 ( — Cassandra).







, Read Load — 600 . RPS , Write Load — 400 RPS. .







imagen







Yelp . , . , - batch-, -, Cassandra - Cassandra.







- Cassandra. Cassandra , - ; Cassandra caching- distributed tracing — Yelp, , ( ).







, .







Cassandra : us-east us-west.







imagen







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







— , . , -, , .







imagen







, , , Database Reliability, . , SQL-, , , : , , , , , - .







. , , . , , - , , . — . - SQL statement .









. Yelp pushplan — , , - . . , . , , pushplan. pushplan- Cassandra.







, Yelp. keyspace Cassandra, pushplan dev-, , utility- , pushplan. pushplan, , : Jira-, , , keyspace, . SQL-.







imagen







SQL-. , , create table. «» pushplan, … , , SQL-.







imagen







, , . , , — . , .







imagen







, , .







imagen







, : ID, , , .







imagen







-. - DRE , , .







, , pushplan. , dev, stage prod. , . , . - , , . , .







imagen







:







  • SQL-. , , . , , .
  • DRE- best practices. , , primary key; - 20 pushplan — . .


.







Cassandra



, Cassandra : Cassandra- Cassandra-.







. , Cassandra, web application .







imagen







Cassandra- , , Cassandra- : host-, . , - , Cassandra, — . , .







imagen







, proxy-, Apollo. Python, Cassandra-.







imagen







. -, , Cassandra, host port, , Cassandra. . — host port Apollo.







imagen







SmartStack, , Apollo. host port, : « Apollo», SmartStack .







, .







— , , DRE, Cassandra-. , , Cassandra, , scale up scale down , , . .







proxy- .







Apollo-. , , - , , .







: — . Query-. . , , , .







imagen







, — -… , - 140 40 . 60 . -. , , 60 integration-, . .







, select-, .













, , GET_REVIEWS, , , SQL- .







unit-, swagger spec, — end point API Apollo, fake data — end-to-end .







imagen







imagen







, ( pushplan) , , . , . , - , , . Apollo , : , . .







, - , Apollo, :







  1. . .
  2. Cassandra-, , .


, Stargate. Open Source , DataStax. API . .









Cassandra-, , , . , , — . , consistency requirements, , .







imagen







Stargate. Stargate Cassandra- . : … , Stargate . : , , , . proxy Stargate.







imagen







, Stargate… Cassandra, , API . REST API, gRPC, WebSocket GraphQL.







imagen







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.







imagen







rage of latencies , . (high tail) (99.9+), spite.







imagen







, Stargate :







  1. , , CPU , . high tail latencies, JVM, Stargate .
  2. , , Stargate.


Client libraries



, , ? : http-, REST-. .







swagger spec — endpoint, . API endpoint — GraphQL/{keyspace}. keyspace GraphQL-. : swagger spec Client Libraries.







imagen







, , Client Libraries , , , , , , .







, Stargate-. Client Library, GraphQL Query .







imagen







:







  1. Service Discovery ( , host port).
  2. request budget. , , - Yelp 2 . , 100 . , -.
  3. distributed tracing — , .
  4. : , , 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 .








All Articles