Top Banner
LinkedIn: A Professional Social Network Built with Java™ Technologies and Agile Practices Nick Dellamaggiore, Principal Software Engineer Eishay Smith, Senior Software Engineer
25

LinkedIn - A Professional Network built with Java Technologies and Agile Practices

Aug 11, 2014

Download

Business

Qi He

 
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: LinkedIn - A Professional Network built with Java Technologies and Agile Practices

LinkedIn: A Professional Social Network Builtwith Java™ Technologies and Agile Practices

Nick Dellamaggiore, Principal Software EngineerEishay Smith, Senior Software Engineer

Page 2: LinkedIn - A Professional Network built with Java Technologies and Agile Practices

2008 JavaOneSM Conference | java.com.sun/javaone | 2

Learn how Java™ and agile practices are employed inbuilding large-scale consumer internet sites likeLinkedIn, the world’s largest professional network.

Page 3: LinkedIn - A Professional Network built with Java Technologies and Agile Practices

2008 JavaOneSM Conference | java.com.sun/javaone | 3

Agenda

LinkedIn(troduction)

Agile engineering process

Architecture

Building LinkedIn with Java™

Questions/Discussion

Page 4: LinkedIn - A Professional Network built with Java Technologies and Agile Practices

2008 JavaOneSM Conference | java.com.sun/javaone | 4

Page 5: LinkedIn - A Professional Network built with Java Technologies and Agile Practices

2008 JavaOneSM Conference | java.com.sun/javaone | 5

LinkedInYour professional identity on the web

The site• Launched in 2003

• 3 degree network

• Strong focus on privacy

The company• Profitable since 2006

• 250 employees

• Based in Mountain View, CA

• We’re hiring!

The numbers• 22 million members

• 4+ million unique visitors/month

• 40 million page views/day

• 2 million searches/day

• 250K invitations sent/day

• 1 million answers posted

Page 6: LinkedIn - A Professional Network built with Java Technologies and Agile Practices

2008 JavaOneSM Conference | java.com.sun/javaone | 6

Engineering Process

Release often• Short, 2-4 week development cycles

All dev tasks are broken down into small, manageableengineering cards

Strong focus on testing

Minimize meetings, status (standup meetings as needed)

Page 7: LinkedIn - A Professional Network built with Java Technologies and Agile Practices

2008 JavaOneSM Conference | java.com.sun/javaone | 7

Engineering Cards

Page 8: LinkedIn - A Professional Network built with Java Technologies and Agile Practices

2008 JavaOneSM Conference | java.com.sun/javaone | 8

Testing

6500+ unit and integration tests

500 HtmlUnit tests

Large-scale Hudson deployment• 20+ nodes

• Continuous integration build/smoke test on SVN commit

• Nightly test run (full test suite)

Page 9: LinkedIn - A Professional Network built with Java Technologies and Agile Practices

2008 JavaOneSM Conference | java.com.sun/javaone | 9

“Celebrities” Test Network

Page 10: LinkedIn - A Professional Network built with Java Technologies and Agile Practices

2008 JavaOneSM Conference | java.com.sun/javaone | 10

Hudson

Page 11: LinkedIn - A Professional Network built with Java Technologies and Agile Practices

2008 JavaOneSM Conference | java.com.sun/javaone | 11

Testing…Lessons Learned

Test suite too focused on integration• Long running time

• Long-running setup/teardown routine• Exacerbated by move to SOA

• Tests become redundant due to overlapping integration tests

• Better: use mocks (EasyMock works great)

Page 12: LinkedIn - A Professional Network built with Java Technologies and Agile Practices

2008 JavaOneSM Conference | java.com.sun/javaone | 12

Architecture

Page 13: LinkedIn - A Professional Network built with Java Technologies and Agile Practices

2008 JavaOneSM Conference | java.com.sun/javaone | 13

LinkedIn Architecture: 2003-2005

Page 14: LinkedIn - A Professional Network built with Java Technologies and Agile Practices

2008 JavaOneSM Conference | java.com.sun/javaone | 14

LinkedIn Architecture: 2006

Page 15: LinkedIn - A Professional Network built with Java Technologies and Agile Practices

2008 JavaOneSM Conference | java.com.sun/javaone | 15

LinkedIn Architecture: Today

Page 16: LinkedIn - A Professional Network built with Java Technologies and Agile Practices

2008 JavaOneSM Conference | java.com.sun/javaone | 16

LinkedIn Architecture: Today

Page 17: LinkedIn - A Professional Network built with Java Technologies and Agile Practices

2008 JavaOneSM Conference | java.com.sun/javaone | 17

Service-oriented Architecture

Benefits• Each service can scale

independently

• Encourages decoupling, reducescode+deployment dependencies

• Graceful degradation offunctionality

Caveats• Diminished data integrity,

consistency• No cross-service transactions,

referential integrity or joins

• Backward compatibility

• “8 Fallacies of DistributedComputing”

Takeaways• Not applicable to small or simple sites, startups

• Build services with interfaces, POJOs, dependency injection

• Be conscious of API design, granularity

Page 18: LinkedIn - A Professional Network built with Java Technologies and Agile Practices

2008 JavaOneSM Conference | java.com.sun/javaone | 18

Services

Page 19: LinkedIn - A Professional Network built with Java Technologies and Agile Practices

2008 JavaOneSM Conference | java.com.sun/javaone | 19

The CloudBackend server caching the entire LinkedIn Network

Graph cache• Updated via Databus

• Persisted to disk on shutdown

Transient network cache

• Computationally intensive to build• Bound to member session

• Sticky load balancing to Cloud

Graph operations:• findRoute(m1, m2)• visit(visitor, deg)• visit(visitor, deg, since)

Page 20: LinkedIn - A Professional Network built with Java Technologies and Agile Practices

2008 JavaOneSM Conference | java.com.sun/javaone | 20

The CloudThe numbers

22M nodes, 120 million edges12 GB JVM heap• In-memory caches implemented in C++, accessed via JNI

40 Cloud server instances deployed in production

Page 21: LinkedIn - A Professional Network built with Java Technologies and Agile Practices

2008 JavaOneSM Conference | java.com.sun/javaone | 21

LinkedIn News

Part of a new trend in LinkedIn

Crawling the web for news• Distributed task management

• Parsing technologies: StAX, Rome

Indexing and searching• Serving the right news to the right people

Duplications Duplications Duplications• Real time problem, fast solution

• 500 articles batch = 125K compares

Page 22: LinkedIn - A Professional Network built with Java Technologies and Agile Practices

2008 JavaOneSM Conference | java.com.sun/javaone | 22

News Service Architecture

Page 23: LinkedIn - A Professional Network built with Java Technologies and Agile Practices

2008 JavaOneSM Conference | java.com.sun/javaone | 23

LinkedIn: 99% Pure Java™

ToolsWeb TierServices TierPlumbing

JUnit, HtmlUnitDWRJettyHttpClient

JIRA/GreenhopperGrailsLuceneQuartz

Eclipse+MylynSpring MVCEh-cacheActiveMQ

Hudson (CI)Louis (in-house fwk)LinkedIn SpringSpring Remoting

Page 24: LinkedIn - A Professional Network built with Java Technologies and Agile Practices

2008 JavaOneSM Conference | java.com.sun/javaone | 24

Why we love Java™ at LinkedIn

Static typing is a lifesaver• Huge codebase, 1M+ lines of code• Refactoring with confidence

• Code navigation (via IDE)

• 20 active branches, compiler helps with merging

• Near-excessive use of genericsScaling the engineering organization• Currently 50+ engineers, 8 teams… and growing

• Excellent talent pool of Java™ engineers to hire from

Community

Page 25: LinkedIn - A Professional Network built with Java Technologies and Agile Practices

LinkedIn: A Professional Social Network Builtwith Java™ Technologies and Agile PracticesNick Dellamaggiore (http://www.linkedin.com/in/nick)Eishay Smith (http://www.linkedin.com/in/eishay)

We’re hiring!