linkedin - a professional network built with java technologies and agile practices

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

Upload: linkedin

Post on 11-Aug-2014

137.734 views

Category:

Business


7 download

DESCRIPTION

 

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!