Transcript
Page 1: Continuous Delivery Applied (AgileDC)

Continuous DeliveryApplied

Mike [email protected]@jmichaelmcgarrhttp://earlyandoften.wordpress.com http://www.meetup.com/DC-continuous-integration/

Page 2: Continuous Delivery Applied (AgileDC)

• J. Michael (Mike) McGarr

• 11 years as a consultant, Excella Consulting

• Founder of the DC Continuous Integration, Delivery, and Deployment Meetup

About Me

2

Page 3: Continuous Delivery Applied (AgileDC)

…a set of practices and principles aimed at, building, testing, and releasing software faster and more frequently.

3

Continuous Delivery is…

Page 4: Continuous Delivery Applied (AgileDC)

4

Page 5: Continuous Delivery Applied (AgileDC)

“Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.”

- First of the Twelve Principles behind the Agile Manifesto

5

Page 6: Continuous Delivery Applied (AgileDC)

Quality or Speed

6

Page 7: Continuous Delivery Applied (AgileDC)

“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?”

- Mary and Tom Poppendieck,Implementing Lean Software Development

7

Cycle Time

Page 8: Continuous Delivery Applied (AgileDC)

8

The Last Mile

Manual Deployments

Insufficient Configuration Management

Infrequent, Error Prone Deployments

Page 9: Continuous Delivery Applied (AgileDC)

9

Stressful Releases

Page 10: Continuous Delivery Applied (AgileDC)

10

Frequent Automated Deployments

http://flic.kr/p/29Ree

Page 11: Continuous Delivery Applied (AgileDC)

11

Always Production Ready

Page 12: Continuous Delivery Applied (AgileDC)

12

Agile

ConfigurationManagement

Continuous Integration Testing

Deployment Pipelines

Continuous Deployment

Deployment Automation

Page 13: Continuous Delivery Applied (AgileDC)

13

Deployment Pipelines

http://www.fotopedia.com/users/chmehl

Page 14: Continuous Delivery Applied (AgileDC)

14

Deployment Pipelines

A Deployment Pipeline is an automated manifestation of your process for getting software from version control into the hands of your users.

Page 15: Continuous Delivery Applied (AgileDC)

15

Deployment Pipelines(aka Build Pipelines)

Page 16: Continuous Delivery Applied (AgileDC)

16

Continuous what?

ContinuousDelivery

ContinuousDeployment

ContinuousIntegration

Page 17: Continuous Delivery Applied (AgileDC)

Where do I start?

Page 18: Continuous Delivery Applied (AgileDC)

18

Understand your Process

http://www.michaelnygard.com/blog/2008/02/outrunning_your_headlights.html

Page 19: Continuous Delivery Applied (AgileDC)

19

Understand your Organization

Page 20: Continuous Delivery Applied (AgileDC)

20

Developers

http://flic.kr/p/5cK2

Page 21: Continuous Delivery Applied (AgileDC)

21

Test Driven Development

http://reddevnews.com/articles/2007/11/01/testdriven-development-tdd.aspx

Page 22: Continuous Delivery Applied (AgileDC)

22

Evolutionary Design

Page 23: Continuous Delivery Applied (AgileDC)

23

Automate the Build

Page 24: Continuous Delivery Applied (AgileDC)

24

Static Code Analysis

CheckStyle

Page 25: Continuous Delivery Applied (AgileDC)

25

Technical Debt

Page 26: Continuous Delivery Applied (AgileDC)

26

The Team

Page 27: Continuous Delivery Applied (AgileDC)

27

Agile

Page 28: Continuous Delivery Applied (AgileDC)

28

Continuous Integration

Page 29: Continuous Delivery Applied (AgileDC)

29

Continuous Integration

Check-in Daily

Commit to Trunk

Automate the Build

Keep the Build Fast

Every Commit results in Build

Test in Clone of Production

Automate Deployment

Page 30: Continuous Delivery Applied (AgileDC)

30

Testing

Page 31: Continuous Delivery Applied (AgileDC)

31

Types of Tests

Page 32: Continuous Delivery Applied (AgileDC)

32

Testing is not a Phase

http://flic.kr/p/6bcg

Page 33: Continuous Delivery Applied (AgileDC)

33

Specification by Example

Page 34: Continuous Delivery Applied (AgileDC)

34

Specification by Example

Page 35: Continuous Delivery Applied (AgileDC)

35

Automated Performance Testing

Page 36: Continuous Delivery Applied (AgileDC)

36

Configuration Management

Page 37: Continuous Delivery Applied (AgileDC)

Version Control

37

Page 38: Continuous Delivery Applied (AgileDC)

38

Build Once, Deploy Many

Page 39: Continuous Delivery Applied (AgileDC)

Externalize Configuration

39

ESCAPE Database

Page 40: Continuous Delivery Applied (AgileDC)

Artifact Repositories

40

Page 41: Continuous Delivery Applied (AgileDC)

41

Traceability

Page 42: Continuous Delivery Applied (AgileDC)

42

Versioning Numbers

Page 43: Continuous Delivery Applied (AgileDC)

Branch by Abstraction

43

Page 44: Continuous Delivery Applied (AgileDC)

44

Deploying

Page 45: Continuous Delivery Applied (AgileDC)

45

Deployment Pipelines(aka Build Pipelines)

Page 46: Continuous Delivery Applied (AgileDC)

46

Build Pipeline in Jenkins

Page 47: Continuous Delivery Applied (AgileDC)

Code Deployments

47

Page 48: Continuous Delivery Applied (AgileDC)

Version your Database

48

Page 49: Continuous Delivery Applied (AgileDC)

49

Page 50: Continuous Delivery Applied (AgileDC)

Infrastructure as Code

50

Page 51: Continuous Delivery Applied (AgileDC)

51

Puppet

Page 52: Continuous Delivery Applied (AgileDC)

Vagrant

52

Page 53: Continuous Delivery Applied (AgileDC)

53

Monitoring (sucks)

https://github.com/monitoringsucks

Page 54: Continuous Delivery Applied (AgileDC)

54

Continuous Deployment

Page 55: Continuous Delivery Applied (AgileDC)

55

Contact Me

Mike McGarr

[email protected]

@jmichaelmcgarr

http://earlyandoften.wordpress.com

Page 56: Continuous Delivery Applied (AgileDC)

56

Further Reading• Continuous Delivery: Reliable Software Releases through Build, Test

and Deployment Automation, by Jez Humble and David Farley - http://www.amazon.com/Continuous-Delivery-Deployment-Automation-Addison-Wesley/dp/0321601912

• Test Driven Development (TDD) – http://en.wikipedia.org/wiki/Test-driven_development

• Introducing BDD, by Dan North – http://dannorth.net/introducing-bdd/• Agile Manifesto – http://agilemanifesto.org/• Scrum – http://www.scrumalliance.org/learn_about_scrum• Continuous Integration, by Martin Fowler –

http://martinfowler.com/articles/continuousIntegration.html• Specification by Example, by Gojko Adzic -

http://specificationbyexample.com/• Build Pipelines -

http://www.magpiebrain.com/2009/12/13/a-brief-and-incomplete-history-of-build-pipelines/

Page 57: Continuous Delivery Applied (AgileDC)

57

Further Reading• Maven Releases on Steriods, by Axel Fontaine –

http://www.axelfontaine.com/2011/01/maven-releases-on-steroids-adios.html

• What is in a Name? Usually a version number, actually., by James Betteley - http://jamesbetteley.wordpress.com/2011/07/07/what-is-in-a-name-usually-a-version-number-actually/

• Build Once, Deploy Many - http://earlyandoften.wordpress.com/2010/09/09/build-once-deploy-many/

• Evolutionary Design - http://martinfowler.com/articles/designDead.html• Continuous Deployment -

http://timothyfitz.wordpress.com/2009/02/08/continuous-deployment/ • Sonar’s Technical Debt Calculation -

http://www.sonarsource.org/evaluate-your-technical-debt-with-sonar/• Gherkin - https://github.com/cucumber/cucumber/wiki/Gherkin• Branch by Abstraction, by Paul Hammat -

http://paulhammant.com/blog/branch_by_abstraction.html

Page 58: Continuous Delivery Applied (AgileDC)

58

Tools• Git - http://git-scm.com/• Subversion - http://subversion.tigris.org/• Mercurial - http://mercurial.selenic.com/• Rational ClearCase -

http://www-01.ibm.com/software/awdtools/clearcase/• Serena Dimensions CM -

http://www.serena.com/products/dimensions-cm/index.html• Ant - http://ant.apache.org/• Ivy - http://ant.apache.org/ivy/• Maven - http://maven.apache.org/• Gradle - http://gradle.org/• JUnit – http://www.junit.org/• Findbugs – http://findbugs.sourceforge.net/• PMD – http://pmd.sourceforge.net/• Checkstyle – http://checkstyle.sourceforge.net/

Page 59: Continuous Delivery Applied (AgileDC)

59

Tools• Jenkins - http://jenkins-ci.org/• Jenkins Performance Plugin –

https://wiki.jenkins-ci.org/display/JENKINS/Performance+Plugin • Jenkins Build Pipeline Plugin -

https://wiki.jenkins-ci.org/display/JENKINS/Build+Pipeline+Plugin • Nexus – http://www.sonatype.org/nexus/• Artifactory – http://www.jfrog.com/products.php• Sonar – http://www.sonarsource.org/• Cucumber – http://cukes.info/• Liquibase – www.liquibase.org/ • Flyway – http://code.google.com/p/flyway/• Escape – http://code.google.com/p/escservesconfig/• Capistrano - https://github.com/capistrano/capistrano • Puppet – http://puppetlabs.com/• Chef – http://www.opscode.com/chef/• Vagrant – http://vagrantup.com/• JMeter – http://jmeter.apache.org/

Page 60: Continuous Delivery Applied (AgileDC)

60

Tools• Nagios - http://www.nagios.org/• Logstash – http://logstash.net/ • StatsD – https://github.com/etsy/statsd • Ganglia – http://ganglia.sourceforge.net/ • Metrics – https://github.com/codahale/metrics • Graphite - http://graphite.wikidot.com/


Recommended