| Global edge, TLS, WAF |
Azure Front Door |
Third party |
Cloudflare, CloudFront, Akamai |
165+ PoPs beat LinkedIn's own 19; LinkedIn reported up to 25% faster median page load after the move. |
ADR-03 |
| Colo traffic tier |
Apache Traffic Server + colo-pinning plugin |
Third party |
Envoy, HAProxy, NGINX |
The lever that drains a colo: re-pin members, and the colo empties. |
ADR-03 |
| Service APIs |
Rest.li (schemas, Protocol Buffers on the wire) |
LinkedIn · open source |
gRPC + Protocol Buffers |
Schema-first resources with compatibility checked in the build. |
ADR-04 |
| Client API |
GraphQL generated from Rest.li schemas |
LinkedIn · open source |
Apollo Federation, per-client BFFs |
Clients shape pages without new endpoints, and the types cannot drift from the services. |
ADR-04 |
| Discovery and load balancing |
D2 (ZooKeeper registry, moving to xDS) |
LinkedIn · open source |
Envoy / Istio xDS, Consul |
No central hop on millions of calls a second. |
ADR-05 |
| Cluster management |
Apache Helix |
LinkedIn · open source |
Kubernetes operators |
Partition placement and failover for Espresso, Venice and Pinot. |
ADR-09 |
| Member identity |
Identity service on sharded MySQL |
This design |
Keycloak, a managed CIAM |
Identity is the front door of a 1.2B-member product and cannot be rented at that scale. |
ADR-06 |
| Service authorization |
Central ACL service, managed through Nuage |
LinkedIn · internal |
OPA, Cedar |
Policy is central, enforcement is local, and access logs flow through Kafka. |
ADR-07 |
| Member privacy |
Privacy policy library in every read path |
This design |
SpiceDB, OpenFGA |
Visibility depends on the relationship, so the check has to see the graph. |
ADR-07 |
| Keys and secrets |
Envelope encryption + short-lease secret store |
This design |
HashiCorp Vault, cloud KMS |
A leaked config file must contain nothing worth stealing. |
ADR-08 |
| Primary document store |
Espresso |
LinkedIn · internal |
Vitess, Cosmos DB, DynamoDB |
Partitioned documents with a timeline-ordered change log. |
ADR-09 |
| Multi-row transactions |
Sharded MySQL |
Third party |
PostgreSQL + Citus, Vitess |
ACID and unique keys where money and irreversible state live. |
ADR-10 |
| Derived key-value data |
Venice |
LinkedIn · open source |
Cassandra bulk load, Redis |
Versioned bulk swaps plus nearline writes, and fully rebuildable. |
ADR-11 |
| Distributed cache |
Couchbase |
Third party |
Redis / Valkey, memcached |
Replicated cache at 10M+ QPS, invalidated from the change log. |
ADR-12 |
| Social graph |
LIquid over an Espresso edge store |
LinkedIn · internal |
Adjacency lists in KV, JanusGraph, TigerGraph |
270B edges and 2M QPS answered from memory. |
ADR-13 |
| Search |
Galene (on Lucene) |
LinkedIn · internal |
OpenSearch, Elasticsearch, Vespa |
An offline base index plus a live buffer, with full control of ranking. |
ADR-14 |
| Media storage |
Ambry + CDN |
LinkedIn · open source |
S3, Azure Blob, GCS, MinIO |
Immutable blobs, active-active across data centres. |
ADR-15 |
| Member-facing analytics |
Apache Pinot |
LinkedIn · open source |
Apache Druid, ClickHouse |
Sub-second answers at the concurrency of a consumer product. |
ADR-16 |
| Lake and batch compute |
HDFS + Iceberg via OpenHouse, Spark |
LinkedIn · open source |
Iceberg on object storage + Spark / Trino |
Analytics never touches an operational store. |
ADR-17 |
| Ingestion, scheduling, metadata |
Gobblin, Azkaban, DataHub |
LinkedIn · open source |
Kafka Connect, Airflow, OpenMetadata |
One way in, one scheduler, and lineage that says what is rebuildable. |
ADR-17 |
| Event log |
Apache Kafka |
LinkedIn · open source |
Confluent, Amazon MSK, Event Hubs, Redpanda |
A replayable log of every change and every member action. |
ADR-18 |
| Change capture and mirroring |
Brooklin (successor to Databus) |
LinkedIn · open source |
Debezium, MirrorMaker 2 |
No dual writes, and one tool for CDC and cross-colo mirroring. |
ADR-19 |
| Stream processing |
Apache Samza |
LinkedIn · open source |
Apache Flink, Kafka Streams |
Local state backed by a changelog, next to Kafka. |
ADR-20 |
| Feed storage |
FollowFeed + Venice inboxes |
LinkedIn · internal |
Redis timelines, Cassandra |
Hybrid fan-out: pull for high-degree actors, push for the rest. |
ADR-21 |
| Feed ranking |
Second-pass ranker in the feed broker (Quasar) |
LinkedIn · internal |
Triton, TF Serving, in-process ONNX |
Ranking evolves independently of storage. |
ADR-22 |
| Message storage |
Espresso, keyed by conversation |
This design |
Cassandra / ScyllaDB |
One sequencer per conversation gives total order. |
ADR-23 |
| Real-time delivery |
Play + Akka over SSE, presence platform |
Third party |
WebSocket gateways |
Plain HTTP through every proxy between the member and the colo. |
ADR-24 |
| Notifications |
Concourse + ATC |
LinkedIn · internal |
An in-house decider on Flink |
One owner of each member's attention budget. |
ADR-25 |
| Jobs and applications |
Espresso postings, MySQL applications, Galene, Venice |
This design |
The same split on any stack |
The application must never be wrong; the recommendation must be fresh. |
ADR-26 |
| ML platform |
Pro-ML: Frame, Feathr, TonY, Quasar, DARWIN |
LinkedIn · open source |
Kubeflow, MLflow, Feast |
Features defined once for training and serving. |
ADR-27 |
| Retry safety |
Idempotency keys with unique constraints |
This design |
The same pattern everywhere |
Retries are certain; duplicates must be harmless. |
ADR-28 |
| Multi-colo serving |
Four active colos + TrafficShift |
LinkedIn · internal |
Multi-region active-active on a cloud |
Draining a colo is routine, so it works when it matters. |
ADR-29 |
| Experiments and canaries |
T-REX (formerly LiX), EKG |
LinkedIn · internal |
GrowthBook, Statsig, Kayenta, Argo Rollouts |
Deploy and release are separate acts. |
ADR-30 |
| Observability and paging |
inGraphs, ThirdEye, Iris + Oncall, Hodor |
LinkedIn · open source |
Prometheus + Grafana, PagerDuty |
Alert on member impact, and shed load before falling over. |
ADR-31 |
| Anti-abuse |
CASAL + isolation-forest |
LinkedIn · open source |
In-house models on any stack |
One decision log for rules, models, reports and reviewers. |
ADR-33 |