continuous delivery - tools and techniques

54
Con$nuous Delivery Tools and Techniques Mike McGarr [email protected] h=p://earlyandoAen.wordpress.com @jmichaelmcgarr

Upload: mike-mcgarr

Post on 10-May-2015

10.892 views

Category:

Technology


0 download

DESCRIPTION

A talk I gave at the Montgomery County Java User's Group on Continuous Delivery Tools and Techniques.

TRANSCRIPT

Page 1: Continuous delivery - tools and techniques

Con$nuous  Delivery  Tools  and  Techniques  

Mike  McGarr  [email protected]  h=p://earlyandoAen.wordpress.com    @jmichaelmcgarr  

Page 2: Continuous delivery - tools and techniques

•  J.  Michael  (Mike)  McGarr  

•  Excella  Consul$ng,  Arlington  VA  •  Lead  of  Excella’s  Java  Center  of  Excellence  

 

About  Me  

2  

Page 3: Continuous delivery - tools and techniques

Excella  is  Hiring!  

3  

Page 4: Continuous delivery - tools and techniques

…a  set  of  prac$ces  and  principles  aimed  at,  building,  tes+ng,  and  releasing  soAware  faster  and  more  frequently.  

4

Con$nuous  Delivery  is…  

Page 5: Continuous delivery - tools and techniques

5

Page 6: Continuous delivery - tools and techniques

Cycle  Time  Quality  

6

Goals  

Page 7: Continuous delivery - tools and techniques

7

Con$nuous  what?  

Continuous Delivery

Continuous Deployment

Continuous Integration

Page 8: Continuous delivery - tools and techniques

8

Agile  

Configura$on  Management  

Con$nuous  Integra$on   Tes$ng  

Build  Pipelines  

Con$nuous  Deployment  

Deployment  Automa$on  

Page 9: Continuous delivery - tools and techniques

9  

Developers  

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

Page 10: Continuous delivery - tools and techniques

Version  Control  

10

Page 11: Continuous delivery - tools and techniques

11

Build  Automa$on  

Page 12: Continuous delivery - tools and techniques

12

Unit  Tes$ng  

Page 13: Continuous delivery - tools and techniques

13

JUnit,  Hamcrest  &  Mockito  

Page 14: Continuous delivery - tools and techniques

14

Page 15: Continuous delivery - tools and techniques

15

Spock  

Page 16: Continuous delivery - tools and techniques

16

Test  Driven  Development  

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

Page 17: Continuous delivery - tools and techniques

17

Integra$on  Tes$ng  

Page 18: Continuous delivery - tools and techniques

18

Sta$c  Code  Analysis  

CheckStyle

Page 19: Continuous delivery - tools and techniques

19  

The  Team  

Page 20: Continuous delivery - tools and techniques

20

Agile  

Page 21: Continuous delivery - tools and techniques

21

Task  Management  

Page 22: Continuous delivery - tools and techniques

22

Con$nuous  Integra$on  

Check-­‐in  Daily  

Commit  to  Trunk    

Automate  the  Build  

Keep  the  Build  Fast  

Every  Commit  results  in  Build  

Test  in  Clone  of  Produc$on  

Automate  Deployment  

Page 23: Continuous delivery - tools and techniques

23

Con$nuous  Integra$on  

Page 24: Continuous delivery - tools and techniques

24

Jenkins  

Page 25: Continuous delivery - tools and techniques

Dependency  Management  

25

Page 26: Continuous delivery - tools and techniques

Nexus  

26

Page 27: Continuous delivery - tools and techniques

27

Technical  Debt  

Page 28: Continuous delivery - tools and techniques

28

Sonar  

Page 29: Continuous delivery - tools and techniques

29

Specifica$on  by  Example  

Page 30: Continuous delivery - tools and techniques

30

Spock  and  Geb  

Page 31: Continuous delivery - tools and techniques

31

Concordion  

Page 32: Continuous delivery - tools and techniques

http://flic.kr/p/y8KV8 32

Deployment  

Page 33: Continuous delivery - tools and techniques

33

Build  Pipelines  

Page 34: Continuous delivery - tools and techniques

34

Single  Iden$fier  

Page 35: Continuous delivery - tools and techniques

35

Versioning  

Page 36: Continuous delivery - tools and techniques

Code  Deployments  

36

Page 37: Continuous delivery - tools and techniques

Database  Management  

37

Page 38: Continuous delivery - tools and techniques

38

Page 39: Continuous delivery - tools and techniques

Run$me  Configura$on  

39

ESCAPE Database  

Page 40: Continuous delivery - tools and techniques

Infrastructure  Management  

40

Page 41: Continuous delivery - tools and techniques

41

Puppet  

Page 42: Continuous delivery - tools and techniques

Vagrant  

42

Page 43: Continuous delivery - tools and techniques

http://flic.kr/p/6hDAEK 43  

Op$mizing  

Page 44: Continuous delivery - tools and techniques

44

Evolu$onary  Design  

Page 45: Continuous delivery - tools and techniques

45

Performance  Tes$ng  

Page 46: Continuous delivery - tools and techniques

46

Performance  Tes$ng  

Page 47: Continuous delivery - tools and techniques

47

Monitoring  

Page 48: Continuous delivery - tools and techniques

48

Con$nuous  Deployment  

Page 49: Continuous delivery - tools and techniques

49

Contact  Me  

Mike McGarr [email protected]

http://earlyandoften.wordpress.com

@jmichaelmcgarr

Page 50: Continuous delivery - tools and techniques

50

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 51: Continuous delivery - tools and techniques

51

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 52: Continuous delivery - tools and techniques

52

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 53: Continuous delivery - tools and techniques

53

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 54: Continuous delivery - tools and techniques

54

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/