SlideShare une entreprise Scribd logo
1  sur  42
Building a Modern Enterprise SOA at LinkedIn
Agenda
 Building Code at LinkedIn
 Product Development with Multiproduct
 Build Automation with Gradle
 A Peek at the Future
©2013 LinkedIn Corporation. All Rights Reserved. 2
Building Code at LinkedIn
©2013 LinkedIn Corporation. All Rights Reserved. 3
In the beginning there was Network
 Single, relatively homogenous code base
– Build from source, little dependency management
 Java, Spring, Ant, …
 JavaScript, HTML, JSPs, CSS, …
 JARs, WARs, Jetty, Tomcat, …
©2013 LinkedIn Corporation. All Rights Reserved. 4
Then everything went exponential
Number of developers, programming languages, build
systems, frameworks, lines of code, servers, users, page views, …
… and pretty much everything else
©2013 LinkedIn Corporation. All Rights Reserved. 5
Hypergrowth isn’t all fun and games
 Acquisitions came in with their own technology and processes
 Releases became more and more painful
 Productivity and stability suffered
©2013 LinkedIn Corporation. All Rights Reserved. 7
Scaling a software development organization
 Requires sensible code and dependency management
– Source code APIs
– Service APIs
– Versioned dependencies
 Performance is king
– Iterative improvements
 Divide and conquer
– Split and isolate failures
©2013 LinkedIn Corporation. All Rights Reserved. 8
Code Isolation
Network Trunk Development
 All development in Network shifted to trunk
– No branches, no merging
 Continuous releases from trunk
– Deploy multiple times per day
 Work started on break up and clean up
– Migrating build logic to Gradle
©2013 LinkedIn Corporation. All Rights Reserved. 10
Product Development with Multiproduct
©2013 LinkedIn Corporation. All Rights Reserved.
Traditional Software Development
 Use a well-established technology stack
– Homogeneity => Simplicity
 To adopt a new technology:
– Requires “out of the box” thinking and effort
– Do a proof-of-concept implementation
– Present to decision makers to demonstrate ROI => get approval
 Slow-moving by design
– New technology integration expensive
– Top-down management decisions used as barrier
©2013 LinkedIn Corporation. All Rights Reserved. 12
LinkedIn Software Development
 We don’t ever want to be in the box
– Technical experimentation and diversity encouraged
– Living on the bleeding edge, often defining it
 The Need for Speed
– Pace of iteration
– Automation (the human is slow)
– Continuous delivery
 Build versus buy
©2013 LinkedIn Corporation. All Rights Reserved. 13
Chaos Theory
Multiproduct
 Toolset that is architected for a heterogeneous technology world
 Agnostic to version control, build system and programming stack
– Future-proof
 Abstracts common software tasks
– For example: “build”, “test”, “release”
 Provide a default implementation, allow users to override
– i.e. Gradle w/ LI plug-ins
©2013 LinkedIn Corporation. All Rights Reserved. 15
Key Concepts
 Elevate tooling from artifact to product level
 Metadata ties the tooling together
– Ivy
– Version and Build specification
 Pluggable implementation of subsystems
 Version management
 Continuous automated delivery
©2013 LinkedIn Corporation. All Rights Reserved. 16
©2013 LinkedIn Corporation. All Rights Reserved. 17
Source
Control
Build System Deployment
Version Management
 End-of-life dates
– Graceful deprecation and upgrades
 Push version upgrades to consumers
 Dependency Reports
– What products depends on me
– What products do I depend on
©2013 LinkedIn Corporation. All Rights Reserved. 18
Push My Upgrade
©2013 LinkedIn Corporation. All Rights Reserved. 19
Tracking Upgrades
©2013 LinkedIn Corporation. All Rights Reserved. 20
Continuous Delivery in Multiproduct
 Automated pipeline triggered on developer change
– No other developer action needed
 Publishing 10,000+ artifacts per day for 300+ products
– Mean time for a good commit: ~10 minutes
– Mean time counting failures: ~25 minutes
©2013 LinkedIn Corporation. All Rights Reserved. 21
Continuous Delivery
©2013 LinkedIn Corporation. All Rights Reserved. 22
©2013 LinkedIn Corporation. All Rights Reserved. 23
Build Automation with Gradle
©2013 LinkedIn Corporation. All Rights Reserved. 24
Why LinkedIn uses Gradle
 Dependency resolution engine
 Rich plug-in system w/ real programming language
– DSL has high learning curve, but powerful
 Visions align
– Automation
– Continuous delivery
©2013 LinkedIn Corporation. All Rights Reserved. 25
LinkedIn Gradle plug-ins
 Customize built-in plug-ins for LinkedIn’s environment
– i.e. Java, Scala, War, FindBugs, Cobertura
 Add custom artifact types
– For example database patches, static content, and Hadoop workflows
 Create metadata for publishing and deployment tooling to consume
 Elevate concepts from artifact to product level
©2013 LinkedIn Corporation. All Rights Reserved. 26
Dependency Graph powered by Gradle
©2013 LinkedIn Corporation. All Rights Reserved. 27
©2013 LinkedIn Corporation. All Rights Reserved. 28
End-of-life enforcement
Our own gradlew: ligradle
 Our own custom Gradle wrapper
 Provisions Gradle and plug-ins
– Allows each product to define versions it uses
 Provides lifecycle management for Gradle and plug-ins
– End-of-life
 Usage data
– Used to track usage and discover problems
©2013 LinkedIn Corporation. All Rights Reserved. 29
Usage Data
©2013 LinkedIn Corporation. All Rights Reserved. 30
Source vs Binary Dependencies
 Source offers incremental updates and flexibility  intra-product
 Binary offers stability and speed inter-product
There’s no right answer, but there are plenty of wrong answers!
©2013 LinkedIn Corporation. All Rights Reserved. 31
Network migration to Gradle
 3,600 build.xml files to convert
– Many of them with custom logic
 300 developers to train
 Performance targets
– 2x speed-up for clean builds
– 5x speed-up for incremental builds
©2013 LinkedIn Corporation. All Rights Reserved. 32
Proof of Concept
 Migrated 1,100 modules
 Tested single large build versus isolated
segments
– Single large build simpler
 Scale feasible
– Requires scalability and performance
work in Gradle core
©2013 LinkedIn Corporation. All Rights Reserved. 33
Gradle features required for migration
 Configuration on demand
– Only configure the task graph you need
 Refactored cache logic for performance
– Task history
– Dependency descriptors
 Candidate performance improvements
– Parallel configuration
– Daemon stores project model
– Daemon performs continuous up-to-date checks
©2013 LinkedIn Corporation. All Rights Reserved. 34
Daemon Heap Usage
©2013 LinkedIn Corporation. All Rights Reserved. 36
Project Timeline – 1 year
 Q1: Proof-of-concept and prep work
 Q2: Implementation 
 Q3: Roll-out
 Q4: Clean-up
©2013 LinkedIn Corporation. All Rights Reserved. 37
A Peek at the Future
©2013 LinkedIn Corporation. All Rights Reserved. 38
Gradle Features
 Faster
– Use the daemon effectively in development and CI
– Intra-project parallel execution
 More scalable
– Heap usage
 Ease of use
– IDE integration
©2013 LinkedIn Corporation. All Rights Reserved. 39
More Multiproduct Intelligence
 Analytics
– Common exceptions
– Usage and error patterns
 Verification suite
– CheckStyle, FindBugs and Cobertura
 Automation and Integration
 Ease of use
©2013 LinkedIn Corporation. All Rights Reserved. 40
Distributed Build Automation
 Distribute build and testing on a cluster
 Automatic provisioning
 Artifact sharing at scale
©2013 LinkedIn Corporation. All Rights Reserved. 41
©2013 LinkedIn Corporation. All Rights Reserved. 42

Contenu connexe

Tendances

Intro to SW Eng Principles for Cloud Computing - DNelson Apr2015
Intro to SW Eng Principles for Cloud Computing - DNelson Apr2015Intro to SW Eng Principles for Cloud Computing - DNelson Apr2015
Intro to SW Eng Principles for Cloud Computing - DNelson Apr2015
Darryl Nelson
 

Tendances (20)

Cloud Native In-Depth
Cloud Native In-DepthCloud Native In-Depth
Cloud Native In-Depth
 
Software Factories in the Real World: How an IBM® WebSphere® Integration Fact...
Software Factories in the Real World: How an IBM® WebSphere® Integration Fact...Software Factories in the Real World: How an IBM® WebSphere® Integration Fact...
Software Factories in the Real World: How an IBM® WebSphere® Integration Fact...
 
Intro to SW Eng Principles for Cloud Computing - DNelson Apr2015
Intro to SW Eng Principles for Cloud Computing - DNelson Apr2015Intro to SW Eng Principles for Cloud Computing - DNelson Apr2015
Intro to SW Eng Principles for Cloud Computing - DNelson Apr2015
 
Travelers 360 degree health assessment of microservices on the pivotal platform
Travelers 360 degree health assessment of microservices on the pivotal platformTravelers 360 degree health assessment of microservices on the pivotal platform
Travelers 360 degree health assessment of microservices on the pivotal platform
 
Tools and Recipes to Replatform Monolithic Apps to Modern Cloud Environments
Tools and Recipes to Replatform Monolithic Apps to Modern Cloud EnvironmentsTools and Recipes to Replatform Monolithic Apps to Modern Cloud Environments
Tools and Recipes to Replatform Monolithic Apps to Modern Cloud Environments
 
Red Hat Quarkus | Red Hat Application Development | DO283
Red Hat Quarkus | Red Hat Application Development | DO283Red Hat Quarkus | Red Hat Application Development | DO283
Red Hat Quarkus | Red Hat Application Development | DO283
 
Cloud Native Batch Processing: Beyond the What and How
Cloud Native Batch Processing: Beyond the What and HowCloud Native Batch Processing: Beyond the What and How
Cloud Native Batch Processing: Beyond the What and How
 
Cloud Native Application Development
Cloud Native Application DevelopmentCloud Native Application Development
Cloud Native Application Development
 
State of Mainframe DevOps
State of Mainframe DevOpsState of Mainframe DevOps
State of Mainframe DevOps
 
Perspectives on software factory
Perspectives on software factoryPerspectives on software factory
Perspectives on software factory
 
Nodifying the Enterprise - Prince Soni, TO THE NEW
Nodifying the Enterprise - Prince Soni, TO THE NEWNodifying the Enterprise - Prince Soni, TO THE NEW
Nodifying the Enterprise - Prince Soni, TO THE NEW
 
Erik Baardse - Bringing Agility to Traditional application by docker
Erik Baardse - Bringing Agility to Traditional application by dockerErik Baardse - Bringing Agility to Traditional application by docker
Erik Baardse - Bringing Agility to Traditional application by docker
 
Should That Be a Microservice ?
Should That Be a Microservice ?Should That Be a Microservice ?
Should That Be a Microservice ?
 
Decomposing applications for deployability and scalability(SpringSource webinar)
Decomposing applications for deployability and scalability(SpringSource webinar)Decomposing applications for deployability and scalability(SpringSource webinar)
Decomposing applications for deployability and scalability(SpringSource webinar)
 
Microservices
MicroservicesMicroservices
Microservices
 
Microservices (msa) insights with comments
Microservices (msa) insights with commentsMicroservices (msa) insights with comments
Microservices (msa) insights with comments
 
Useful Design Patterns for Enterprise Applications with Java
Useful Design Patterns for Enterprise Applications with JavaUseful Design Patterns for Enterprise Applications with Java
Useful Design Patterns for Enterprise Applications with Java
 
Dev opscon survey summary 2013
Dev opscon survey summary 2013Dev opscon survey summary 2013
Dev opscon survey summary 2013
 
Modern application development with heroku
Modern application development with herokuModern application development with heroku
Modern application development with heroku
 
Continuous Delivery with CloudBees Core
Continuous Delivery with CloudBees CoreContinuous Delivery with CloudBees Core
Continuous Delivery with CloudBees Core
 

En vedette

Measuring Usability
Measuring UsabilityMeasuring Usability
Measuring Usability
Indira Pai
 
Rest in Practice, Brazil 2010
Rest in Practice, Brazil 2010Rest in Practice, Brazil 2010
Rest in Practice, Brazil 2010
Thoughtworks
 

En vedette (8)

Continuous Integration & Continuous Delivery
Continuous Integration & Continuous DeliveryContinuous Integration & Continuous Delivery
Continuous Integration & Continuous Delivery
 
Measuring Usability
Measuring UsabilityMeasuring Usability
Measuring Usability
 
Rest in Practice, Brazil 2010
Rest in Practice, Brazil 2010Rest in Practice, Brazil 2010
Rest in Practice, Brazil 2010
 
Beyond Continuous Delivery
Beyond Continuous DeliveryBeyond Continuous Delivery
Beyond Continuous Delivery
 
What is Accessibility
What is AccessibilityWhat is Accessibility
What is Accessibility
 
Continuous Delivery and Patterns @xpdays 2013
Continuous Delivery and Patterns @xpdays 2013Continuous Delivery and Patterns @xpdays 2013
Continuous Delivery and Patterns @xpdays 2013
 
General Continuous Delivery for Agile Practitioners Meetup May 2014
General Continuous Delivery for Agile Practitioners Meetup May 2014General Continuous Delivery for Agile Practitioners Meetup May 2014
General Continuous Delivery for Agile Practitioners Meetup May 2014
 
Branching and Merging and Bears, Oh My!
Branching and Merging and Bears, Oh My!Branching and Merging and Bears, Oh My!
Branching and Merging and Bears, Oh My!
 

Similaire à Building a Modern Enterprise SOA at LinkedIn

Software Factories in the Real World: How an IBM WebSphere Integration Factor...
Software Factories in the Real World: How an IBM WebSphere Integration Factor...Software Factories in the Real World: How an IBM WebSphere Integration Factor...
Software Factories in the Real World: How an IBM WebSphere Integration Factor...
ghodgkinson
 
Adobe CQ at LinkedIn Meetup February 2014
Adobe CQ at LinkedIn Meetup February 2014Adobe CQ at LinkedIn Meetup February 2014
Adobe CQ at LinkedIn Meetup February 2014
nyolles
 
Adobe CQ at LinkedIn Meetup February 2014
Adobe CQ at LinkedIn Meetup February 2014Adobe CQ at LinkedIn Meetup February 2014
Adobe CQ at LinkedIn Meetup February 2014
Nate Yolles
 
Standing on the Shoulders of Open-Source Giants: The Serverless Realtime Lake...
Standing on the Shoulders of Open-Source Giants: The Serverless Realtime Lake...Standing on the Shoulders of Open-Source Giants: The Serverless Realtime Lake...
Standing on the Shoulders of Open-Source Giants: The Serverless Realtime Lake...
HostedbyConfluent
 

Similaire à Building a Modern Enterprise SOA at LinkedIn (20)

Software Factories in the Real World: How an IBM WebSphere Integration Factor...
Software Factories in the Real World: How an IBM WebSphere Integration Factor...Software Factories in the Real World: How an IBM WebSphere Integration Factor...
Software Factories in the Real World: How an IBM WebSphere Integration Factor...
 
Grails at Linkedin
Grails at LinkedinGrails at Linkedin
Grails at Linkedin
 
Applying lean, dev ops, and cloud for better business outcomes
Applying lean, dev ops, and cloud for better business outcomesApplying lean, dev ops, and cloud for better business outcomes
Applying lean, dev ops, and cloud for better business outcomes
 
Optimize your CI/CD with GitLab and AWS
Optimize your CI/CD with GitLab and AWSOptimize your CI/CD with GitLab and AWS
Optimize your CI/CD with GitLab and AWS
 
A Software Factory Integrating Rational & WebSphere Tools
A Software Factory Integrating Rational & WebSphere ToolsA Software Factory Integrating Rational & WebSphere Tools
A Software Factory Integrating Rational & WebSphere Tools
 
Applying DevOps, PaaS and cloud for better citizen service outcomes - IBM Fe...
Applying DevOps, PaaS and cloud for better citizen service  outcomes - IBM Fe...Applying DevOps, PaaS and cloud for better citizen service  outcomes - IBM Fe...
Applying DevOps, PaaS and cloud for better citizen service outcomes - IBM Fe...
 
Plastic SCM: Entreprise Version Control Platform for Modern Applications and ...
Plastic SCM: Entreprise Version Control Platform for Modern Applications and ...Plastic SCM: Entreprise Version Control Platform for Modern Applications and ...
Plastic SCM: Entreprise Version Control Platform for Modern Applications and ...
 
Challenges In Modern Application
Challenges In Modern ApplicationChallenges In Modern Application
Challenges In Modern Application
 
Why we should consider Open Hybrid Cloud.pdf
Why we should  consider Open Hybrid Cloud.pdfWhy we should  consider Open Hybrid Cloud.pdf
Why we should consider Open Hybrid Cloud.pdf
 
Analyzing Optimal Practises for Web Frameworks
Analyzing Optimal Practises for Web FrameworksAnalyzing Optimal Practises for Web Frameworks
Analyzing Optimal Practises for Web Frameworks
 
IBM Bluemix OpenWhisk: Interconnect 2016, Las Vegas: CCD-1088: The Future of ...
IBM Bluemix OpenWhisk: Interconnect 2016, Las Vegas: CCD-1088: The Future of ...IBM Bluemix OpenWhisk: Interconnect 2016, Las Vegas: CCD-1088: The Future of ...
IBM Bluemix OpenWhisk: Interconnect 2016, Las Vegas: CCD-1088: The Future of ...
 
IBM Bluemix Openwhisk
IBM Bluemix OpenwhiskIBM Bluemix Openwhisk
IBM Bluemix Openwhisk
 
Resume
ResumeResume
Resume
 
Scaling Application Development & Delivery across the Enterprise
Scaling Application Development & Delivery across the EnterpriseScaling Application Development & Delivery across the Enterprise
Scaling Application Development & Delivery across the Enterprise
 
Adobe CQ at LinkedIn Meetup February 2014
Adobe CQ at LinkedIn Meetup February 2014Adobe CQ at LinkedIn Meetup February 2014
Adobe CQ at LinkedIn Meetup February 2014
 
Adobe CQ at LinkedIn Meetup February 2014
Adobe CQ at LinkedIn Meetup February 2014Adobe CQ at LinkedIn Meetup February 2014
Adobe CQ at LinkedIn Meetup February 2014
 
Google cloud Study Jam 2023.pptx
Google cloud Study Jam 2023.pptxGoogle cloud Study Jam 2023.pptx
Google cloud Study Jam 2023.pptx
 
Efficient platform engineering with Microk8s & gopaddle.pdf
Efficient platform engineering  with  Microk8s & gopaddle.pdfEfficient platform engineering  with  Microk8s & gopaddle.pdf
Efficient platform engineering with Microk8s & gopaddle.pdf
 
Ahmed El Mawaziny CV
Ahmed El Mawaziny CVAhmed El Mawaziny CV
Ahmed El Mawaziny CV
 
Standing on the Shoulders of Open-Source Giants: The Serverless Realtime Lake...
Standing on the Shoulders of Open-Source Giants: The Serverless Realtime Lake...Standing on the Shoulders of Open-Source Giants: The Serverless Realtime Lake...
Standing on the Shoulders of Open-Source Giants: The Serverless Realtime Lake...
 

Dernier

+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 

Dernier (20)

Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 

Building a Modern Enterprise SOA at LinkedIn

  • 1. Building a Modern Enterprise SOA at LinkedIn
  • 2. Agenda  Building Code at LinkedIn  Product Development with Multiproduct  Build Automation with Gradle  A Peek at the Future ©2013 LinkedIn Corporation. All Rights Reserved. 2
  • 3. Building Code at LinkedIn ©2013 LinkedIn Corporation. All Rights Reserved. 3
  • 4. In the beginning there was Network  Single, relatively homogenous code base – Build from source, little dependency management  Java, Spring, Ant, …  JavaScript, HTML, JSPs, CSS, …  JARs, WARs, Jetty, Tomcat, … ©2013 LinkedIn Corporation. All Rights Reserved. 4
  • 5. Then everything went exponential Number of developers, programming languages, build systems, frameworks, lines of code, servers, users, page views, … … and pretty much everything else ©2013 LinkedIn Corporation. All Rights Reserved. 5
  • 6.
  • 7. Hypergrowth isn’t all fun and games  Acquisitions came in with their own technology and processes  Releases became more and more painful  Productivity and stability suffered ©2013 LinkedIn Corporation. All Rights Reserved. 7
  • 8. Scaling a software development organization  Requires sensible code and dependency management – Source code APIs – Service APIs – Versioned dependencies  Performance is king – Iterative improvements  Divide and conquer – Split and isolate failures ©2013 LinkedIn Corporation. All Rights Reserved. 8
  • 10. Network Trunk Development  All development in Network shifted to trunk – No branches, no merging  Continuous releases from trunk – Deploy multiple times per day  Work started on break up and clean up – Migrating build logic to Gradle ©2013 LinkedIn Corporation. All Rights Reserved. 10
  • 11. Product Development with Multiproduct ©2013 LinkedIn Corporation. All Rights Reserved.
  • 12. Traditional Software Development  Use a well-established technology stack – Homogeneity => Simplicity  To adopt a new technology: – Requires “out of the box” thinking and effort – Do a proof-of-concept implementation – Present to decision makers to demonstrate ROI => get approval  Slow-moving by design – New technology integration expensive – Top-down management decisions used as barrier ©2013 LinkedIn Corporation. All Rights Reserved. 12
  • 13. LinkedIn Software Development  We don’t ever want to be in the box – Technical experimentation and diversity encouraged – Living on the bleeding edge, often defining it  The Need for Speed – Pace of iteration – Automation (the human is slow) – Continuous delivery  Build versus buy ©2013 LinkedIn Corporation. All Rights Reserved. 13
  • 15. Multiproduct  Toolset that is architected for a heterogeneous technology world  Agnostic to version control, build system and programming stack – Future-proof  Abstracts common software tasks – For example: “build”, “test”, “release”  Provide a default implementation, allow users to override – i.e. Gradle w/ LI plug-ins ©2013 LinkedIn Corporation. All Rights Reserved. 15
  • 16. Key Concepts  Elevate tooling from artifact to product level  Metadata ties the tooling together – Ivy – Version and Build specification  Pluggable implementation of subsystems  Version management  Continuous automated delivery ©2013 LinkedIn Corporation. All Rights Reserved. 16
  • 17. ©2013 LinkedIn Corporation. All Rights Reserved. 17 Source Control Build System Deployment
  • 18. Version Management  End-of-life dates – Graceful deprecation and upgrades  Push version upgrades to consumers  Dependency Reports – What products depends on me – What products do I depend on ©2013 LinkedIn Corporation. All Rights Reserved. 18
  • 19. Push My Upgrade ©2013 LinkedIn Corporation. All Rights Reserved. 19
  • 20. Tracking Upgrades ©2013 LinkedIn Corporation. All Rights Reserved. 20
  • 21. Continuous Delivery in Multiproduct  Automated pipeline triggered on developer change – No other developer action needed  Publishing 10,000+ artifacts per day for 300+ products – Mean time for a good commit: ~10 minutes – Mean time counting failures: ~25 minutes ©2013 LinkedIn Corporation. All Rights Reserved. 21
  • 22. Continuous Delivery ©2013 LinkedIn Corporation. All Rights Reserved. 22
  • 23. ©2013 LinkedIn Corporation. All Rights Reserved. 23
  • 24. Build Automation with Gradle ©2013 LinkedIn Corporation. All Rights Reserved. 24
  • 25. Why LinkedIn uses Gradle  Dependency resolution engine  Rich plug-in system w/ real programming language – DSL has high learning curve, but powerful  Visions align – Automation – Continuous delivery ©2013 LinkedIn Corporation. All Rights Reserved. 25
  • 26. LinkedIn Gradle plug-ins  Customize built-in plug-ins for LinkedIn’s environment – i.e. Java, Scala, War, FindBugs, Cobertura  Add custom artifact types – For example database patches, static content, and Hadoop workflows  Create metadata for publishing and deployment tooling to consume  Elevate concepts from artifact to product level ©2013 LinkedIn Corporation. All Rights Reserved. 26
  • 27. Dependency Graph powered by Gradle ©2013 LinkedIn Corporation. All Rights Reserved. 27
  • 28. ©2013 LinkedIn Corporation. All Rights Reserved. 28 End-of-life enforcement
  • 29. Our own gradlew: ligradle  Our own custom Gradle wrapper  Provisions Gradle and plug-ins – Allows each product to define versions it uses  Provides lifecycle management for Gradle and plug-ins – End-of-life  Usage data – Used to track usage and discover problems ©2013 LinkedIn Corporation. All Rights Reserved. 29
  • 30. Usage Data ©2013 LinkedIn Corporation. All Rights Reserved. 30
  • 31. Source vs Binary Dependencies  Source offers incremental updates and flexibility  intra-product  Binary offers stability and speed inter-product There’s no right answer, but there are plenty of wrong answers! ©2013 LinkedIn Corporation. All Rights Reserved. 31
  • 32. Network migration to Gradle  3,600 build.xml files to convert – Many of them with custom logic  300 developers to train  Performance targets – 2x speed-up for clean builds – 5x speed-up for incremental builds ©2013 LinkedIn Corporation. All Rights Reserved. 32
  • 33. Proof of Concept  Migrated 1,100 modules  Tested single large build versus isolated segments – Single large build simpler  Scale feasible – Requires scalability and performance work in Gradle core ©2013 LinkedIn Corporation. All Rights Reserved. 33
  • 34. Gradle features required for migration  Configuration on demand – Only configure the task graph you need  Refactored cache logic for performance – Task history – Dependency descriptors  Candidate performance improvements – Parallel configuration – Daemon stores project model – Daemon performs continuous up-to-date checks ©2013 LinkedIn Corporation. All Rights Reserved. 34
  • 35.
  • 36. Daemon Heap Usage ©2013 LinkedIn Corporation. All Rights Reserved. 36
  • 37. Project Timeline – 1 year  Q1: Proof-of-concept and prep work  Q2: Implementation   Q3: Roll-out  Q4: Clean-up ©2013 LinkedIn Corporation. All Rights Reserved. 37
  • 38. A Peek at the Future ©2013 LinkedIn Corporation. All Rights Reserved. 38
  • 39. Gradle Features  Faster – Use the daemon effectively in development and CI – Intra-project parallel execution  More scalable – Heap usage  Ease of use – IDE integration ©2013 LinkedIn Corporation. All Rights Reserved. 39
  • 40. More Multiproduct Intelligence  Analytics – Common exceptions – Usage and error patterns  Verification suite – CheckStyle, FindBugs and Cobertura  Automation and Integration  Ease of use ©2013 LinkedIn Corporation. All Rights Reserved. 40
  • 41. Distributed Build Automation  Distribute build and testing on a cluster  Automatic provisioning  Artifact sharing at scale ©2013 LinkedIn Corporation. All Rights Reserved. 41
  • 42. ©2013 LinkedIn Corporation. All Rights Reserved. 42

Notes de l'éditeur

  1. Homogenous -> HeterogenousBuild vs buy, starting taking on more tasks internally. Started open-sourcing our own stuff to pay it forward.
  2. When there are more people who are new than established it’s hard to maintain anything
  3. We needed to scale ourselves. The answer was to establish tools team to focus on internal productivity, code management and process.Performance improvements -> waterfall releases to every 2 weeks to every day to N times per day to continuous dev
  4. If your code doesn’t impact my code then failures in your unit tests should not stop me from releasing my codeProducts move at different paces: experimentation, heavy development, stable and mature, maintenance mode etc.Public APIs at the code and service layers abstracts the messiness underneath.
  5. “out of the box” thinking should make you ask why the heck you were in the box in the first placeAutomation requires trust in the system
  6. But there must be basic sanity checks: our operations team must be able to configure and operate the products at scale, the organization must maintain focus and prioritize, have to consider compliance (legal, government, ethical)There’s constructive and destructive chaos. Multiproduct tries to define constructive chaos.
  7. A product can publish a single or many artifacts
  8. EOL dates solve several problems:I need certain versions to go away because they have bugs or flawsI need to not maintain too many versions. Focus my resources where they matter
  9. Currently a manual step for product owners to promote to production (need more trust in verification to remove this step)
  10. Dependency management probably what we need the build tool to do the mostXML is not a programming language.Groovy DSL has extreme learning curve, but our audience are programmers anyway.
  11. We are able to ask Gradle complex dependency questions and get the answers we need
  12. An example of where we elevate functionality to the product level using the Gradle plug-ins
  13. ~5,000 gradle executions per workday. ~10,000 mint executions
  14. We need daemon and parallel execution to make this possible
  15. Already made great progress: both in Gradle and in our plug-ins