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

Avatar for Rob Spieldenner

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