Continuous Deployment
  Embrace Continuous Improvement


            Naresh Jain
                 @nashjain
          naresh@agilefaqs.com
        http://blogs.agilefaqs.com


         Licensed Under Creative Commons by Naresh Jain
                                                          1
Licensed Under Creative Commons by Naresh Jain
                                                 2
Licensed Under Creative Commons by Naresh Jain
                                                 2
Continuous Deployment




     Licensed Under Creative Commons by Naresh Jain
                                                      3
But....

Licensed Under Creative Commons by Naresh Jain
                                                 4
re nt!
                                                   diffe
                                                 re us?                                       ?
           Too                                e a or
                                             W F                                        h ere
               mu                                                                  em
                  ch                                                         probl
                        Ch                                            re a
                            aos                                    he
  Wh
      o? W
                               ?                             Is t
               hen
                  ?

                                                                   ROI?
Pro
   duc
       tivit
            y?




                 Licensed Under Creative Commons by Naresh Jain
                                                                                                  4
Me


Licensed Under Creative Commons by Naresh Jain
                                                 5
Licensed Under Creative Commons by Naresh Jain
                                                 6
Mumbai




Licensed Under Creative Commons by Naresh Jain
                                                 7
AgilePhilly
                                                 Tech Talks!




Licensed Under Creative Commons by Naresh Jain
                                                               8
FitNesse Panopticode ProTest



DBFit      FitDecorator                                    ProFIT



   La"u              Patang                         QWick


          Licensed Under Creative Commons by Naresh Jain
                                                                    9
Licensed Under Creative Commons by Naresh Jain
                                                 10
Licensed Under Creative Commons by Naresh Jain
                                                 11
Licensed Under Creative Commons by Naresh Jain
                                                 12
Licensed Under Creative Commons by Naresh Jain
                                                 13
Licensed Under Creative Commons by Naresh Jain
                                                 14
Licensed Under Creative Commons by Naresh Jain
                                                 15
Back in the Stone-age




     Licensed Under Creative Commons by Naresh Jain
                                                      16
Happiness/Excitement




                       Time/Money/Opportunity Cost
                         Licensed Under Creative Commons by Naresh Jain
                                                                          17
Plan
Happiness/Excitement




                              Time/Money/Opportunity Cost
                                Licensed Under Creative Commons by Naresh Jain
                                                                                 17
Plan


                              Design
Happiness/Excitement




                                       Time/Money/Opportunity Cost
                                         Licensed Under Creative Commons by Naresh Jain
                                                                                          17
Plan


                              Design
Happiness/Excitement




                                       Distribute




                                       Time/Money/Opportunity Cost
                                         Licensed Under Creative Commons by Naresh Jain
                                                                                          17
Plan


                              Design
Happiness/Excitement




                                       Distribute

                                                                Work in
                                                                Isolation




                                       Time/Money/Opportunity Cost
                                         Licensed Under Creative Commons by Naresh Jain
                                                                                          17
Plan


                              Design
Happiness/Excitement




                                       Distribute

                                                                Work in
                                                                Isolation

                                                                                          Integrate


                                       Time/Money/Opportunity Cost
                                         Licensed Under Creative Commons by Naresh Jain
                                                                                                      17
Last Minute Integration Surprises




         Licensed Under Creative Commons by Naresh Jain
                                                          18
BAD things were visible too Late...




         Licensed Under Creative Commons by Naresh Jain
                                                          19
Birth of CI



Licensed Under Creative Commons by Naresh Jain
                                                 20
Licensed Under Creative Commons by Naresh Jain
                                                 21
CI Helped Us Learn That...
 Life can Suck a lot Less!




       Licensed Under Creative Commons by Naresh Jain
                                                        22
CI Helped Us Learn That...
   Life can Suck a lot Less!
Collaboration               Feedback                              Quality




         Delivery Time                                  Wastage
                Licensed Under Creative Commons by Naresh Jain
                                                                            22
If people are afraid to
 check-in frequently...
   your CI process is
     NOT working.

      Licensed Under Creative Commons by Naresh Jain
                                                       23
We already do CI.
   What’s next?



    Licensed Under Creative Commons by Naresh Jain
                                                     24
Multi-Stage CI Process
    Scaling CI using Build Promotion




        Licensed Under Creative Commons by Naresh Jain
                                                         25
Licensed Under Creative Commons by Naresh Jain
                                                 26
While the
Lean-Start-up Community
    They tried something quite disruptive...




           Licensed Under Creative Commons by Naresh Jain
                                                            27
Continuous Deployment (CD)




        Licensed Under Creative Commons by Naresh Jain
                                                         28
CD is quite natural for
 companies delivering
   content via Web

      Licensed Under Creative Commons by Naresh Jain
                                                       29
Freeset - In Business for Freedom
         Licensed Under Creative Commons by Naresh Jain
                                                          30
Stage 1




            Static
            Files
 DB




     freesetglobal.com
     s



                 Vie
 te
da




                  w
Up




      Freeset - In Business for Freedom
                         Licensed Under Creative Commons by Naresh Jain
                                                                          30
Stage 1
                                                                        Stage 2




            Static                                             Static                          Static
            Files                                              Files                           Files
 DB                                             DB                                      DB
                         Structural


                          Changes                                                Sync




     freesetglobal.com                         dev.freesetglobal.com                    freesetglobal.com
     s




                                                     Updates
                 Vie
 te




                                                                                                  View
da




                  w
Up




                                                                            ck
                                                                           li
                                                                       -C
                                                                           oy
                                                                      le
                                                                        pl
                                                                  ng
                                                                      De
                                                                 Si




      Freeset - In Business for Freedom
                               Licensed Under Creative Commons by Naresh Jain
                                                                                                            30
Freeset Demo



 Licensed Under Creative Commons by Naresh Jain
                                                  31
Benefits of CD



  Licensed Under Creative Commons by Naresh Jain
                                                   32
Automation removes
     Errors



    Licensed Under Creative Commons by Naresh Jain
                                                     33
Eliminates stressful
   release crunch



    Licensed Under Creative Commons by Naresh Jain
                                                     34
Users continuously see
    improvements



      Licensed Under Creative Commons by Naresh Jain
                                                       35
Reducing batch size
helps drive out waste



     Licensed Under Creative Commons by Naresh Jain
                                                      36
Faster responses to
  customer issues



    Licensed Under Creative Commons by Naresh Jain
                                                     37
A/B testing is easier
due to less release
     overhead


     Licensed Under Creative Commons by Naresh Jain
                                                      38
Encourages
experimenting with
    new ideas


    Licensed Under Creative Commons by Naresh Jain
                                                     39
Allows for fine-grained
monitoring of changes



      Licensed Under Creative Commons by Naresh Jain
                                                       40
Provides satisfaction
from seeing constant
       progress



     Licensed Under Creative Commons by Naresh Jain
                                                      41
Can we embrace CD
    for eLearning?
Rich Multi-Media Content
  Video, Screencasts, Quizzes, Images, Personas, etc.

Programming Exercises
  Java, C#, C++, C & Python

  Mac OS, Windows, Linux, Solaris


Different IDE Plugins

Server side code analysis                                 (Java, C#, C++, C & Python)

                 Licensed Under Creative Commons by Naresh Jain
                                                                                    42
This is what we did...



     Licensed Under Creative Commons by Naresh Jain
                                                      43
Deploy build to inactive
 production servers




      Licensed Under Creative Commons by Naresh Jain
                                                       44
Inactive joins the cluster




       Licensed Under Creative Commons by Naresh Jain
                                                        45
Delivery tests verify
 inactive release




     Licensed Under Creative Commons by Naresh Jain
                                                      46
Reverse proxy swaps
 inactive with active




     Licensed Under Creative Commons by Naresh Jain
                                                      47
Licensed Under Creative Commons by Naresh Jain
                                                 48
CD Requires Zero Downtime




        Licensed Under Creative Commons by Naresh Jain
                                                         49
Zero Downtime Requires
Performing updates without interrupting users is
   essential for Zero Downtime deployments.

• The application code
• Database schema
• Data files
• Web Server
• Application Server or Servlet Container
• Database Server
• OS upgrades and patches
               Licensed Under Creative Commons by Naresh Jain
                                                                50
What about DB
 Upgrades?
Will Continuous Deployment work?




     Licensed Under Creative Commons by Naresh Jain
                                                      51
Hibernate


• hbm2ddl.auto = update
• Rarely we need to go in and update DB
  manually




             Licensed Under Creative Commons by Naresh Jain
                                                              52
Zero-downtime DB Updates
        012_rename_login_id_to_user_name




012_add_user_name_column 02_remove_login_id_column


        expansion                                               contraction

         Src: Owen Rogers http://exortech.com/blog/
                    Licensed Under Creative Commons by Naresh Jain
                                                                              53
Zero-downtime DB Updates




    Src: Owen Rogers http://exortech.com/blog/
             Licensed Under Creative Commons by Naresh Jain
                                                              54
Zero-downtime DB Updates
  • expansion




     Src: Owen Rogers http://exortech.com/blog/
              Licensed Under Creative Commons by Naresh Jain
                                                               54
Zero-downtime DB Updates
  • expansion
   • preserves backwards compatibility




     Src: Owen Rogers http://exortech.com/blog/
              Licensed Under Creative Commons by Naresh Jain
                                                               54
Zero-downtime DB Updates
  • expansion
   • preserves backwards compatibility
  • contract



     Src: Owen Rogers http://exortech.com/blog/
              Licensed Under Creative Commons by Naresh Jain
                                                               54
Zero-downtime DB Updates
  • expansion
   • preserves backwards compatibility
  • contract
   • clean up


     Src: Owen Rogers http://exortech.com/blog/
              Licensed Under Creative Commons by Naresh Jain
                                                               54
Industrial Logic’s
eLearning CD Demo



    Licensed Under Creative Commons by Naresh Jain
                                                     55
Eventually...




Licensed Under Creative Commons by Naresh Jain
                                                 56
CD’s Impact on
 Team Culture


  Licensed Under Creative Commons by Naresh Jain
                                                   57
Encourage Evolutionary Design and
 Continuous Improvement culture




          Licensed Under Creative Commons by Naresh Jain
                                                           58
Breaks work into micro-pieces,
thereby enabling micro-deliveries




          Licensed Under Creative Commons by Naresh Jain
                                                           59
Limited Work In Progress




       Licensed Under Creative Commons by Naresh Jain
                                                        60
Knows when to hide or
reveal work in progress




      Licensed Under Creative Commons by Naresh Jain
                                                       61
Team takes shared ownership of the
entire software development lifecycle




            Licensed Under Creative Commons by Naresh Jain
                                                             62
The product is in a
           always-working-state




No developer is blocked because they can't get stable code
                   Licensed Under Creative Commons by Naresh Jain
                                                                    63
Stop the Line Culture




Team catches issues at the source and avoid last
 minute integration and deployment nightmares
             Licensed Under Creative Commons by Naresh Jain
                                                              64
Team crave for rapid feedback




         Licensed Under Creative Commons by Naresh Jain
                                                          65
Complete Traceability




Version Control, Project & Requirements
Managements tool, Bug Tracking and Build
    system are completely integrated
          Licensed Under Creative Commons by Naresh Jain
                                                           66
Questions?
    Naresh Jain
         @nashjain
   naresh@agilefaqs.com
 http://blogs.agilefaqs.com


  Licensed Under Creative Commons by Naresh Jain
                                                   67

Continuous Deployment Demystified

  • 1.
    Continuous Deployment Embrace Continuous Improvement Naresh Jain @nashjain naresh@agilefaqs.com http://blogs.agilefaqs.com Licensed Under Creative Commons by Naresh Jain 1
  • 2.
    Licensed Under CreativeCommons by Naresh Jain 2
  • 3.
    Licensed Under CreativeCommons by Naresh Jain 2
  • 4.
    Continuous Deployment Licensed Under Creative Commons by Naresh Jain 3
  • 5.
    But.... Licensed Under CreativeCommons by Naresh Jain 4
  • 6.
    re nt! diffe re us? ? Too e a or W F h ere mu em ch probl Ch re a aos he Wh o? W ? Is t hen ? ROI? Pro duc tivit y? Licensed Under Creative Commons by Naresh Jain 4
  • 7.
    Me Licensed Under CreativeCommons by Naresh Jain 5
  • 8.
    Licensed Under CreativeCommons by Naresh Jain 6
  • 9.
    Mumbai Licensed Under CreativeCommons by Naresh Jain 7
  • 10.
    AgilePhilly Tech Talks! Licensed Under Creative Commons by Naresh Jain 8
  • 11.
    FitNesse Panopticode ProTest DBFit FitDecorator ProFIT La"u Patang QWick Licensed Under Creative Commons by Naresh Jain 9
  • 12.
    Licensed Under CreativeCommons by Naresh Jain 10
  • 13.
    Licensed Under CreativeCommons by Naresh Jain 11
  • 14.
    Licensed Under CreativeCommons by Naresh Jain 12
  • 15.
    Licensed Under CreativeCommons by Naresh Jain 13
  • 16.
    Licensed Under CreativeCommons by Naresh Jain 14
  • 17.
    Licensed Under CreativeCommons by Naresh Jain 15
  • 18.
    Back in theStone-age Licensed Under Creative Commons by Naresh Jain 16
  • 19.
    Happiness/Excitement Time/Money/Opportunity Cost Licensed Under Creative Commons by Naresh Jain 17
  • 20.
    Plan Happiness/Excitement Time/Money/Opportunity Cost Licensed Under Creative Commons by Naresh Jain 17
  • 21.
    Plan Design Happiness/Excitement Time/Money/Opportunity Cost Licensed Under Creative Commons by Naresh Jain 17
  • 22.
    Plan Design Happiness/Excitement Distribute Time/Money/Opportunity Cost Licensed Under Creative Commons by Naresh Jain 17
  • 23.
    Plan Design Happiness/Excitement Distribute Work in Isolation Time/Money/Opportunity Cost Licensed Under Creative Commons by Naresh Jain 17
  • 24.
    Plan Design Happiness/Excitement Distribute Work in Isolation Integrate Time/Money/Opportunity Cost Licensed Under Creative Commons by Naresh Jain 17
  • 25.
    Last Minute IntegrationSurprises Licensed Under Creative Commons by Naresh Jain 18
  • 26.
    BAD things werevisible too Late... Licensed Under Creative Commons by Naresh Jain 19
  • 27.
    Birth of CI LicensedUnder Creative Commons by Naresh Jain 20
  • 28.
    Licensed Under CreativeCommons by Naresh Jain 21
  • 29.
    CI Helped UsLearn That... Life can Suck a lot Less! Licensed Under Creative Commons by Naresh Jain 22
  • 30.
    CI Helped UsLearn That... Life can Suck a lot Less! Collaboration Feedback Quality Delivery Time Wastage Licensed Under Creative Commons by Naresh Jain 22
  • 31.
    If people areafraid to check-in frequently... your CI process is NOT working. Licensed Under Creative Commons by Naresh Jain 23
  • 32.
    We already doCI. What’s next? Licensed Under Creative Commons by Naresh Jain 24
  • 33.
    Multi-Stage CI Process Scaling CI using Build Promotion Licensed Under Creative Commons by Naresh Jain 25
  • 34.
    Licensed Under CreativeCommons by Naresh Jain 26
  • 35.
    While the Lean-Start-up Community They tried something quite disruptive... Licensed Under Creative Commons by Naresh Jain 27
  • 36.
    Continuous Deployment (CD) Licensed Under Creative Commons by Naresh Jain 28
  • 37.
    CD is quitenatural for companies delivering content via Web Licensed Under Creative Commons by Naresh Jain 29
  • 38.
    Freeset - InBusiness for Freedom Licensed Under Creative Commons by Naresh Jain 30
  • 39.
    Stage 1 Static Files DB freesetglobal.com s Vie te da w Up Freeset - In Business for Freedom Licensed Under Creative Commons by Naresh Jain 30
  • 40.
    Stage 1 Stage 2 Static Static Static Files Files Files DB DB DB Structural Changes Sync freesetglobal.com dev.freesetglobal.com freesetglobal.com s Updates Vie te View da w Up ck li -C oy le pl ng De Si Freeset - In Business for Freedom Licensed Under Creative Commons by Naresh Jain 30
  • 41.
    Freeset Demo LicensedUnder Creative Commons by Naresh Jain 31
  • 42.
    Benefits of CD Licensed Under Creative Commons by Naresh Jain 32
  • 43.
    Automation removes Errors Licensed Under Creative Commons by Naresh Jain 33
  • 44.
    Eliminates stressful release crunch Licensed Under Creative Commons by Naresh Jain 34
  • 45.
    Users continuously see improvements Licensed Under Creative Commons by Naresh Jain 35
  • 46.
    Reducing batch size helpsdrive out waste Licensed Under Creative Commons by Naresh Jain 36
  • 47.
    Faster responses to customer issues Licensed Under Creative Commons by Naresh Jain 37
  • 48.
    A/B testing iseasier due to less release overhead Licensed Under Creative Commons by Naresh Jain 38
  • 49.
    Encourages experimenting with new ideas Licensed Under Creative Commons by Naresh Jain 39
  • 50.
    Allows for fine-grained monitoringof changes Licensed Under Creative Commons by Naresh Jain 40
  • 51.
    Provides satisfaction from seeingconstant progress Licensed Under Creative Commons by Naresh Jain 41
  • 52.
    Can we embraceCD for eLearning? Rich Multi-Media Content Video, Screencasts, Quizzes, Images, Personas, etc. Programming Exercises Java, C#, C++, C & Python Mac OS, Windows, Linux, Solaris Different IDE Plugins Server side code analysis (Java, C#, C++, C & Python) Licensed Under Creative Commons by Naresh Jain 42
  • 53.
    This is whatwe did... Licensed Under Creative Commons by Naresh Jain 43
  • 54.
    Deploy build toinactive production servers Licensed Under Creative Commons by Naresh Jain 44
  • 55.
    Inactive joins thecluster Licensed Under Creative Commons by Naresh Jain 45
  • 56.
    Delivery tests verify inactive release Licensed Under Creative Commons by Naresh Jain 46
  • 57.
    Reverse proxy swaps inactive with active Licensed Under Creative Commons by Naresh Jain 47
  • 58.
    Licensed Under CreativeCommons by Naresh Jain 48
  • 59.
    CD Requires ZeroDowntime Licensed Under Creative Commons by Naresh Jain 49
  • 60.
    Zero Downtime Requires Performingupdates without interrupting users is essential for Zero Downtime deployments. • The application code • Database schema • Data files • Web Server • Application Server or Servlet Container • Database Server • OS upgrades and patches Licensed Under Creative Commons by Naresh Jain 50
  • 61.
    What about DB Upgrades? Will Continuous Deployment work? Licensed Under Creative Commons by Naresh Jain 51
  • 62.
    Hibernate • hbm2ddl.auto =update • Rarely we need to go in and update DB manually Licensed Under Creative Commons by Naresh Jain 52
  • 63.
    Zero-downtime DB Updates 012_rename_login_id_to_user_name 012_add_user_name_column 02_remove_login_id_column expansion contraction Src: Owen Rogers http://exortech.com/blog/ Licensed Under Creative Commons by Naresh Jain 53
  • 64.
    Zero-downtime DB Updates Src: Owen Rogers http://exortech.com/blog/ Licensed Under Creative Commons by Naresh Jain 54
  • 65.
    Zero-downtime DB Updates • expansion Src: Owen Rogers http://exortech.com/blog/ Licensed Under Creative Commons by Naresh Jain 54
  • 66.
    Zero-downtime DB Updates • expansion • preserves backwards compatibility Src: Owen Rogers http://exortech.com/blog/ Licensed Under Creative Commons by Naresh Jain 54
  • 67.
    Zero-downtime DB Updates • expansion • preserves backwards compatibility • contract Src: Owen Rogers http://exortech.com/blog/ Licensed Under Creative Commons by Naresh Jain 54
  • 68.
    Zero-downtime DB Updates • expansion • preserves backwards compatibility • contract • clean up Src: Owen Rogers http://exortech.com/blog/ Licensed Under Creative Commons by Naresh Jain 54
  • 69.
    Industrial Logic’s eLearning CDDemo Licensed Under Creative Commons by Naresh Jain 55
  • 70.
    Eventually... Licensed Under CreativeCommons by Naresh Jain 56
  • 71.
    CD’s Impact on Team Culture Licensed Under Creative Commons by Naresh Jain 57
  • 72.
    Encourage Evolutionary Designand Continuous Improvement culture Licensed Under Creative Commons by Naresh Jain 58
  • 73.
    Breaks work intomicro-pieces, thereby enabling micro-deliveries Licensed Under Creative Commons by Naresh Jain 59
  • 74.
    Limited Work InProgress Licensed Under Creative Commons by Naresh Jain 60
  • 75.
    Knows when tohide or reveal work in progress Licensed Under Creative Commons by Naresh Jain 61
  • 76.
    Team takes sharedownership of the entire software development lifecycle Licensed Under Creative Commons by Naresh Jain 62
  • 77.
    The product isin a always-working-state No developer is blocked because they can't get stable code Licensed Under Creative Commons by Naresh Jain 63
  • 78.
    Stop the LineCulture Team catches issues at the source and avoid last minute integration and deployment nightmares Licensed Under Creative Commons by Naresh Jain 64
  • 79.
    Team crave forrapid feedback Licensed Under Creative Commons by Naresh Jain 65
  • 80.
    Complete Traceability Version Control,Project & Requirements Managements tool, Bug Tracking and Build system are completely integrated Licensed Under Creative Commons by Naresh Jain 66
  • 81.
    Questions? Naresh Jain @nashjain naresh@agilefaqs.com http://blogs.agilefaqs.com Licensed Under Creative Commons by Naresh Jain 67