Continuous Delivery<br />Mike McGarr<br />mike.mcgarr@excella.com<br />http://earlyandoften.wordpress.com <br />@jmichaelm...
About Me<br /><ul><li>J. Michael (Mike) McGarr
Excella Consulting, Arlington VA
Lead of Excella’s Java Center of Excellence
Java Developer for over 11 years
Interests:
Developer Productivity
XP & Agile
Automation
Testing
Polyglot Programming</li></ul>2<br />
Agenda<br />Story<br />What is Continuous Delivery?<br />Core Practices<br />Tools<br />3<br />
Typical Project<br />4<br />Analyst & Customer<br />Requirements<br />Architect<br />Design<br />Developer<br />Developmen...
5<br />Waterfall<br />http://flic.kr/p/6fREaa<br />
6<br />Problems with Waterfall<br />Long QA feedback loop<br />Lack of collaboration<br />Inability to change direction<br />
WaterFall Project<br />7<br />Analyst & Customer<br />Requirements<br />Architect<br />Design<br />Developer<br />Developm...
8<br />Agile<br />http://flic.kr/p/PQFQg<br />
Agile Project<br />9<br />Customer <br />& Team<br />Customer <br />& Team<br />Customer <br />& Team<br />Requirements<br...
10<br />The Last Mile<br />Manual Deployments<br />Insufficient Configuration Management<br />Infrequent, Error Prone Depl...
11<br />Stressful Releases<br />
Agenda<br />Story<br />What is Continuous Delivery?<br />Core Practices<br />Tools<br />12<br />
13<br />What is<br />Continuous Delivery?<br />
14<br />
15<br />
…a set of practices and principles aimed at, building, testing, and releasing software faster and more frequently.<br />16...
“Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.”<br />- First...
Goals<br />Cycle Time<br />Quality<br />18<br />
“How long would it take your organization to deploy a change [to production] that involves just one single line of code?  ...
http://flic.kr/p/y8KV8<br />20<br />Done means Released<br />
21<br />Frequent Automated Deployments<br />http://flic.kr/p/29Ree<br />
22<br />Continuous what?<br />Continuous<br />Delivery<br />Continuous<br />Deployment<br />Continuous<br />Integration<br />
Agenda<br />Story<br />What is Continuous Delivery?<br />Core Practices<br />Tools<br />23<br />
24<br />Core Practices<br />
25<br />Continuous Deployment<br />Build Pipelines<br />Deployment Automation<br />Configuration<br />Management<br />Cont...
26<br />Configuration Management<br />Version Everything!<br />Single Identifier	<br />Dependencies<br />App Configuration...
27<br />Continuous <br />Integration<br />http://flic.kr/p/5GpzSM<br />
28<br />Continuous Integration<br />Check-in Daily<br />Commit to Trunk <br />Automate the Build<br />Keep the Build Fast<...
29<br />Recommended Practices<br />Extreme Programming (XP)<br />Fail a Build for Design Breaches<br />Fail a Build for Sl...
30<br />Testing<br />
31<br />Kinds of Tests<br />Unit Tests<br />Integration Tests<br />Functional/Acceptance Tests<br />Performance & Load Tes...
32<br />Testing Strategy<br />Identify and Prioritize Project Risk<br />Decide what Actions to Take<br />Tests = Executabl...
33<br />
34<br />Testing Recommendations<br />Automate your Tests<br />Use Fakes/Mocks<br />Automated Acceptance Testing<br />
35<br />Automated Acceptance Tests<br />Fast Feedback<br />Reduce Tester workload<br />Testers can do Exploratory Testing<...
Acceptance Test Approaches<br />Acceptance Test Driven Development (ATDD)<br />Behavior Driven Development (BDD)<br />Give...
http://flic.kr/p/6VmGxK<br />37<br />Deployment Automation<br />
38<br />Deployment Automation<br />Artifact<br />Repository<br />Application<br />Configurations<br />Middleware<br />Vers...
39<br />Use Appropriate Technology<br />http://flic.kr/p/6pmtQL<br />
Scripting Approaches<br />Script logs into each box and runs deployment script commands<br />Script runs locally, each rem...
Database Deployments<br />Version your Database<br />Evolve Your Database Incrementally<br />41<br />
Environment Management<br />Version your Application Configuration<br />Version your Operating System<br />42<br />
43<br />Deploying to the Cloud<br />http://flic.kr/p/4R35Dd<br />
44<br />Build Pipelines<br />http://www.fotopedia.com/users/chmehl<br />
Build Pipelines<br />A Build Pipeline is an automated manifestation of your process for getting software from version cont...
Synonyms<br />Build Pipeline<br />Deployment Pipeline<br />Continuous Integration Pipeline<br />Deployment Production Line...
BuildPipelines<br />A Chain of Jobs <br />Early Jobs run Fast<br />Every Check-in creates a new Pipeline<br />When a Job F...
48<br />Stages of a Pipeline<br />
49<br />Pipeline Practices<br />Build Once, Deploy Many<br />Deploy the Same Way to All Environments<br />Smoke Test you D...
50<br />Pull System<br />
51<br />Continuous Deployment<br />
Agenda<br />Story<br />What is Continuous Delivery?<br />Core Practices<br />Tools<br />52<br />
53<br />Tools<br />http://flic.kr/p/5cK2<br />
Version Control<br />54<br />
Upcoming SlideShare
Loading in...5
×

Continuous Delivery

15,898

Published on

An introduction to the concepts behind Continuous Delivery as well as an introduction to some of the tools available for implementing continuous delivery practices on a new project. This presentation is geared towards Java developers, but is applicable to all.

Published in: Technology
4 Comments
96 Likes
Statistics
Notes
No Downloads
Views
Total Views
15,898
On Slideshare
0
From Embeds
0
Number of Embeds
11
Actions
Shares
0
Downloads
1
Comments
4
Likes
96
Embeds 0
No embeds

No notes for slide
  • Requirements/Design/Development Feedback Loop is months.So much can change in that timeFeedback Loop for Release is just as long.
  • Continuous delivery is a……set of practices and principles aimed at building, testing and releasing software faster and more frequently.
  • Collaboration (DEV + Customer, DEV + Operations)Talking early and often…break down walls. [DevOps]Automation. Automate Everything! Build, Test, Deploy!Frequency. Frequent means small. Easier to troubleshoot, rollback. Reduces Risk.Feedback. Change triggers feedback. Feedback is fast. Team acts on it.
  • Agile fixes the feedback loop problem for Requirements/Design/Development.Release Feedback is still months.
  • Collaboration (DEV + Customer, DEV + Operations)Talking early and often…break down walls. [DevOps]Automation. Automate Everything! Build, Test, Deploy!Frequency. Frequent means small. Easier to troubleshoot, rollback. Reduces Risk.Feedback. Change triggers feedback. Feedback is fast. Team acts on it.
  • The Last Mile tends to be an obstacle to achieving thisTransition – why are automated deployment so important? Because a feature doesn’t add value until it is in production.
  • Does anybody know what this is a picture of?
  • Continuous Delivery

    1. 1. Continuous Delivery<br />Mike McGarr<br />mike.mcgarr@excella.com<br />http://earlyandoften.wordpress.com <br />@jmichaelmcgarr<br />
    2. 2. About Me<br /><ul><li>J. Michael (Mike) McGarr
    3. 3. Excella Consulting, Arlington VA
    4. 4. Lead of Excella’s Java Center of Excellence
    5. 5. Java Developer for over 11 years
    6. 6. Interests:
    7. 7. Developer Productivity
    8. 8. XP & Agile
    9. 9. Automation
    10. 10. Testing
    11. 11. Polyglot Programming</li></ul>2<br />
    12. 12. Agenda<br />Story<br />What is Continuous Delivery?<br />Core Practices<br />Tools<br />3<br />
    13. 13. Typical Project<br />4<br />Analyst & Customer<br />Requirements<br />Architect<br />Design<br />Developer<br />Development<br />Tester<br />QA<br />Operations<br />Release<br />
    14. 14. 5<br />Waterfall<br />http://flic.kr/p/6fREaa<br />
    15. 15. 6<br />Problems with Waterfall<br />Long QA feedback loop<br />Lack of collaboration<br />Inability to change direction<br />
    16. 16. WaterFall Project<br />7<br />Analyst & Customer<br />Requirements<br />Architect<br />Design<br />Developer<br />Development<br />Tester<br />QA<br />Operations<br />Months!<br />Release<br />
    17. 17. 8<br />Agile<br />http://flic.kr/p/PQFQg<br />
    18. 18. Agile Project<br />9<br />Customer <br />& Team<br />Customer <br />& Team<br />Customer <br />& Team<br />Requirements<br />Requirements<br />Requirements<br />Test<br />Test<br />Test<br />Development<br />Development<br />Development<br />Operations<br />Release<br />Days!<br />The<br />Last <br />Mile?<br />Months!<br />
    19. 19. 10<br />The Last Mile<br />Manual Deployments<br />Insufficient Configuration Management<br />Infrequent, Error Prone Deployments<br />
    20. 20. 11<br />Stressful Releases<br />
    21. 21. Agenda<br />Story<br />What is Continuous Delivery?<br />Core Practices<br />Tools<br />12<br />
    22. 22. 13<br />What is<br />Continuous Delivery?<br />
    23. 23. 14<br />
    24. 24. 15<br />
    25. 25. …a set of practices and principles aimed at, building, testing, and releasing software faster and more frequently.<br />16<br />Continuous Delivery is…<br />
    26. 26. “Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.”<br />- First of the Twelve Principles behind the Agile Manifesto<br />17<br />
    27. 27. Goals<br />Cycle Time<br />Quality<br />18<br />
    28. 28. “How long would it take your organization to deploy a change [to production] that involves just one single line of code? Do you do this on a repeatable, reliable basis?”<br /><ul><li>Mary and Tom Poppendieck,</li></ul>Implementing Lean Software Development<br />19<br />Cycle Time<br />
    29. 29. http://flic.kr/p/y8KV8<br />20<br />Done means Released<br />
    30. 30. 21<br />Frequent Automated Deployments<br />http://flic.kr/p/29Ree<br />
    31. 31. 22<br />Continuous what?<br />Continuous<br />Delivery<br />Continuous<br />Deployment<br />Continuous<br />Integration<br />
    32. 32. Agenda<br />Story<br />What is Continuous Delivery?<br />Core Practices<br />Tools<br />23<br />
    33. 33. 24<br />Core Practices<br />
    34. 34. 25<br />Continuous Deployment<br />Build Pipelines<br />Deployment Automation<br />Configuration<br />Management<br />Continuous Integration<br />Testing<br />Agile<br />
    35. 35. 26<br />Configuration Management<br />Version Everything!<br />Single Identifier <br />Dependencies<br />App Configurations<br />Data<br />Environments<br />
    36. 36. 27<br />Continuous <br />Integration<br />http://flic.kr/p/5GpzSM<br />
    37. 37. 28<br />Continuous Integration<br />Check-in Daily<br />Commit to Trunk <br />Automate the Build<br />Keep the Build Fast<br />Every Commit results in Build<br />Test in Clone of Production<br />Automate Deployment<br />
    38. 38. 29<br />Recommended Practices<br />Extreme Programming (XP)<br />Fail a Build for Design Breaches<br />Fail a Build for Slow Tests<br />Fail a Build for Warnings & Code Style Breaches<br />
    39. 39. 30<br />Testing<br />
    40. 40. 31<br />Kinds of Tests<br />Unit Tests<br />Integration Tests<br />Functional/Acceptance Tests<br />Performance & Load Tests<br />Penetration Tests<br />Exploratory Tests<br />
    41. 41. 32<br />Testing Strategy<br />Identify and Prioritize Project Risk<br />Decide what Actions to Take<br />Tests = Executable Specifications<br />Confidence <br />
    42. 42. 33<br />
    43. 43. 34<br />Testing Recommendations<br />Automate your Tests<br />Use Fakes/Mocks<br />Automated Acceptance Testing<br />
    44. 44. 35<br />Automated Acceptance Tests<br />Fast Feedback<br />Reduce Tester workload<br />Testers can do Exploratory Testing<br />Regression Tests<br />Requirements can be generated from Tests<br />
    45. 45. Acceptance Test Approaches<br />Acceptance Test Driven Development (ATDD)<br />Behavior Driven Development (BDD)<br />Given [some precondition]<br />When [some event]<br />Then [some result]<br />36<br />
    46. 46. http://flic.kr/p/6VmGxK<br />37<br />Deployment Automation<br />
    47. 47. 38<br />Deployment Automation<br />Artifact<br />Repository<br />Application<br />Configurations<br />Middleware<br />Version<br />Control<br />Operating System<br />Database<br />
    48. 48. 39<br />Use Appropriate Technology<br />http://flic.kr/p/6pmtQL<br />
    49. 49. Scripting Approaches<br />Script logs into each box and runs deployment script commands<br />Script runs locally, each remote machine has agent execute script<br />Package app using platform’s packaging technology, and use infrastructure management tools push new versions<br />40<br />
    50. 50. Database Deployments<br />Version your Database<br />Evolve Your Database Incrementally<br />41<br />
    51. 51. Environment Management<br />Version your Application Configuration<br />Version your Operating System<br />42<br />
    52. 52. 43<br />Deploying to the Cloud<br />http://flic.kr/p/4R35Dd<br />
    53. 53. 44<br />Build Pipelines<br />http://www.fotopedia.com/users/chmehl<br />
    54. 54. Build Pipelines<br />A Build Pipeline is an automated manifestation of your process for getting software from version control into the hands of your users.<br />45<br />
    55. 55. Synonyms<br />Build Pipeline<br />Deployment Pipeline<br />Continuous Integration Pipeline<br />Deployment Production Line<br />Living Build<br />46<br />
    56. 56. BuildPipelines<br />A Chain of Jobs <br />Early Jobs run Fast<br />Every Check-in creates a new Pipeline<br />When a Job Fails, the Pipeline fails<br />Keep Code Production Ready<br />47<br />
    57. 57. 48<br />Stages of a Pipeline<br />
    58. 58. 49<br />Pipeline Practices<br />Build Once, Deploy Many<br />Deploy the Same Way to All Environments<br />Smoke Test you Deployments<br />Deploy into a Copy of Production<br />Each Change should Propagate Instantly<br />If any part fails, Stop the line<br />
    59. 59. 50<br />Pull System<br />
    60. 60. 51<br />Continuous Deployment<br />
    61. 61. Agenda<br />Story<br />What is Continuous Delivery?<br />Core Practices<br />Tools<br />52<br />
    62. 62. 53<br />Tools<br />http://flic.kr/p/5cK2<br />
    63. 63. Version Control<br />54<br />
    64. 64. Dependency Management<br />55<br />
    65. 65. Database Management<br />56<br />
    66. 66. Infrastructure Management<br />57<br />
    67. 67. 58<br />Continuous Integration<br />
    68. 68. 59<br />Build Automation<br />
    69. 69. 60<br />Testing Tools<br />
    70. 70. 61<br />Acceptance Test Tools<br />
    71. 71. 62<br />Questions<br />
    72. 72. 63<br />Contact Me<br />Mike McGarr<br />mike.mcgarr@excella.com<br />http://earlyandoften.wordpress.com<br />@jmichaelmcgarr<br />

    ×