Software Development and Continuous Delivery
Vmware August 25th, 2015
The LinkedIn Story
 There was a single, relatively homogenous code base
– Build from source, “spaghetti” dependency management
 Java, Spring, Ant, …
 JavaScript, HTML, JSPs, CSS, …
 JARs, WARs, Jetty, Tomcat, …
Then everything went exponential
Number of developers, programming languages, build systems,
frameworks, lines of code, servers, users, page views, …
… and pretty much everything else
Hadoop
LinkedIn Software Development
 We don’t ever want to be in the box
– Living on the bleeding edge, often defining it
– Technical experimentation and diversity encouraged
 Cheap experimentation
– Pace of iteration
– Continuous Delivery
 Automation: people are too slow
 Build over buy
Constructive Chaos
Our Answer: Multiproduct
 Tools, services, interfaces and processes that are architected for a
diverse technology stack
 Agnostic to version control, build system and programming
technology
 Abstracts common software lifecycle tasks
– For example: “build”, “test”, “release”
– Provide a default implementation, allow users to override
Key Concepts
 Elevate tooling from artifact to product level
 Metadata ties the tooling together
 Pluggable implementation of subsystems
 Version management
 Continuous and automated delivery
Source
Control
Build System Deployment
Continuous Delivery in Multiproduct
 Continuous Delivery
– Automatically deliver every code change to “production”
 Automated pipeline triggered on developer change
– No other developer action needed
 Processing around 1,000 code changes a day
– Median time to artifact publish: ~20 minutes
11
Keys to Continuous Delivery
 Backwards compatible APIs
– Strong API contracts, implementation can change
– Culture and Enforcement
– Continuous Integration
– https://www.linkedin.com/pulse/find-seams-jens-pillgram-larsen
 Push feedback earlier
– Feedback loops: post-mortems, root cause analysis, culture
– Developer can run same tests as CI (dev > qa > staging > prod)
 Incentivize desired behavior
– Breakage -> learning and improvement
Software Craftsmanship
 You know it when you see it
– Documentation, testing, code quality, design, architecture, APIs
– Maintainability, extensibility
 Is valued everywhere: production code, tests, build logic, process
 Is a feeling; an emotion
 Is necessary, but not sufficient
 https://www.linkedin.com/pulse/inside-software-jens-pillgram-larsen
Deployment
 Simple concept, hard problem
– Download an artifact and run it
 Artifact
– Ensures “once and once only” build, validation and release
– Consistency
– Speed
– Caching
 Separate code and configuration
 Dynamic provisioning
12-24 Months
 Connect Development to Delivery
– Continuous Task Execution
– Intelligent Developer Platform
– Infinite Scalability
http://www.slideshare.net/jenspillgram/software-engineering-in-the-continuous-age
VMware August 2015

VMware August 2015

  • 1.
    Software Development andContinuous Delivery Vmware August 25th, 2015
  • 2.
    The LinkedIn Story There was a single, relatively homogenous code base – Build from source, “spaghetti” dependency management  Java, Spring, Ant, …  JavaScript, HTML, JSPs, CSS, …  JARs, WARs, Jetty, Tomcat, …
  • 3.
    Then everything wentexponential Number of developers, programming languages, build systems, frameworks, lines of code, servers, users, page views, … … and pretty much everything else
  • 4.
  • 5.
    LinkedIn Software Development We don’t ever want to be in the box – Living on the bleeding edge, often defining it – Technical experimentation and diversity encouraged  Cheap experimentation – Pace of iteration – Continuous Delivery  Automation: people are too slow  Build over buy
  • 6.
  • 7.
    Our Answer: Multiproduct Tools, services, interfaces and processes that are architected for a diverse technology stack  Agnostic to version control, build system and programming technology  Abstracts common software lifecycle tasks – For example: “build”, “test”, “release” – Provide a default implementation, allow users to override
  • 8.
    Key Concepts  Elevatetooling from artifact to product level  Metadata ties the tooling together  Pluggable implementation of subsystems  Version management  Continuous and automated delivery
  • 9.
  • 11.
    Continuous Delivery inMultiproduct  Continuous Delivery – Automatically deliver every code change to “production”  Automated pipeline triggered on developer change – No other developer action needed  Processing around 1,000 code changes a day – Median time to artifact publish: ~20 minutes 11
  • 13.
    Keys to ContinuousDelivery  Backwards compatible APIs – Strong API contracts, implementation can change – Culture and Enforcement – Continuous Integration – https://www.linkedin.com/pulse/find-seams-jens-pillgram-larsen  Push feedback earlier – Feedback loops: post-mortems, root cause analysis, culture – Developer can run same tests as CI (dev > qa > staging > prod)  Incentivize desired behavior – Breakage -> learning and improvement
  • 15.
    Software Craftsmanship  Youknow it when you see it – Documentation, testing, code quality, design, architecture, APIs – Maintainability, extensibility  Is valued everywhere: production code, tests, build logic, process  Is a feeling; an emotion  Is necessary, but not sufficient  https://www.linkedin.com/pulse/inside-software-jens-pillgram-larsen
  • 16.
    Deployment  Simple concept,hard problem – Download an artifact and run it  Artifact – Ensures “once and once only” build, validation and release – Consistency – Speed – Caching  Separate code and configuration  Dynamic provisioning
  • 20.
    12-24 Months  ConnectDevelopment to Delivery – Continuous Task Execution – Intelligent Developer Platform – Infinite Scalability http://www.slideshare.net/jenspillgram/software-engineering-in-the-continuous-age

Editor's Notes

  • #5 Homogenous -> Heterogenous Build vs buy, starting taking on more tasks internally. Started open-sourcing our own stuff to pay it forward.
  • #6 “out of the box” thinking should make you ask why the heck you were in the box in the first place Automation requires trust in the system
  • #7 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.
  • #9 A product can publish a single or many artifacts