Deployment is the new build

        Andrew Phillips
Deployment is like the new build
Deployment is like the new build

 Deployment is the new build
Devops and Deployment


    Q: What does a talk like
 “Deployment is the new build”
have to do with Devops* anyway?



                             *yes, I know…
Devops and Deployment


A: We’re here because of shared
 experience that delivering value
requires a holistic view of software
  development and maintenance
The Road to Value
The Road to Value



We have ideas…
The Road to Value



…think about how to
 implement them…
The Road to Value



…write source code…
The Road to Value



…test the source code…
The Road to Value



…convert source code into
     deliverables…
The Road to Value



…make those deliverables
  accessible to users…
The Road to Value



…test the deliverables
    some more…
The Road to Value



…make them available to
      end users…
The Road to Value



GOTO TOP
The red bit
The red bit
•   We have ideas…
•   …think about how to implement them…
•   …write source code…
•   …test the source code…
•   …convert source code into deliverables…

• …make those deliverables accessible to users…
• …test the deliverables some more…

• …make them available to end users…
• GOTO TOP
Why the red bit?


Because our industry as a
   whole does this part
      really badly
Why the red bit?

Because, if we take a holistic
     approach to software
delivery, we often identify this
   as a key area to improve
di-'plȯi-mәnt

• Deployment: taking the components that make up a
  release (typically a specific version of an application)
  and getting them correctly set up in an infrastructure
  environment so that the release is accessible to (end)
  users
di-'plȯi-mәnt

• Deployment: taking the components that make up a
  release (typically a specific version of an application)
  and getting them correctly set up in an infrastructure
  environment so that the release is accessible to (end)
  users

  Let’s talk “on-demand” environments and virtual appliances later
Deployment today




 Here be demons
Deployment here today
   do     now     maybe
          this     this
  this



  then    then      this
  that    that     again




  then    then
   this    this   phew!
The Road to Value
Remember this?



   make
Remember this?
Remember this?




Here be demons
Build today




   GO!
Build today



How did this happen?
How did this happen?

1. Reusable commands
2. Models
3. Conventions++
Reusable commands

•    Recognising recurring low-level building blocks
•    Replacing copy’n’paste snippets with reusable
     libraries
•    Chunking sequences of low-level commands

Thinking Ant here
Models

•    Common chunks work with common types of
     data
•    Formalise data chunks into a domain model
•    Formalise chunks of work into phases
•    Use language-/domain-specific defaults

Thinking Maven here
Conventions++

•    Modifying a rigid convention-based system is
     cumbersome
•    Domain-/language-specific defaults and flow
     works out-of-the-box
•    Hook in with full control where you need to

Thinking Gradle here
How did this happen?

•   Not driven by industry standards! Just
    observation of common patterns
•   Changing out-of-the-box processes to match
    user expectation < user expectation changing
    to match out-of-the-box processes
•   “Mandatory” standards are quite flexible in
    practice
Deployment today


In here: “Reusable commands”
          or a bit beyond
Deployment today

In here: “Reusable commands”
          or a bit beyond

 Out there: make (if you’re lucky)
Deployment tomorrow?




        GO!
Getting to GO!

• Develop a common model
• (Re)discover vanilla
• Support a “clean build”
Common model

• Packages
• Environments
• Deployments
Common model

• Version everything
• Interoperability
• “Something to work with”
Re(discover) vanilla

• It Just Works™
• KISS, YAGNI & more alphabet soup
• Grandmother’s secrets
Re(discover) vanilla

• Value reusability
• Improve maintainability
• Minimize “ripple” changes
“clean build”

• Incremental as the goal
• Clean as the fallback
“clean build”

• Time To Rebuild < Time To Fix
• Prerequisite: versioning
• Prerequisite: known state for durable
  resources
Deployment is like the new build

 Deployment is the new build
Virtual appliances

• Deliverable: ready-to-run system
• “Press Play to start”
• Model:
   Package: virtual app
   Environment: hypervisor/platform
Making virtual appliances

• Deployment “ahead of time”
     TBD: dealing with customization
• Deployment at build time
Making working virtual appliances

•   Trust?
•   Eyeball?
•   Run and monitor?
•   ...?
Spoiled by CI

• Great expectations
   Unit testing
   Integration testing

   Pattern, style, compliance etc. checkers

   Docs, change logs, reports etc.

   …
The new CI?

 Unit testing ► file verification, ping
 Integration testing ► QA tests,

  application monitoring, DTrace
 Pattern, style, compliance etc. checkers

  ► policy engines, configuration checkers
 Docs, change logs, reports etc.

 …
Test ≠ Test

• Test the configuration, not the
  configurator
• Test the variable, not the template
• Test what, not how
The new CI?
• Food for thought
   Quality builds
   Dependent jobs

   Platform agents

   Virtual app repositories

  …
Building source code…that’s so 2011
Thank you!

Deployment is the new build

  • 1.
    Deployment is thenew build Andrew Phillips
  • 2.
    Deployment is likethe new build
  • 3.
    Deployment is likethe new build Deployment is the new build
  • 4.
    Devops and Deployment Q: What does a talk like “Deployment is the new build” have to do with Devops* anyway? *yes, I know…
  • 5.
    Devops and Deployment A:We’re here because of shared experience that delivering value requires a holistic view of software development and maintenance
  • 6.
  • 7.
    The Road toValue We have ideas…
  • 8.
    The Road toValue …think about how to implement them…
  • 9.
    The Road toValue …write source code…
  • 10.
    The Road toValue …test the source code…
  • 11.
    The Road toValue …convert source code into deliverables…
  • 12.
    The Road toValue …make those deliverables accessible to users…
  • 13.
    The Road toValue …test the deliverables some more…
  • 14.
    The Road toValue …make them available to end users…
  • 15.
    The Road toValue GOTO TOP
  • 16.
  • 17.
    The red bit • We have ideas… • …think about how to implement them… • …write source code… • …test the source code… • …convert source code into deliverables… • …make those deliverables accessible to users… • …test the deliverables some more… • …make them available to end users… • GOTO TOP
  • 18.
    Why the redbit? Because our industry as a whole does this part really badly
  • 19.
    Why the redbit? Because, if we take a holistic approach to software delivery, we often identify this as a key area to improve
  • 20.
    di-'plȯi-mәnt • Deployment: takingthe components that make up a release (typically a specific version of an application) and getting them correctly set up in an infrastructure environment so that the release is accessible to (end) users
  • 21.
    di-'plȯi-mәnt • Deployment: takingthe components that make up a release (typically a specific version of an application) and getting them correctly set up in an infrastructure environment so that the release is accessible to (end) users Let’s talk “on-demand” environments and virtual appliances later
  • 22.
  • 23.
    Deployment here today do now maybe this this this then then this that that again then then this this phew!
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
    Build today How didthis happen?
  • 30.
    How did thishappen? 1. Reusable commands 2. Models 3. Conventions++
  • 31.
    Reusable commands • Recognising recurring low-level building blocks • Replacing copy’n’paste snippets with reusable libraries • Chunking sequences of low-level commands Thinking Ant here
  • 32.
    Models • Common chunks work with common types of data • Formalise data chunks into a domain model • Formalise chunks of work into phases • Use language-/domain-specific defaults Thinking Maven here
  • 33.
    Conventions++ • Modifying a rigid convention-based system is cumbersome • Domain-/language-specific defaults and flow works out-of-the-box • Hook in with full control where you need to Thinking Gradle here
  • 34.
    How did thishappen? • Not driven by industry standards! Just observation of common patterns • Changing out-of-the-box processes to match user expectation < user expectation changing to match out-of-the-box processes • “Mandatory” standards are quite flexible in practice
  • 35.
    Deployment today In here:“Reusable commands” or a bit beyond
  • 36.
    Deployment today In here:“Reusable commands” or a bit beyond Out there: make (if you’re lucky)
  • 37.
  • 38.
    Getting to GO! •Develop a common model • (Re)discover vanilla • Support a “clean build”
  • 39.
    Common model • Packages •Environments • Deployments
  • 40.
    Common model • Versioneverything • Interoperability • “Something to work with”
  • 41.
    Re(discover) vanilla • ItJust Works™ • KISS, YAGNI & more alphabet soup • Grandmother’s secrets
  • 42.
    Re(discover) vanilla • Valuereusability • Improve maintainability • Minimize “ripple” changes
  • 43.
    “clean build” • Incrementalas the goal • Clean as the fallback
  • 44.
    “clean build” • TimeTo Rebuild < Time To Fix • Prerequisite: versioning • Prerequisite: known state for durable resources
  • 45.
    Deployment is likethe new build Deployment is the new build
  • 46.
    Virtual appliances • Deliverable:ready-to-run system • “Press Play to start” • Model:  Package: virtual app  Environment: hypervisor/platform
  • 47.
    Making virtual appliances •Deployment “ahead of time”  TBD: dealing with customization • Deployment at build time
  • 48.
    Making working virtualappliances • Trust? • Eyeball? • Run and monitor? • ...?
  • 49.
    Spoiled by CI •Great expectations  Unit testing  Integration testing  Pattern, style, compliance etc. checkers  Docs, change logs, reports etc.  …
  • 50.
    The new CI? Unit testing ► file verification, ping  Integration testing ► QA tests, application monitoring, DTrace  Pattern, style, compliance etc. checkers ► policy engines, configuration checkers  Docs, change logs, reports etc.  …
  • 51.
    Test ≠ Test •Test the configuration, not the configurator • Test the variable, not the template • Test what, not how
  • 52.
    The new CI? •Food for thought  Quality builds  Dependent jobs  Platform agents  Virtual app repositories …
  • 53.
  • 54.