Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Continuous Delivery at Netflix: Uberconf

Continuous Delivery at Netflix: Uberconf

Uberconf presentation of Continuous Delivery at Netflix: Speed at Scale

Rob Spieldenner

June 27, 2014
Tweet

More Decks by Rob Spieldenner

Other Decks in Programming

Transcript

  1. Commit Unit Test Build Bake Deploy To Test Integration &

    Acceptance Tests Red/Black Push Continuous Delivery Pipeline
  2. Build simplify build file with plugins add metadata calculate version

    output jar/war, sources, javadoc, rpm/deb lock dynamic dependencies
  3. apply plugin: ‘nebula.nebula-project’ Builds Javadoc, Sources and a Test jar

    Record information about the build and stores it in the .jar, via gradle-info-plugin Easy specification of people involved in a project via gradle-contacts-plugin
  4. What Goes in the Manifest Module-Source=/mpex-common Module-Origin=ssh://[email protected]flix.com:7999/nexmpl/multiprojectexample.git Change=767e5d7 Manifest-Version=1.0 Implementation-Title=netflix#mpex-common;3.0.0

    Implementation-Version=3.0.0 Built-Status=snapshot Built-By=rspieldenner Build-Date=2014-06-12_11:24:00 Gradle-Version=1.12-20140604072223+0000 Build-Host=localhost Build-Job=LOCAL Build-Number=LOCAL Build-Id=LOCAL Created-By=1.7.0_51-b13 (Oracle Corporation) Build-Java-Version=1.7.0_51 Nebula-Version=1.48 Implementation-Vendor=Netflix, Inc. X-Compile-Target-JDK=1.7 X-Compile-Source-JDK=1.7 Module-Owner=person@netflix.com Module-Email=team@netflix.com
  5. dependencies.lock {
 "com.google.guava:guava": { "locked": "14.0.1", 
 "requested": "14.+" },


    ”junit:junit": { "locked": "4.11", "requested": "4.+" }
 }

  6. Job DSL Example example
 def project = 'quidryan/aws-sdk-test'
 def branchApi

    = new URL(“https://api.github.com/repos/${project}/branches”)
 def branches = new groovy.json.JsonSlurper().parse(branchApi.newReader())
 branches.each {
 def branchName = it.name
 job {
 name “${project}-${branchName}”.replaceAll(‘/’, ‘-’)
 scm {
 git(“git://github.com/${project}.git”, branchName)
 }
 steps {
 gradle(‘test’)
 }
 }
 }
  7. Monitoring How many people are watching? Can the new version

    handle load? Errors and logging suro, jmx
  8. Continuous Delivery Pipeline Commit Unit Test Build Bake Deploy To

    Test Integration & Acceptance Tests Red/Black Push
  9. Adrian Cockcroft Flowcon Keynote - Velocity and Volume (or Speed

    Wins) - http://www.youtube.com/ watch?v=wyWI3gLpB8o Roy Rapoport - Cloud Operations at Netflix - http:// www.youtube.com/watch?v=7779Wrun5fo AWS re:Invent - http://reinvent.awsevents.com/ recap2013.html Other Presentations