SlideShare a Scribd company logo
Software Development & Arch @ LinkedIn
1
Sid Anand
QCon SF 2014
@r39132
InfoQ.com: News & Community Site
• 750,000 unique visitors/month
• Published in 4 languages (English, Chinese, Japanese and Brazilian
Portuguese)
• Post content from our QCon conferences
• News 15-20 / week
• Articles 3-4 / week
• Presentations (videos) 12-15 / week
• Interviews 2-3 / week
• Books 1 / month
Watch the video with slide
synchronization on InfoQ.com!
http://www.infoq.com/presentations
/linkedin-architecture-practices
Purpose of QCon
- to empower software development by facilitating the spread of
knowledge and innovation
Strategy
- practitioner-driven conference designed for YOU: influencers of
change and innovation in your teams
- speakers and topics driving the evolution and innovation
- connecting and catalyzing the influencers and innovators
Highlights
- attended by more than 12,000 delegates since 2007
- held in 9 cities worldwide
Presented at QCon San Francisco
www.qconsf.com
About Me
2
*
Current Life…
 Chief Architect @ ClipMine, a video discovery
company
 QCon SF Program Committee member
 Dad to a very energetic 2 year old boy
Previous Life…
 Architect in Search and Distributed Data @
LinkedIn
 Cloud Data Architect @ Netflix
 VP Engineering at Etsy
 Software Developer at eBay
@r39132 2
A Closer Look @ LinkedIn
3@r39132 3
LinkedIn
4
*
***
Then
• Created in 2002 in Reid Hoffman’s living room
• In its first month of operation, LinkedIn added 4500 members!
@r39132 4
LinkedIn
5
*
Then
• Created in 2002 in Reid Hoffman’s living room
• In its first month of operation, LinkedIn added 4500 members!
Now
• 332M members in 200 countries
• 2 members sign up every second
• >60% of members overseas
• In Q3’14, 75% of new members came from overseas
@r39132 5
LinkedIn
6
*
Then
• Created in 2002 in Reid Hoffman’s living room
• In its first month of operation, LinkedIn added 4500 members!
Now
• 332M members in 200 countries
• 2 members sign up every second
• >60% of members overseas
• In Q3’14, 75% of new members are coming from overseas
• Fastest growing demographic is not geographic, it’s students!
• > 10% of user base already and growing!
@r39132 6
LinkedIn
7
*
Member-growth started to ramp up during 2011, when we IPO’d
• 2010 : 55M
• 2011 : 90M (IPO)
• 2012 : 145M
• Q3’14 : 332M
(note : numbers reflect start of year)
We added ~ same number of users in 2010 than over previous 6 years!
@r39132 7
LinkedIn
8
*
***
Employee-growth also started to ramp up during 2011
• 2010 : 500
• 2011 : 1K (IPO)
• 2012 : 2100
• Q3’14: 6K (25% in Engineering)
(note : numbers reflect start of year)
@r39132 8
9@r39132 9
10@r39132 10
Alan Shepard
• 2nd man in space
• 5th person to walk on the moon!
• 1st person to hit a golf ball on the
moon!
LinkedIn
11@r39132 11
When asked by reporters what he thought about while
awaiting liftoff, he replied: "The fact that every part of this
ship was built by the lowest bidder"
How did LinkedIn scale for
company and member growth?
12@r39132 12
Software Development
Challenges
13@r39132 13
14
Circa 2011
• On my first day at LinkedIn, I felt pretty excited!
Software Development : Challenges
@r39132
Linux Desktop
• 8 Core
• 64GB Ram
Mac Air
15
Circa 2011
• On my first day at LinkedIn, I felt pretty excited!
Software Development : Challenges
@r39132
Linux Desktop
• 8 Core
• 64GB Ram
Mac Air
16
Circa 2011
• Then I tried to compile the code on my laptop!
Software Development : Challenges
@r39132
Linux Desktop
• 8 Core
• 64GB Ram
Mac Air
17
Circa 2011
• 300+ code projects in a single SVN Repo
• SVN checkout world & go-to-lunch
• Needed a server-grade machine to compile it!
• Ant build (world) & go-make-espresso
• Almost every WAR was built from source not intermediate JARs
• To test your code locally, you needed to locally deploy every service that
your code depended on! (maybe 20)
• So, yes, you need a machine that typically lives in your data center!
Software Development : Challenges
@r39132
18
Circa 2011
• Assume that your code is now
• Written
• Compiled
• Locally Tested
• What Next?
Software Development : Challenges
@r39132
19
Circa 2011
• 500+ developers were checking code into the master branch on the single
repo!
• So, someone broke master every day!
• So
• 3 hours to write, build, and locally test code
• 3 days to commit it!
Software Development : Challenges
@r39132
20
Software Development : Challenges
@r39132
21
Now (Solved)
• Do what the open-source world does with some improvements!
• Break the monolithic repo into many individual Git Repos!
• Have WARs depend on intermediate JARs – don’t not build the world!
• Do not deploy the world for local testing – just connect your Dev
machine to a test environment!
• What are the improvements?
Software Development : Challenges
@r39132
Software Development
Life Cycle
22@r39132 22
23
Software Development
@r39132
1. Alice commits code to Git
2. Alice sends a Review Board request
to Bob & Cathy, owners of the files!
3. Both Bob & Cathy give ship-its
4. Alice amends her commit message with :
RB=<review board id>
BUILD-WAR=<list of wars to build>
Code Reviews
24
Software Development
@r39132
1. Alice pushes code to our Gitorious server where the following
verifications:
1. Pre-push Sanity Checks! Must pass of push rejected!
1. Have all owners of the changed files given ship-its?
2. Does the code build?
2. For JAR builds, also build upstream WARs!
3. Run Integration Tests!
Code Push (Git Push)
25
Software Development
@r39132
1. Assuming that all checks passed, the WAR is now
available
2. Our system automatically deploys all wars to test
servers
3. QA verifies the new builds
QA Test / Staging
26
Software Development
@r39132
1. Service owner Dave canaries the new WAR
2. Our EKG system then compares the canary machine to one control
machine for 1 hour of product traffic for the following:
1. CPU, Memory increase
2. Fan-in/Fan-out increase
3. Error rate increase
4. Latency increase
Production - Canary
27
Software Development
@r39132
1. Service owner Dave reviews the EKG report
2. If it looks acceptable, he promotes the build to the rest of the cluster in all
data centers
Production - Promotion
How did LinkedIn scale for
company and member growth?
28@r39132 28
Architectural
Practices
29@r39132 29
Web
Servers
Oracle
LinkedIn Architecture
@r39132 30
Proto-typical Use – Case
• A member updates her profile with new skills, job title,
and education
• She also accepts a connection request from another
member
Behind the scenes
• Web servers commit data to Oracle
• What Happens Next?
Web
Servers
Oracle
LinkedIn Architecture
@r39132 31
What Happens Next?
Profile Updates
• She should should become instantly searchable by her
new skills, job title, & education!
• New groups and job ads should be recommended to her
Connection Updates
• The news feed should instantly reflect content updates
from her new connection!
• Also, based on the new connection, the PYMK widget
should discover a new 2nd degree neighborhood!
Web
Servers
(writers)
Oracle
LinkedIn Architecture
@r39132 32
Databus
Search
Caches
Graph
Recommender
Systems
(PYMK, Jobs)
DownstreamStreams
DW
33
We also have a data pipeline to capture high-throughput events
that we need to count!
Databases are not a good place to do high-TP atomic counting!
Kafka is!
• This is typically used for ranking signals
• E.g. counts member page views to determine who are “hot”
LinkedIn : Architecture
@r39132
Web
Servers
(writers)
Oracle
LinkedIn Architecture
@r39132 34
Kafka
Databus
Search
Systems
Caches
Graph Systems
Recommender
Systems
DownstreamStreams
DW
LinkedIn Architecture : Single Data Center!
@r39132 35
LinkedIn : Architecture : Single Data Center!
@r39132 36
LinkedIn : Architecture : Multi-data Center Project
@r39132 37
LinkedIn Architecture : Rule 1
@r39132 38
Partition your user base across the data centers!
e.g. using Akamai GTM
LinkedIn Architecture : Rule1
@r39132 39
Problem!
User 1 (mapped to DC1) updates his profile! How will User 2 (mapped to DC2)
see it?
LinkedIn Architecture : Rule 2
@r39132 40
Link your data centers together at the data fabric level!
Not a new concept! Cassandra has been doing it for a few years now in the
OLTP database space!
LinkedIn Architecture : Rule 2
@r39132 41
Link your data centers together at the data fabric level!
Not a new concept! Cassandra has been doing it for a few years now in the
OLTP database space!
LinkedIn’s Sources of Truth 
• We have to make both work in across
multiple data centers!
LinkedIn Architecture : Rule 2
@r39132 42
Link your data centers together at the data fabric level!
Not a new concept! Cassandra has been doing it for a few years now in the
OLTP database space!
LinkedIn’s Sources of Truth 
• We have to make both work in across
multiple data centers!
• Oracle is fairly easy : we use Oracle
Golden-gate!
• Kafka is also pretty easy!
LinkedIn : Kafka Multi-Data Center
@r39132 43
Kafka
Local
Producer
Consumer
of Local
Events
Kafka Data Center 1
LinkedIn : Kafka Multi-Data Center
@r39132 44
Kafka
Local
Producer
Consumer
of Local
Events
Kafka
Local
Producer
Consumer
of Local
Events
Kafka Data Center 2Kafka Data Center 1
LinkedIn : Kafka Multi-Colo
@r39132 45
Kafka
Local
Producer
Consumer
of Local
Events Consumer
of Global
Events
Kafka
Local
Producer
Consumer
of Local
Events
Kafka Data Center 2Kafka Data Center 1
LinkedIn : Kafka Multi-Colo
@r39132 46
Kafka
Local
Producer
Kafka
Global
Consumer
of Local
Events Consumer
of Global
Events
Kafka
Local
Producer
Consumer
of Local
Events
Kafka Data Center 2Kafka Data Center 1
LinkedIn : Kafka Multi-Colo
@r39132 47
Kafka
Local
Producer
Kafka
Global
Consumer
of Local
Events Consumer
of Global
Events
Kafka
Local
Producer
Kafka
Global
Consumer
of Local
EventsConsumer
of Global
Events
Kafka Data Center 2Kafka Data Center 1
LinkedIn Architecture : Rule 3
@r39132 48
Don’t make any web service calls between data centers!
It kills latency, which kills availability!
LinkedIn : Architecture
@r39132 49
How did LinkedIn scale for
company and member growth?
50@r39132 50
LinkedIn Search
51@r39132 51
52
LinkedIn Search
@r39132
Why is Search important to LinkedIn?
• Search is a significant income driver!
• 332M members that recruiters pay to find! (Recruiter
Search)
• 2M+ jobs that companies pay to list so you can find them!
(Job Search)
What Makes LinkedIn Search
Unique?
53@r39132 53
54
LinkedIn Search : Federated
@r39132
LinkedIn Search : Federated
@r39132 55
• We index many entities
• members, jobs, companies, groups, universities, articles, slides, etc..
• These are separate (vertical) search-engines!
LinkedIn Search : Federated
@r39132 56
• We index many entities
• members, jobs, companies, groups, universities, articles, slides, etc..
• These are separate (vertical) search-engines!
• When a user enters “sr software engineer”, which index should we look in?
• Jobs, members, groups?
LinkedIn Search : Federated
@r39132 57
• We index many entities
• members, jobs, companies, groups, universities, articles, slides, etc..
• These are separate (vertical) search-engines!
• When a user enters “sr software engineer” , which index should we look in?
• Jobs, members, groups?
• Can we simply send the request to all of the search engines and then show
the most relevant results?
• No
• Ranks (scores) are not comparable across verticals
LinkedIn Search : Federated
@r39132 58
• We index many entities
• members, jobs, companies, groups, universities, articles, slides, etc..
• These are separate (vertical) search-engines!
• When a user enters “sr software engineer” , which index should we look in?
• Jobs, members, groups?
• Can we simply send the request to all of the search engines and then show
the most relevant results?
• No
• Ranks (scores) are not comparable across verticals
• What if we pick a vertical based on a user feature?
• Job seeker sees jobs, recruiter sees members
• Intent Detection : done by Federator
LinkedIn Search : Query Rewriting
@r39132 59
• Say a recruiter searches for “sr software eng”
• There are 20+ ways to represent this title
• senior swe
• sr swe
• senior software engineer
LinkedIn Search : Query Rewriting
@r39132 60
• Say a recruiter searches for “sr software eng”
• There are 20+ ways to represent this title
• senior swe
• sr swe
• senior software engineer
• To solve this, we can use a title standarizer, though not every title may
have a canonical form!
• If a standardized title exists, we can rewrite the user query
• title:sr AND title:software AND title:eng  std_title:sswe234
LinkedIn Search : Query Rewriting
@r39132 61
• Say a recruiter searches for “sr software eng”
• There are 20+ ways to represent this title
• senior swe
• sr swe
• senior software engineer
• To solve this, we developed a title standarizer!
• If a standardized title exists, we can rewrite the user query
• title:sr AND title:software AND title:eng  std_title:sswe234
• Query Rewriting helps by expanding the search space by methods such
as synonym expansion, spell correction, etc… So we need it!
LinkedIn Search : Flexible Scoring
@r39132 62
• We index many entities!
• Companies, Members, Universities, etc…
• We use different scoring formulas and signals for each vertical
• We need a way to easily plug-in different custom scorers!
LinkedIn Search : Open Source
@r39132 63
• Leading open source alternatives (e.g. Lucene, ElasticSearch,
SOLR) do not offer these!
• Search Federation
• Pluggable Query Rewriting
• Pluggable and Flexible Scoring
• They DO offer some distributed system management, which we will
have to re-invent unfortunately
LinkedIn Search : Open Source
@r39132 64
• Leading open source alternatives (e.g. Lucene, ElasticSearch,
SOLR) do not offer these!
• Search Federation
• Pluggable Query Rewriting
• Pluggable and Flexible Scoring
• They DO offer some distributed system management, which we will
have to re-invent unfortunately
• So, we created Galene, LinkedIn’s new search architecture!
https://engineering.linkedin.com/search/did-you-mean-galene
y Questions?
65@r39132 65
Bonus Slides
66@r39132 66
Galene Architecture
67@r39132 67
68
Galene Architecture : Querying
@r39132
Federator
Frontend
Browser
Vertical
Search
Node
Vertical
Broker
• Query Rewriting (Pluggable)
• Scatter-gather across shards
• Lucene (optionally sharded)
• Scoring (Pluggable)
• Query Intent Detection
• Result Blending
Other
Verticals
….
69
Galene Architecture : Indexing (Offline)
@r39132
Federator
Frontend
Browser
Vertical
Search
Node
Hadoop
Vertical
Indexer
Node
Vertical
Broker
Index
Distribution
Service
Offline Index Building and
Distribution
• Batch-oriented, built daily
• Builds offline ranking and rewriting
models
• Rebuilds Indexes when new fields
added
70
Galene Architecture
@r39132
Federator
Frontend
Browser
Vertical
Search
Node
Hadoop
Vertical
Indexer
Node
Vertical
Broker
Index
Distribution
Service
Offline Index Building and
Distribution
• Bit-Torrent-based Index Distribution Service
• Pushes new indexes and models to running
services
71
Galene Architecture
@r39132
Federator
Frontend
Browser
Vertical
Search
Node
Vertical
Live
Updater
Hadoop
Vertical
Indexer
Node
Vertical
Broker
Index
Distribution
Service
KafkaDatabus
Kafka
Samza
Online Index Updates
• Online (near-real-time) indexer
• Updates indexes between Hadoop builds
72
Galene Architecture
@r39132
Federator
Frontend
Browser
Vertical
Search
Node
Vertical
Live
Updater
Hadoop
Vertical
Indexer
Node
Vertical
Broker
Index
Distribution
Service
KafkaDatabus
Kafka
Samza
Periodic Index
Optimization
• Snapshots live data
into a compact format
• Send ss-index to
search nodes over bit-
torrent
y Questions?
73@r39132 73
Watch the video with slide synchronization on
InfoQ.com!
http://www.infoq.com/presentations/linkedin-
architecture-practices

More Related Content

What's hot (17)

PDF
Managing ldap changes in connections
Wannes Rams
 
DOCX
James Manning Resume
James Manning
 
DOCX
Uma SunilKumar Resume
Uma Sunilkumar
 
DOC
Resume.H.Zhang
Haoxin Zhang
 
PDF
APEX 4.2 New Features
Enkitec
 
PPTX
Planning your Migration for SharePoint 2010
cScape
 
PDF
NOSQLEU - Graph Databases and Neo4j
Tobias Lindaaker
 
PPTX
SharePoint 2010 Online for Developer
K.Mohamed Faizal
 
PDF
IBM Connect Switzerland - Der entspannte Administrator
Klaus Bild
 
DOCX
RESUMEJohnHerritt_business_analyst_2015
John Herritt
 
PDF
Sridhar Somasundharam
Sridhar Somasundharam
 
DOC
MichaelLutherResume60
michael luther
 
PDF
JavaOne 2010 Keynote
Tomoyuki Tatsuno
 
DOC
Resume
Satendra Kasana
 
DOCX
Ravi Chinnasamy
Ravi Chinnasamy
 
PDF
How to prepare for your SharePoint upgrade
C/D/H Technology Consultants
 
DOC
ForrestHouletteRevised
Forrest Houlette
 
Managing ldap changes in connections
Wannes Rams
 
James Manning Resume
James Manning
 
Uma SunilKumar Resume
Uma Sunilkumar
 
Resume.H.Zhang
Haoxin Zhang
 
APEX 4.2 New Features
Enkitec
 
Planning your Migration for SharePoint 2010
cScape
 
NOSQLEU - Graph Databases and Neo4j
Tobias Lindaaker
 
SharePoint 2010 Online for Developer
K.Mohamed Faizal
 
IBM Connect Switzerland - Der entspannte Administrator
Klaus Bild
 
RESUMEJohnHerritt_business_analyst_2015
John Herritt
 
Sridhar Somasundharam
Sridhar Somasundharam
 
MichaelLutherResume60
michael luther
 
JavaOne 2010 Keynote
Tomoyuki Tatsuno
 
Ravi Chinnasamy
Ravi Chinnasamy
 
How to prepare for your SharePoint upgrade
C/D/H Technology Consultants
 
ForrestHouletteRevised
Forrest Houlette
 

Viewers also liked (18)

PDF
LinkedIn Communication Architecture
LinkedIn
 
DOCX
Linux and skype Architectural Styles
Mohammad Shawahneh
 
PDF
The "Big Data" Ecosystem at LinkedIn
Sam Shah
 
PPTX
Hadoop at LinkedIn
Keith Dsouza
 
PPT
Facebook plateform architecture presentation
Inam Soomro
 
PPTX
Big Data Ecosystem at LinkedIn. Keynote talk at Big Data Innovators Gathering...
Mitul Tiwari
 
PDF
Oracle GoldenGate and Apache Kafka A Deep Dive Into Real-Time Data Streaming
Michael Rainey
 
PPTX
WhatsApp architecture
Mahesh Bitla
 
PDF
Whatsapp's Architecture
Udaya Kiran
 
PDF
High Scalability by Example – How can Web-Architecture scale like Facebook, T...
Robert Mederer
 
PPTX
OVERVIEW OF FACEBOOK SCALABLE ARCHITECTURE.
Rishikese MR
 
PDF
facebook architecture for 600M users
Jongyoon Choi
 
PPTX
whatsapp ppt
Swati Luthra
 
PPTX
Data Infrastructure at LinkedIn
Amy W. Tang
 
PDF
Building a Real-Time Data Pipeline: Apache Kafka at LinkedIn
Amy W. Tang
 
PDF
Apache storm vs. Spark Streaming
P. Taylor Goetz
 
PDF
Scalability, Availability & Stability Patterns
Jonas Bonér
 
LinkedIn Communication Architecture
LinkedIn
 
Linux and skype Architectural Styles
Mohammad Shawahneh
 
The "Big Data" Ecosystem at LinkedIn
Sam Shah
 
Hadoop at LinkedIn
Keith Dsouza
 
Facebook plateform architecture presentation
Inam Soomro
 
Big Data Ecosystem at LinkedIn. Keynote talk at Big Data Innovators Gathering...
Mitul Tiwari
 
Oracle GoldenGate and Apache Kafka A Deep Dive Into Real-Time Data Streaming
Michael Rainey
 
WhatsApp architecture
Mahesh Bitla
 
Whatsapp's Architecture
Udaya Kiran
 
High Scalability by Example – How can Web-Architecture scale like Facebook, T...
Robert Mederer
 
OVERVIEW OF FACEBOOK SCALABLE ARCHITECTURE.
Rishikese MR
 
facebook architecture for 600M users
Jongyoon Choi
 
whatsapp ppt
Swati Luthra
 
Data Infrastructure at LinkedIn
Amy W. Tang
 
Building a Real-Time Data Pipeline: Apache Kafka at LinkedIn
Amy W. Tang
 
Apache storm vs. Spark Streaming
P. Taylor Goetz
 
Scalability, Availability & Stability Patterns
Jonas Bonér
 
Ad

Similar to Software Development & Architecture @ LinkedIn (20)

PPTX
Software Developer and Architecture @ LinkedIn (QCon SF 2014)
Sid Anand
 
PDF
Tech foundations-slides
tranquynh93
 
PDF
Scaling LinkedIn - A Brief History
Josh Clemm
 
PDF
HLayer / Cloud Native Best Practices
Aymen EL Amri
 
PDF
Agile.. and then? – Enterprise DevOps: the digital transformation of the IT...
Peter Muryshkin
 
PDF
Continuous Enterprise Development In Java Testable Solutions With Arquillian ...
nfikduw7187
 
PDF
InterCon 2016 - SLA vs Agilidade: uso de microserviços e monitoramento de cloud
iMasters
 
PPTX
SDLC & DevOps Transformation with Agile
Abdel Moneim Emad
 
PPTX
How Linkedin uses Automic for Big Data Processes
CA | Automic Software
 
PPT
UnConference for Georgia Southern Computer Science March 31, 2015
Christopher Curtin
 
PDF
Codemotion Berlin 2015 recap
Torben Dohrn
 
PDF
Reinventing npmjs.com
C4Media
 
PPTX
Building Scalable Organizations
mfisher5kavika
 
PPTX
Adobe CQ at LinkedIn Meetup February 2014
nyolles
 
PPTX
Adobe CQ at LinkedIn Meetup February 2014
Nate Yolles
 
PDF
Blitzscaling Session 9: Village Stage
Greylock Partners
 
PDF
Introduction to DevOps
OCTO Technology
 
PDF
Rest In Practice 1st Ed Jim Webber Savas Parastatidis Ian Robinson
tilusdukettk
 
PDF
2019-12-WWC-Toronto.pdf
MeghalMistry1
 
PDF
DSC UTeM DevOps Session#1: Intro to DevOps Presentation Slides
DSC UTeM
 
Software Developer and Architecture @ LinkedIn (QCon SF 2014)
Sid Anand
 
Tech foundations-slides
tranquynh93
 
Scaling LinkedIn - A Brief History
Josh Clemm
 
HLayer / Cloud Native Best Practices
Aymen EL Amri
 
Agile.. and then? – Enterprise DevOps: the digital transformation of the IT...
Peter Muryshkin
 
Continuous Enterprise Development In Java Testable Solutions With Arquillian ...
nfikduw7187
 
InterCon 2016 - SLA vs Agilidade: uso de microserviços e monitoramento de cloud
iMasters
 
SDLC & DevOps Transformation with Agile
Abdel Moneim Emad
 
How Linkedin uses Automic for Big Data Processes
CA | Automic Software
 
UnConference for Georgia Southern Computer Science March 31, 2015
Christopher Curtin
 
Codemotion Berlin 2015 recap
Torben Dohrn
 
Reinventing npmjs.com
C4Media
 
Building Scalable Organizations
mfisher5kavika
 
Adobe CQ at LinkedIn Meetup February 2014
nyolles
 
Adobe CQ at LinkedIn Meetup February 2014
Nate Yolles
 
Blitzscaling Session 9: Village Stage
Greylock Partners
 
Introduction to DevOps
OCTO Technology
 
Rest In Practice 1st Ed Jim Webber Savas Parastatidis Ian Robinson
tilusdukettk
 
2019-12-WWC-Toronto.pdf
MeghalMistry1
 
DSC UTeM DevOps Session#1: Intro to DevOps Presentation Slides
DSC UTeM
 
Ad

More from C4Media (20)

PDF
Streaming a Million Likes/Second: Real-Time Interactions on Live Video
C4Media
 
PDF
Next Generation Client APIs in Envoy Mobile
C4Media
 
PDF
Software Teams and Teamwork Trends Report Q1 2020
C4Media
 
PDF
Understand the Trade-offs Using Compilers for Java Applications
C4Media
 
PDF
Kafka Needs No Keeper
C4Media
 
PDF
High Performing Teams Act Like Owners
C4Media
 
PDF
Does Java Need Inline Types? What Project Valhalla Can Bring to Java
C4Media
 
PDF
Service Meshes- The Ultimate Guide
C4Media
 
PDF
Shifting Left with Cloud Native CI/CD
C4Media
 
PDF
CI/CD for Machine Learning
C4Media
 
PDF
Fault Tolerance at Speed
C4Media
 
PDF
Architectures That Scale Deep - Regaining Control in Deep Systems
C4Media
 
PDF
ML in the Browser: Interactive Experiences with Tensorflow.js
C4Media
 
PDF
Build Your Own WebAssembly Compiler
C4Media
 
PDF
User & Device Identity for Microservices @ Netflix Scale
C4Media
 
PDF
Scaling Patterns for Netflix's Edge
C4Media
 
PDF
Make Your Electron App Feel at Home Everywhere
C4Media
 
PDF
The Talk You've Been Await-ing For
C4Media
 
PDF
Future of Data Engineering
C4Media
 
PDF
Automated Testing for Terraform, Docker, Packer, Kubernetes, and More
C4Media
 
Streaming a Million Likes/Second: Real-Time Interactions on Live Video
C4Media
 
Next Generation Client APIs in Envoy Mobile
C4Media
 
Software Teams and Teamwork Trends Report Q1 2020
C4Media
 
Understand the Trade-offs Using Compilers for Java Applications
C4Media
 
Kafka Needs No Keeper
C4Media
 
High Performing Teams Act Like Owners
C4Media
 
Does Java Need Inline Types? What Project Valhalla Can Bring to Java
C4Media
 
Service Meshes- The Ultimate Guide
C4Media
 
Shifting Left with Cloud Native CI/CD
C4Media
 
CI/CD for Machine Learning
C4Media
 
Fault Tolerance at Speed
C4Media
 
Architectures That Scale Deep - Regaining Control in Deep Systems
C4Media
 
ML in the Browser: Interactive Experiences with Tensorflow.js
C4Media
 
Build Your Own WebAssembly Compiler
C4Media
 
User & Device Identity for Microservices @ Netflix Scale
C4Media
 
Scaling Patterns for Netflix's Edge
C4Media
 
Make Your Electron App Feel at Home Everywhere
C4Media
 
The Talk You've Been Await-ing For
C4Media
 
Future of Data Engineering
C4Media
 
Automated Testing for Terraform, Docker, Packer, Kubernetes, and More
C4Media
 

Recently uploaded (20)

PDF
Agentic AI lifecycle for Enterprise Hyper-Automation
Debmalya Biswas
 
PPTX
From Sci-Fi to Reality: Exploring AI Evolution
Svetlana Meissner
 
PDF
NLJUG Speaker academy 2025 - first session
Bert Jan Schrijver
 
PDF
CIFDAQ Market Wrap for the week of 4th July 2025
CIFDAQ
 
PDF
Peak of Data & AI Encore AI-Enhanced Workflows for the Real World
Safe Software
 
PDF
UiPath DevConnect 2025: Agentic Automation Community User Group Meeting
DianaGray10
 
PPTX
Agentforce World Tour Toronto '25 - MCP with MuleSoft
Alexandra N. Martinez
 
PDF
Future-Proof or Fall Behind? 10 Tech Trends You Can’t Afford to Ignore in 2025
DIGITALCONFEX
 
PDF
“Squinting Vision Pipelines: Detecting and Correcting Errors in Vision Models...
Edge AI and Vision Alliance
 
PPTX
MuleSoft MCP Support (Model Context Protocol) and Use Case Demo
shyamraj55
 
PDF
“NPU IP Hardware Shaped Through Software and Use-case Analysis,” a Presentati...
Edge AI and Vision Alliance
 
PDF
AI Agents in the Cloud: The Rise of Agentic Cloud Architecture
Lilly Gracia
 
PDF
Transcript: Book industry state of the nation 2025 - Tech Forum 2025
BookNet Canada
 
PPTX
Seamless Tech Experiences Showcasing Cross-Platform App Design.pptx
presentifyai
 
PDF
Mastering Financial Management in Direct Selling
Epixel MLM Software
 
PDF
Go Concurrency Real-World Patterns, Pitfalls, and Playground Battles.pdf
Emily Achieng
 
PDF
Kit-Works Team Study_20250627_한달만에만든사내서비스키링(양다윗).pdf
Wonjun Hwang
 
PPTX
Q2 FY26 Tableau User Group Leader Quarterly Call
lward7
 
PPTX
COMPARISON OF RASTER ANALYSIS TOOLS OF QGIS AND ARCGIS
Sharanya Sarkar
 
PDF
UPDF - AI PDF Editor & Converter Key Features
DealFuel
 
Agentic AI lifecycle for Enterprise Hyper-Automation
Debmalya Biswas
 
From Sci-Fi to Reality: Exploring AI Evolution
Svetlana Meissner
 
NLJUG Speaker academy 2025 - first session
Bert Jan Schrijver
 
CIFDAQ Market Wrap for the week of 4th July 2025
CIFDAQ
 
Peak of Data & AI Encore AI-Enhanced Workflows for the Real World
Safe Software
 
UiPath DevConnect 2025: Agentic Automation Community User Group Meeting
DianaGray10
 
Agentforce World Tour Toronto '25 - MCP with MuleSoft
Alexandra N. Martinez
 
Future-Proof or Fall Behind? 10 Tech Trends You Can’t Afford to Ignore in 2025
DIGITALCONFEX
 
“Squinting Vision Pipelines: Detecting and Correcting Errors in Vision Models...
Edge AI and Vision Alliance
 
MuleSoft MCP Support (Model Context Protocol) and Use Case Demo
shyamraj55
 
“NPU IP Hardware Shaped Through Software and Use-case Analysis,” a Presentati...
Edge AI and Vision Alliance
 
AI Agents in the Cloud: The Rise of Agentic Cloud Architecture
Lilly Gracia
 
Transcript: Book industry state of the nation 2025 - Tech Forum 2025
BookNet Canada
 
Seamless Tech Experiences Showcasing Cross-Platform App Design.pptx
presentifyai
 
Mastering Financial Management in Direct Selling
Epixel MLM Software
 
Go Concurrency Real-World Patterns, Pitfalls, and Playground Battles.pdf
Emily Achieng
 
Kit-Works Team Study_20250627_한달만에만든사내서비스키링(양다윗).pdf
Wonjun Hwang
 
Q2 FY26 Tableau User Group Leader Quarterly Call
lward7
 
COMPARISON OF RASTER ANALYSIS TOOLS OF QGIS AND ARCGIS
Sharanya Sarkar
 
UPDF - AI PDF Editor & Converter Key Features
DealFuel
 

Software Development & Architecture @ LinkedIn

  • 1. Software Development & Arch @ LinkedIn 1 Sid Anand QCon SF 2014 @r39132
  • 2. InfoQ.com: News & Community Site • 750,000 unique visitors/month • Published in 4 languages (English, Chinese, Japanese and Brazilian Portuguese) • Post content from our QCon conferences • News 15-20 / week • Articles 3-4 / week • Presentations (videos) 12-15 / week • Interviews 2-3 / week • Books 1 / month Watch the video with slide synchronization on InfoQ.com! http://www.infoq.com/presentations /linkedin-architecture-practices
  • 3. Purpose of QCon - to empower software development by facilitating the spread of knowledge and innovation Strategy - practitioner-driven conference designed for YOU: influencers of change and innovation in your teams - speakers and topics driving the evolution and innovation - connecting and catalyzing the influencers and innovators Highlights - attended by more than 12,000 delegates since 2007 - held in 9 cities worldwide Presented at QCon San Francisco www.qconsf.com
  • 4. About Me 2 * Current Life…  Chief Architect @ ClipMine, a video discovery company  QCon SF Program Committee member  Dad to a very energetic 2 year old boy Previous Life…  Architect in Search and Distributed Data @ LinkedIn  Cloud Data Architect @ Netflix  VP Engineering at Etsy  Software Developer at eBay @r39132 2
  • 5. A Closer Look @ LinkedIn 3@r39132 3
  • 6. LinkedIn 4 * *** Then • Created in 2002 in Reid Hoffman’s living room • In its first month of operation, LinkedIn added 4500 members! @r39132 4
  • 7. LinkedIn 5 * Then • Created in 2002 in Reid Hoffman’s living room • In its first month of operation, LinkedIn added 4500 members! Now • 332M members in 200 countries • 2 members sign up every second • >60% of members overseas • In Q3’14, 75% of new members came from overseas @r39132 5
  • 8. LinkedIn 6 * Then • Created in 2002 in Reid Hoffman’s living room • In its first month of operation, LinkedIn added 4500 members! Now • 332M members in 200 countries • 2 members sign up every second • >60% of members overseas • In Q3’14, 75% of new members are coming from overseas • Fastest growing demographic is not geographic, it’s students! • > 10% of user base already and growing! @r39132 6
  • 9. LinkedIn 7 * Member-growth started to ramp up during 2011, when we IPO’d • 2010 : 55M • 2011 : 90M (IPO) • 2012 : 145M • Q3’14 : 332M (note : numbers reflect start of year) We added ~ same number of users in 2010 than over previous 6 years! @r39132 7
  • 10. LinkedIn 8 * *** Employee-growth also started to ramp up during 2011 • 2010 : 500 • 2011 : 1K (IPO) • 2012 : 2100 • Q3’14: 6K (25% in Engineering) (note : numbers reflect start of year) @r39132 8
  • 12. 10@r39132 10 Alan Shepard • 2nd man in space • 5th person to walk on the moon! • 1st person to hit a golf ball on the moon!
  • 13. LinkedIn 11@r39132 11 When asked by reporters what he thought about while awaiting liftoff, he replied: "The fact that every part of this ship was built by the lowest bidder"
  • 14. How did LinkedIn scale for company and member growth? 12@r39132 12
  • 16. 14 Circa 2011 • On my first day at LinkedIn, I felt pretty excited! Software Development : Challenges @r39132 Linux Desktop • 8 Core • 64GB Ram Mac Air
  • 17. 15 Circa 2011 • On my first day at LinkedIn, I felt pretty excited! Software Development : Challenges @r39132 Linux Desktop • 8 Core • 64GB Ram Mac Air
  • 18. 16 Circa 2011 • Then I tried to compile the code on my laptop! Software Development : Challenges @r39132 Linux Desktop • 8 Core • 64GB Ram Mac Air
  • 19. 17 Circa 2011 • 300+ code projects in a single SVN Repo • SVN checkout world & go-to-lunch • Needed a server-grade machine to compile it! • Ant build (world) & go-make-espresso • Almost every WAR was built from source not intermediate JARs • To test your code locally, you needed to locally deploy every service that your code depended on! (maybe 20) • So, yes, you need a machine that typically lives in your data center! Software Development : Challenges @r39132
  • 20. 18 Circa 2011 • Assume that your code is now • Written • Compiled • Locally Tested • What Next? Software Development : Challenges @r39132
  • 21. 19 Circa 2011 • 500+ developers were checking code into the master branch on the single repo! • So, someone broke master every day! • So • 3 hours to write, build, and locally test code • 3 days to commit it! Software Development : Challenges @r39132
  • 22. 20 Software Development : Challenges @r39132
  • 23. 21 Now (Solved) • Do what the open-source world does with some improvements! • Break the monolithic repo into many individual Git Repos! • Have WARs depend on intermediate JARs – don’t not build the world! • Do not deploy the world for local testing – just connect your Dev machine to a test environment! • What are the improvements? Software Development : Challenges @r39132
  • 25. 23 Software Development @r39132 1. Alice commits code to Git 2. Alice sends a Review Board request to Bob & Cathy, owners of the files! 3. Both Bob & Cathy give ship-its 4. Alice amends her commit message with : RB=<review board id> BUILD-WAR=<list of wars to build> Code Reviews
  • 26. 24 Software Development @r39132 1. Alice pushes code to our Gitorious server where the following verifications: 1. Pre-push Sanity Checks! Must pass of push rejected! 1. Have all owners of the changed files given ship-its? 2. Does the code build? 2. For JAR builds, also build upstream WARs! 3. Run Integration Tests! Code Push (Git Push)
  • 27. 25 Software Development @r39132 1. Assuming that all checks passed, the WAR is now available 2. Our system automatically deploys all wars to test servers 3. QA verifies the new builds QA Test / Staging
  • 28. 26 Software Development @r39132 1. Service owner Dave canaries the new WAR 2. Our EKG system then compares the canary machine to one control machine for 1 hour of product traffic for the following: 1. CPU, Memory increase 2. Fan-in/Fan-out increase 3. Error rate increase 4. Latency increase Production - Canary
  • 29. 27 Software Development @r39132 1. Service owner Dave reviews the EKG report 2. If it looks acceptable, he promotes the build to the rest of the cluster in all data centers Production - Promotion
  • 30. How did LinkedIn scale for company and member growth? 28@r39132 28
  • 32. Web Servers Oracle LinkedIn Architecture @r39132 30 Proto-typical Use – Case • A member updates her profile with new skills, job title, and education • She also accepts a connection request from another member Behind the scenes • Web servers commit data to Oracle • What Happens Next?
  • 33. Web Servers Oracle LinkedIn Architecture @r39132 31 What Happens Next? Profile Updates • She should should become instantly searchable by her new skills, job title, & education! • New groups and job ads should be recommended to her Connection Updates • The news feed should instantly reflect content updates from her new connection! • Also, based on the new connection, the PYMK widget should discover a new 2nd degree neighborhood!
  • 35. 33 We also have a data pipeline to capture high-throughput events that we need to count! Databases are not a good place to do high-TP atomic counting! Kafka is! • This is typically used for ranking signals • E.g. counts member page views to determine who are “hot” LinkedIn : Architecture @r39132
  • 37. LinkedIn Architecture : Single Data Center! @r39132 35
  • 38. LinkedIn : Architecture : Single Data Center! @r39132 36
  • 39. LinkedIn : Architecture : Multi-data Center Project @r39132 37
  • 40. LinkedIn Architecture : Rule 1 @r39132 38 Partition your user base across the data centers! e.g. using Akamai GTM
  • 41. LinkedIn Architecture : Rule1 @r39132 39 Problem! User 1 (mapped to DC1) updates his profile! How will User 2 (mapped to DC2) see it?
  • 42. LinkedIn Architecture : Rule 2 @r39132 40 Link your data centers together at the data fabric level! Not a new concept! Cassandra has been doing it for a few years now in the OLTP database space!
  • 43. LinkedIn Architecture : Rule 2 @r39132 41 Link your data centers together at the data fabric level! Not a new concept! Cassandra has been doing it for a few years now in the OLTP database space! LinkedIn’s Sources of Truth  • We have to make both work in across multiple data centers!
  • 44. LinkedIn Architecture : Rule 2 @r39132 42 Link your data centers together at the data fabric level! Not a new concept! Cassandra has been doing it for a few years now in the OLTP database space! LinkedIn’s Sources of Truth  • We have to make both work in across multiple data centers! • Oracle is fairly easy : we use Oracle Golden-gate! • Kafka is also pretty easy!
  • 45. LinkedIn : Kafka Multi-Data Center @r39132 43 Kafka Local Producer Consumer of Local Events Kafka Data Center 1
  • 46. LinkedIn : Kafka Multi-Data Center @r39132 44 Kafka Local Producer Consumer of Local Events Kafka Local Producer Consumer of Local Events Kafka Data Center 2Kafka Data Center 1
  • 47. LinkedIn : Kafka Multi-Colo @r39132 45 Kafka Local Producer Consumer of Local Events Consumer of Global Events Kafka Local Producer Consumer of Local Events Kafka Data Center 2Kafka Data Center 1
  • 48. LinkedIn : Kafka Multi-Colo @r39132 46 Kafka Local Producer Kafka Global Consumer of Local Events Consumer of Global Events Kafka Local Producer Consumer of Local Events Kafka Data Center 2Kafka Data Center 1
  • 49. LinkedIn : Kafka Multi-Colo @r39132 47 Kafka Local Producer Kafka Global Consumer of Local Events Consumer of Global Events Kafka Local Producer Kafka Global Consumer of Local EventsConsumer of Global Events Kafka Data Center 2Kafka Data Center 1
  • 50. LinkedIn Architecture : Rule 3 @r39132 48 Don’t make any web service calls between data centers! It kills latency, which kills availability!
  • 52. How did LinkedIn scale for company and member growth? 50@r39132 50
  • 54. 52 LinkedIn Search @r39132 Why is Search important to LinkedIn? • Search is a significant income driver! • 332M members that recruiters pay to find! (Recruiter Search) • 2M+ jobs that companies pay to list so you can find them! (Job Search)
  • 55. What Makes LinkedIn Search Unique? 53@r39132 53
  • 56. 54 LinkedIn Search : Federated @r39132
  • 57. LinkedIn Search : Federated @r39132 55 • We index many entities • members, jobs, companies, groups, universities, articles, slides, etc.. • These are separate (vertical) search-engines!
  • 58. LinkedIn Search : Federated @r39132 56 • We index many entities • members, jobs, companies, groups, universities, articles, slides, etc.. • These are separate (vertical) search-engines! • When a user enters “sr software engineer”, which index should we look in? • Jobs, members, groups?
  • 59. LinkedIn Search : Federated @r39132 57 • We index many entities • members, jobs, companies, groups, universities, articles, slides, etc.. • These are separate (vertical) search-engines! • When a user enters “sr software engineer” , which index should we look in? • Jobs, members, groups? • Can we simply send the request to all of the search engines and then show the most relevant results? • No • Ranks (scores) are not comparable across verticals
  • 60. LinkedIn Search : Federated @r39132 58 • We index many entities • members, jobs, companies, groups, universities, articles, slides, etc.. • These are separate (vertical) search-engines! • When a user enters “sr software engineer” , which index should we look in? • Jobs, members, groups? • Can we simply send the request to all of the search engines and then show the most relevant results? • No • Ranks (scores) are not comparable across verticals • What if we pick a vertical based on a user feature? • Job seeker sees jobs, recruiter sees members • Intent Detection : done by Federator
  • 61. LinkedIn Search : Query Rewriting @r39132 59 • Say a recruiter searches for “sr software eng” • There are 20+ ways to represent this title • senior swe • sr swe • senior software engineer
  • 62. LinkedIn Search : Query Rewriting @r39132 60 • Say a recruiter searches for “sr software eng” • There are 20+ ways to represent this title • senior swe • sr swe • senior software engineer • To solve this, we can use a title standarizer, though not every title may have a canonical form! • If a standardized title exists, we can rewrite the user query • title:sr AND title:software AND title:eng  std_title:sswe234
  • 63. LinkedIn Search : Query Rewriting @r39132 61 • Say a recruiter searches for “sr software eng” • There are 20+ ways to represent this title • senior swe • sr swe • senior software engineer • To solve this, we developed a title standarizer! • If a standardized title exists, we can rewrite the user query • title:sr AND title:software AND title:eng  std_title:sswe234 • Query Rewriting helps by expanding the search space by methods such as synonym expansion, spell correction, etc… So we need it!
  • 64. LinkedIn Search : Flexible Scoring @r39132 62 • We index many entities! • Companies, Members, Universities, etc… • We use different scoring formulas and signals for each vertical • We need a way to easily plug-in different custom scorers!
  • 65. LinkedIn Search : Open Source @r39132 63 • Leading open source alternatives (e.g. Lucene, ElasticSearch, SOLR) do not offer these! • Search Federation • Pluggable Query Rewriting • Pluggable and Flexible Scoring • They DO offer some distributed system management, which we will have to re-invent unfortunately
  • 66. LinkedIn Search : Open Source @r39132 64 • Leading open source alternatives (e.g. Lucene, ElasticSearch, SOLR) do not offer these! • Search Federation • Pluggable Query Rewriting • Pluggable and Flexible Scoring • They DO offer some distributed system management, which we will have to re-invent unfortunately • So, we created Galene, LinkedIn’s new search architecture! https://engineering.linkedin.com/search/did-you-mean-galene
  • 70. 68 Galene Architecture : Querying @r39132 Federator Frontend Browser Vertical Search Node Vertical Broker • Query Rewriting (Pluggable) • Scatter-gather across shards • Lucene (optionally sharded) • Scoring (Pluggable) • Query Intent Detection • Result Blending Other Verticals ….
  • 71. 69 Galene Architecture : Indexing (Offline) @r39132 Federator Frontend Browser Vertical Search Node Hadoop Vertical Indexer Node Vertical Broker Index Distribution Service Offline Index Building and Distribution • Batch-oriented, built daily • Builds offline ranking and rewriting models • Rebuilds Indexes when new fields added
  • 72. 70 Galene Architecture @r39132 Federator Frontend Browser Vertical Search Node Hadoop Vertical Indexer Node Vertical Broker Index Distribution Service Offline Index Building and Distribution • Bit-Torrent-based Index Distribution Service • Pushes new indexes and models to running services
  • 76. Watch the video with slide synchronization on InfoQ.com! http://www.infoq.com/presentations/linkedin- architecture-practices