Grammarly Work Note 2023-05-25
Experiments Team's Goal is to...
- Make experiments easy
- Make experiments consistent
flowchart TB
me["Me using Grammarly"]
expui["Experimentation UI"]
me-->feclient
feclient["Front-end Client"]
beclient["Back-end Client"]
feclient-->beclient
subgraph SDK
direction LR
jssdk["JS SDK"]
javasdk["Java SDK"]
end
feclient<-->jssdk;
beclient<-->javasdk;
subgraph "Experiments (Manakin)"
direction TB
private["Private API"]
public["Public API"]
treatmentserver["Treatment Server"]
assignmentserver["Assignment Server"]
experimentbeservice["Experiment Back-end Service"]
dynamodb["DynamoDB"]
end
experimentbeservice --Redis--> treatmentserver
experimentbeservice --> dynamodb
jssdk <--> public
javasdk <--> private
public<-->treatmentserver
private<-->treatmentserver
treatmentserver --Kafka--> assignmentserver
assignmentserver--Redis-->treatmentserver
assignmentserver-->dynamodb
treatmentserver --> dynamodb
expui --> experimentbeservice
subgraph Datalake
databricks["Databricks"]
gnar["GNAR"]
end
assignmentserver-->Datalake
databricks-->Datalake
feclient-->Datalake
beclient-->Datalake
- GNAR is the single source of truth that logs all of the relevant data. Grammarly is trying to move away from GNAR to Databricks.
- Manakin has 4 versions:
Dev,QA,Preprod, andProd. and must be the same, and whereas Dev and QA is relatively free to tamper with data.
