Daniel Pötzinger
CIO AOE media GmbH
What is your
               cycle
time?
are youscared
     on release days?
late night
bugfixing?
there is another
way!
How?
Automate everything!
Automate everything!
   build
Automate everything!
   build
   test
Automate everything!
   build
   test
   deploy
Do it frequently
Do it frequently



              ys 3
           plo .
         de
  fl ickr a day..
    tim es
agile


   agile


        agile

   continuous deployment
agile development best practice:
              agile
 test driven / refactoring / ddd


                agile


          ...
agile development best practice:
              agile
 test driven / refactoring / ddd


             agile
     continuous...
agile development best practice:
              agile
 test driven / refactoring / ddd


             agile
     continuous...
It is not only the
source code!
It is not only the
source code!


         What else?
Source Code
Configuration



               Source Code
Environments



Configuration



               Source Code
Environments



Configuration                  Data


               Source Code
Principle
s
Check everything into SVN
Check everything into SVN

•   all source code (of course)

•   each build script

•   each important configuration
    (ap...
do continuous integration
do continuous integration



      t ea rly
    mi
com it often
co mm
do continuous integration



       t ea  rly
    mio ten
  om av tid f
c      i o bra
co mm            nch
              ...
do continuous integration



       t ea  rly
     mio ten
  om av tid f omprehen     sive
c      i o brc
c o mm          ...
do continuous integration



       t ea  rly
    mio ten
  om av tid f omprehen fastsive
c      i o brc
   mm           a...
use test automation...
use test automation...
use test automation...
use test automation...
use test automation...
use test automation...
use test automation...

     ...and feel responsible
automate deployment
automate deployment




            sa me
        the
    loy every
dep
  wa  y to ent!
    nvir onm
  e
automate deployment




            sa me
        the
    loy every
dep                 do it frequently
  wa  y to ent!
 ...
automate deployment


              adjust
         c onfigurations
         on deploy time
             sa me
        the
...
automate deployment


               adjust
          c onfigurations
                     ./deme
          on de<e y ti pl...
Plan and test rollback
The
Deployme
nt Pipeline
deployment pipeline


                test + build
                  package
test strategy




                verification...
deployment pipeline


                test + build
                  package
                                 Version 1
te...
deployment pipeline


                test + build
                  package
test strategy




                verification...
deployment pipeline


                test + build
                  package
test strategy




                verification...
deployment pipeline


                test + build
                  package
                                             ...
deployment pipeline


                test + build
                  package
test strategy




                verification...
deployment pipeline


                test + build
                  package
                                             ...
deployment pipeline
               Build Source (SVN, Backups)


     Commit
      Stage


Version_1234




              ...
deployment pipeline
                      Build Source (SVN, Backups)

                      Acceptance
     Commit    aut...
deployment pipeline
                      Build Source (SVN, Backups)

                      Acceptance
     Commit    aut...
deployment pipeline
                      Build Source (SVN, Backups)

                      Acceptance      Performance
 ...
deployment pipeline
                      Build Source (SVN, Backups)

                      Acceptance      Performance
 ...
deployment pipeline
                      Build Source (SVN, Backups)

                      Acceptance      Performance
 ...
deployment pipeline
                      Build Source (SVN, Backups)

                      Acceptance      Performance
 ...
deployment pipeline
                      Build Source (SVN, Backups)

                      Acceptance      Performance
 ...
view on artifact repository
the commit stage


•   <5min: Run Unit Tests asap

•   <10 min: Build Project (clean, build)

•   Result:

         •    s...
build only one package


•   pull configuration setting for environment on deploy

•   be able to rebuild any build by spec...
acceptance stage
acceptance stage

• Define   tests in domain specific language
acceptance stage

• Define   tests in domain specific language

• Deployment   to Environment „latest“ or „UAT“
acceptance stage

• Define    tests in domain specific language

• Deployment     to Environment „latest“ or „UAT“

• Run   ...
acceptance stage

• Define    tests in domain specific language

• Deployment     to Environment „latest“ or „UAT“

• Run   ...
Release
Source Code
Configuration



               Source Code
Environments



Configuration



               Source Code
Environments



Configuration                  Data


               Source Code
SVN structure for TYPO3

<projectname>
 branches
 tags
                   build scripts (ant)
 trunk
   build
   scripts
 ...
TYPO3 configuration

- Domains:
  - sys_domain
  - template: config.baseUrl
- localconf.php
  - Database
  - Extensionsettin...
Environments (example)
 dev x    latest   test (UAT)




                   production
Environments (example)
 dev x    latest   test (UAT)


                   performance




                   production
Environments (example)
 dev x    latest   test (UAT)


                   performance


                   integration


 ...
Environments (example)
 dev x    latest     test (UAT)


                     performance


                     integrati...
managing data
managing data




Production:
- Content
- Transaction data
managing data




Production:          Deploy:
- Content            - Configuration
- Transaction data   - Content
managing data




Production:          Deploy:          UAT:
- Content            - Configuration   - Testdata
- Transactio...
managing data
                                      Backupstorage




Production:          Deploy:             UAT:
- Cont...
managing data
                                      Backupstorage




Production:          Deploy:             UAT:
- Cont...
managing data
                                      Backupstorage




   use independent technical IDs


Production:      ...
Hot Deployment
what to deploy?

-   database structure changes
-   configuration data
-   updated content
-   source code
build steps
Preparation       SVN


Filesystem
              backupstorage


Database



Package
build steps
Preparation:
- clean
- revision Tag extensions
build steps

Filesystem:
- checkout project from SVN
- build TYPO3 source
- get defined extensions
- get assets (fileadmin /...
build steps
Database:
- create structure from Master
- import master data
- update database structure
- import data from t...
build steps
Database:
- create structure from Master
- import master data
- update database structure
- import data from t...
package

Package (Delta):
- use files from build process
+ create filesystem delta
+ tar.gz all the stuff
deploying a package
- Deploy Database:
  - structure_up.sql
  - merge.sql
  - all full-*.sqls
- Deploy Filesystem
- Apply ...
...
useful extensions

- clearcache      (enables „clear all cache“ from
commandline)

- db_sequenzer           (seperate tech...
green / blue deployment


   current live
     version
                  previous live
                    version
green / blue deployment


   current live
     version
                  previous live
                    version
       ...
green / blue deployment


                  previous live
                    version
   current live
     version
       ...
Hudson
Hudson
Hudson
Hudson
is your deployment still a
         gamble?
is your deployment still a
         gamble?
Continuous deployment
Continuous deployment
Continuous deployment
Continuous deployment
Continuous deployment
Continuous deployment
Upcoming SlideShare
Loading in...5
×

Continuous deployment

15,753

Published on

Published in: Technology, Business
7 Comments
40 Likes
Statistics
Notes
  • excellent summary~
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • good
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Das ist Perfect.
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • N? GHD Rettetang Norge har forandret verden av h?ret skj?nnhet og deres strykejern har blitt en vanedannende tilbeh?r for kvinner overalt.Og den nye GHD Gyldne Rettetang er en av de mest popul?re h?ret verkt?y noensinne! Det markerer utviklingen av GHD Rettetang inn bare for ? lage kr?ller,b?lger og vipper s? vel som nydelig rett hair.Hjelp den forbedrede mircroprocessor ? s?rge for at platene varmes opp raskt og bo p? optimal temperatur til enhver tid,og det vil automatisk sl? seg av etter 30.GHD m?rke rettetang er den perfekte rettetang verkt?y for jenta med en drivende naturen og det blir en av de mest popul?re ghd straighteners noensinne ? treffe markedet med glans svart finish.GHD Rettetang Sort utf?rer perfekt for ? lage butikk og sprett kr?ller,vipper,b?lger og perfekt straight.Recreate din favoritt kjendis-stil,eller gi deg selv en helt ny look. fengying11
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Thats how we celebrated the whole solution: http://twitpic.com/20nzh5
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
No Downloads
Views
Total Views
15,753
On Slideshare
0
From Embeds
0
Number of Embeds
19
Actions
Shares
0
Downloads
627
Comments
7
Likes
40
Embeds 0
No embeds

No notes for slide

  • cycle time = time a change in your code takes to be deployed on live (in a reliable (includes testing) and repeatable way)

    reduced cycle time = improved competitive


  • (thats not me :-)















  • without CI the default state of your application is &amp;#x201E;broken&amp;#x201C; unless you prove otherwise...
    with COIN the project default state is working with a certain level of confidence...
  • without CI the default state of your application is &amp;#x201E;broken&amp;#x201C; unless you prove otherwise...
    with COIN the project default state is working with a certain level of confidence...
  • without CI the default state of your application is &amp;#x201E;broken&amp;#x201C; unless you prove otherwise...
    with COIN the project default state is working with a certain level of confidence...
  • without CI the default state of your application is &amp;#x201E;broken&amp;#x201C; unless you prove otherwise...
    with COIN the project default state is working with a certain level of confidence...

















































































  • Hudson + Plugins gives you a lot of possibilities (e.g. &amp;#x201E;promoted builds&amp;#x201C; &amp;#x201E;parameterized build&amp;#x201C;, &amp;#x201E;build downstreams&amp;#x201C;, share properties ...)
  • Hudson + Plugins gives you a lot of possibilities (e.g. &amp;#x201E;promoted builds&amp;#x201C; &amp;#x201E;parameterized build&amp;#x201C;, &amp;#x201E;build downstreams&amp;#x201C;, share properties ...)
  • Hudson + Plugins gives you a lot of possibilities (e.g. &amp;#x201E;promoted builds&amp;#x201C; &amp;#x201E;parameterized build&amp;#x201C;, &amp;#x201E;build downstreams&amp;#x201C;, share properties ...)




  • Continuous deployment

    1. 1. Daniel Pötzinger CIO AOE media GmbH
    2. 2. What is your cycle time?
    3. 3. are youscared on release days?
    4. 4. late night bugfixing?
    5. 5. there is another way!
    6. 6. How?
    7. 7. Automate everything!
    8. 8. Automate everything! build
    9. 9. Automate everything! build test
    10. 10. Automate everything! build test deploy
    11. 11. Do it frequently
    12. 12. Do it frequently ys 3 plo . de fl ickr a day.. tim es
    13. 13. agile agile agile continuous deployment
    14. 14. agile development best practice: agile test driven / refactoring / ddd agile agile continuous deployment
    15. 15. agile development best practice: agile test driven / refactoring / ddd agile continuous integration agile continuous deployment
    16. 16. agile development best practice: agile test driven / refactoring / ddd agile continuous integration agile continuous testing continuous deployment
    17. 17. It is not only the source code!
    18. 18. It is not only the source code! What else?
    19. 19. Source Code
    20. 20. Configuration Source Code
    21. 21. Environments Configuration Source Code
    22. 22. Environments Configuration Data Source Code
    23. 23. Principle s
    24. 24. Check everything into SVN
    25. 25. Check everything into SVN • all source code (of course) • each build script • each important configuration (apache, cronjobs, loadbalancer...)
    26. 26. do continuous integration
    27. 27. do continuous integration t ea rly mi com it often co mm
    28. 28. do continuous integration t ea rly mio ten om av tid f c i o bra co mm nch ing
    29. 29. do continuous integration t ea rly mio ten om av tid f omprehen sive c i o brc c o mm anctestsuite hing
    30. 30. do continuous integration t ea rly mio ten om av tid f omprehen fastsive c i o brc mm anctestsuite feed co hing back
    31. 31. use test automation...
    32. 32. use test automation...
    33. 33. use test automation...
    34. 34. use test automation...
    35. 35. use test automation...
    36. 36. use test automation...
    37. 37. use test automation... ...and feel responsible
    38. 38. automate deployment
    39. 39. automate deployment sa me the loy every dep wa y to ent! nvir onm e
    40. 40. automate deployment sa me the loy every dep do it frequently wa y to ent! nvir onm e
    41. 41. automate deployment adjust c onfigurations on deploy time sa me the loy every dep o do it frequently w ayt nt! iron me env
    42. 42. automate deployment adjust c onfigurations ./deme on de<e y ti ploy.s plo nviro h < ep nme the sam ack nt> y age> de plo ev ery do it frequently yt o w a me nt! env iron
    43. 43. Plan and test rollback
    44. 44. The Deployme nt Pipeline
    45. 45. deployment pipeline test + build package test strategy verification 1 verification II release to production
    46. 46. deployment pipeline test + build package Version 1 test strategy verification 1 verification II release to production
    47. 47. deployment pipeline test + build package test strategy verification 1 Version 1 verification II release to production
    48. 48. deployment pipeline test + build package test strategy verification 1 verification II Version 1 release to production
    49. 49. deployment pipeline test + build package Version 2 test strategy verification 1 verification II Version 1 release to production
    50. 50. deployment pipeline test + build package test strategy verification 1 Version 2 verification II Version 1 release to production
    51. 51. deployment pipeline test + build package Version 3 test strategy verification 1 Version 2 verification II Version 1 release to production
    52. 52. deployment pipeline Build Source (SVN, Backups) Commit Stage Version_1234 Artifacts Repository
    53. 53. deployment pipeline Build Source (SVN, Backups) Acceptance Commit auto Test Stage Stage (latest) Version_1234 Artifacts Repository
    54. 54. deployment pipeline Build Source (SVN, Backups) Acceptance Commit auto Test Stage Stage (latest) Version_1234 Artifacts Repository
    55. 55. deployment pipeline Build Source (SVN, Backups) Acceptance Performance Commit auto Test Stage auto Test Stage (latest) Stage Version_1234 Artifacts Repository
    56. 56. deployment pipeline Build Source (SVN, Backups) Acceptance Performance Commit auto Test Stage auto Test Stage (latest) Stage manual Manual Test Version_1234 Stage Artifacts Repository
    57. 57. deployment pipeline Build Source (SVN, Backups) Acceptance Performance Commit Release auto Test Stage auto Test manual Stage (latest) Stage Stage manual Manual Test Version_1234 Stage Artifacts Repository
    58. 58. deployment pipeline Build Source (SVN, Backups) Acceptance Performance Commit Release auto Test Stage auto Test manual Stage (latest) Stage Stage manual Manual Test Version_1234 Stage Build Downstream Artifacts Repository
    59. 59. deployment pipeline Build Source (SVN, Backups) Acceptance Performance Commit Release auto Test Stage auto Test manual Stage (latest) Stage Stage manual Manual Test Version_1234 Stage Build Downstream Feedback Artifacts Repository
    60. 60. view on artifact repository
    61. 61. the commit stage • <5min: Run Unit Tests asap • <10 min: Build Project (clean, build) • Result: • store all binaries required for deployment • package + releasenotes + unittest xml + deploy scripts
    62. 62. build only one package • pull configuration setting for environment on deploy • be able to rebuild any build by specifying the project revision
    63. 63. acceptance stage
    64. 64. acceptance stage • Define tests in domain specific language
    65. 65. acceptance stage • Define tests in domain specific language • Deployment to Environment „latest“ or „UAT“
    66. 66. acceptance stage • Define tests in domain specific language • Deployment to Environment „latest“ or „UAT“ • Run additional Unit-Test (integration...)
    67. 67. acceptance stage • Define tests in domain specific language • Deployment to Environment „latest“ or „UAT“ • Run additional Unit-Test (integration...) • Run Selenium Tests
    68. 68. Release
    69. 69. Source Code
    70. 70. Configuration Source Code
    71. 71. Environments Configuration Source Code
    72. 72. Environments Configuration Data Source Code
    73. 73. SVN structure for TYPO3 <projectname> branches tags build scripts (ant) trunk build scripts htdocs typo3conf Extensions dependencies are linked (e.g. svn.external)
    74. 74. TYPO3 configuration - Domains: - sys_domain - template: config.baseUrl - localconf.php - Database - Extensionsettings - Loglevel / Devcontext / Logfiles ...
    75. 75. Environments (example) dev x latest test (UAT) production
    76. 76. Environments (example) dev x latest test (UAT) performance production
    77. 77. Environments (example) dev x latest test (UAT) performance integration production
    78. 78. Environments (example) dev x latest test (UAT) performance integration stage production
    79. 79. managing data
    80. 80. managing data Production: - Content - Transaction data
    81. 81. managing data Production: Deploy: - Content - Configuration - Transaction data - Content
    82. 82. managing data Production: Deploy: UAT: - Content - Configuration - Testdata - Transaction data - Content
    83. 83. managing data Backupstorage Production: Deploy: UAT: - Content - Configuration - Testdata - Transaction data - Content
    84. 84. managing data Backupstorage Production: Deploy: UAT: - Content - Configuration - Testdata - Transaction data - Content
    85. 85. managing data Backupstorage use independent technical IDs Production: Deploy: UAT: - Content - Configuration - Testdata - Transaction data - Content
    86. 86. Hot Deployment
    87. 87. what to deploy? - database structure changes - configuration data - updated content - source code
    88. 88. build steps Preparation SVN Filesystem backupstorage Database Package
    89. 89. build steps Preparation: - clean - revision Tag extensions
    90. 90. build steps Filesystem: - checkout project from SVN - build TYPO3 source - get defined extensions - get assets (fileadmin / uploads) - create a version file
    91. 91. build steps Database: - create structure from Master - import master data - update database structure - import data from the systems - merge data
    92. 92. build steps Database: - create structure from Master - import master data - update database structure - import data from the systems - merge data structure_up.sql merge.sql
    93. 93. package Package (Delta): - use files from build process + create filesystem delta + tar.gz all the stuff
    94. 94. deploying a package - Deploy Database: - structure_up.sql - merge.sql - all full-*.sqls - Deploy Filesystem - Apply environment Settings - Clear Cache - Run Crawler
    95. 95. ...
    96. 96. useful extensions - clearcache (enables „clear all cache“ from commandline) - db_sequenzer (seperate technical ids as basis for merges) - t3deploy (cli access to installtool > database compare)
    97. 97. green / blue deployment current live version previous live version
    98. 98. green / blue deployment current live version previous live version Deploy
    99. 99. green / blue deployment previous live version current live version Deploy
    100. 100. Hudson
    101. 101. Hudson
    102. 102. Hudson
    103. 103. Hudson
    104. 104. is your deployment still a gamble?
    105. 105. is your deployment still a gamble?
    1. A particular slide catching your eye?

      Clipping is a handy way to collect important slides you want to go back to later.

    ×