57
Continuous Delivery Applied Mike McGarr [email protected] http:// earlyandoften.wordpress.com http://www.meetup.com/DC- continuous-integration/ @jmichaelmcgarr

Continuous delivery applied

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Continuous delivery applied

Continuous DeliveryApplied

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

Page 2: Continuous delivery applied

• J. Michael (Mike) McGarr

• Excella Consulting, Arlington VA

• Lead of Excella’s Java Center of Excellence

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

About Me

2

Page 3: Continuous delivery applied

Excella is Hiring!

3

Page 4: Continuous delivery applied

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

4

Continuous Delivery is…

Page 5: Continuous delivery applied

5

Page 6: Continuous delivery applied

“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

6

Page 7: Continuous delivery applied

Cycle TimeQuality

7

Goals

Page 8: Continuous delivery applied

“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

8

Cycle Time

Page 9: Continuous delivery applied

9

The Last Mile

Manual Deployments

Insufficient Configuration Management

Infrequent, Error Prone Deployments

Page 10: Continuous delivery applied

10

Stressful Releases

Page 11: Continuous delivery applied

11

Frequent Automated Deployments

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

Page 12: Continuous delivery applied

12

Always Production Ready

Page 13: Continuous delivery applied

13

Agile

ConfigurationManagement

Continuous Integration Testing

Deployment Pipelines

Continuous Deployment

Deployment Automation

Page 14: Continuous delivery applied

14

Deployment Pipelines

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

Page 15: Continuous delivery applied

15

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 16: Continuous delivery applied

16

Continuous what?

ContinuousDelivery

ContinuousDeployment

ContinuousIntegration

Page 17: Continuous delivery applied

Getting Started

Continuous Delivery Applied

Page 18: Continuous delivery applied

18

Understand your Process

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

Page 19: Continuous delivery applied

19

Understand your Organization

Page 20: Continuous delivery applied

20

Developers

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

Page 21: Continuous delivery applied

21

Test Driven Development

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

Page 22: Continuous delivery applied

22

Evolutionary Design

Page 23: Continuous delivery applied

23

Automate the Build

Page 24: Continuous delivery applied

24

Static Code Analysis

CheckStyle

Page 25: Continuous delivery applied

25

Technical Debt

Page 26: Continuous delivery applied

26

The Team

Page 27: Continuous delivery applied

27

Agile

Page 28: Continuous delivery applied

28

Continuous Integration

Page 29: Continuous delivery applied

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

30

Testing

Page 31: Continuous delivery applied

31

Testing is not a Phase

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

Page 32: Continuous delivery applied

32

Specification by Example

Page 33: Continuous delivery applied

33

Specification by Example

Page 34: Continuous delivery applied

34

Automated Performance Testing

Page 35: Continuous delivery applied

35

Configuration Management

Page 36: Continuous delivery applied

Version Control

36

Page 37: Continuous delivery applied

37

Build Once, Deploy Many

Page 38: Continuous delivery applied

Artifact Repositories

38

Page 39: Continuous delivery applied

39

Traceability

Page 40: Continuous delivery applied

40

Versioning Numbers

Page 41: Continuous delivery applied

Externalize Configuration

41

ESCAPE Database

Page 42: Continuous delivery applied

42

Deploying

Page 43: Continuous delivery applied

43

Deployment Pipelines(aka Build Pipelines)

Page 44: Continuous delivery applied

Code Deployments

44

Page 45: Continuous delivery applied

Version your Database

45

Page 46: Continuous delivery applied

46

Page 47: Continuous delivery applied

Infrastructure as Code

47

Page 48: Continuous delivery applied

48

Puppet

Page 49: Continuous delivery applied

Vagrant

49

Page 50: Continuous delivery applied

50

Monitoring (sucks)

https://github.com/monitoringsucks

Page 51: Continuous delivery applied

51

Continuous Deployment

Page 52: Continuous delivery applied

52

Contact Me

Mike McGarr

[email protected]

http://earlyandoften.wordpress.com

@jmichaelmcgarr

Page 53: Continuous delivery applied

53

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 54: Continuous delivery applied

54

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

Page 55: Continuous delivery applied

55

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/• Mockito – http://code.google.com/p/mockito/• Hamcrest – http://code.google.com/p/hamcrest/• Spock – http://code.google.com/p/spock/• dbUnit – http://www.dbunit.org/• Unitils – http://unitils.org/summary.html

Page 56: Continuous delivery applied

56

Tools• Findbugs – http://findbugs.sourceforge.net/• PMD – http://pmd.sourceforge.net/• Checkstyle – http://checkstyle.sourceforge.net/• JIRA – http://www.atlassian.com/software/jira/overview• GitHub – https://github.com/• Jenkins - http://jenkins-ci.org/• TeamCity – http://www.jetbrains.com/teamcity/• Nexus – http://www.sonatype.org/nexus/• Artifactory – http://www.jfrog.com/products.php• Sonar – http://www.sonarsource.org/• FitNesse – • Concordion – http://www.concordion.org/• Cucumber – http://cukes.info/• easyb – http://www.easyb.org/• jBehave - http://jbehave.org/• geb - http://www.gebish.org/

Page 57: Continuous delivery applied

57

Tools• Liquibase – www.liquibase.org/ • Flyway – http://code.google.com/p/flyway/• Escape – http://code.google.com/p/escservesconfig/• Puppet – http://puppetlabs.com/• Chef – http://www.opscode.com/chef/• Vagrant – http://vagrantup.com/• JMeter – http://jmeter.apache.org/• Nagios - http://www.nagios.org/