Your SlideShare is downloading. ×
0
Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level
Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level
Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level
Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level
Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level
Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level
Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level
Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level
Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level
Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level
Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level
Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level
Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level
Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level
Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level
Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level
Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level
Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level
Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level
Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level
Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level
Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level
Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level
Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level
Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level
Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level
Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level
Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level
Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level
Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level
Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level
Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level
Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level
Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level
Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level
Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level
Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level
Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level
Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level
Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level
Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level
Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level
Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level
Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level
Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level
Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level
Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level
Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level
Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level
Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level
Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level
Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level
Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level
Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level
Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level
Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level
Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level
Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level
Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level
Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level
Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level
Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level
Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level
Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level
Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level
Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level
Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level
Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level
Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level
Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level
Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level
Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level
Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level
Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level
Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level
Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level
Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level
Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level
Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level
Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level
Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level
Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level
Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level
Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level
Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level
Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level
Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level
Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level
Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level
Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level
Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level
Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level
Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level
Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level
Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level
Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level
Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level
Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level
Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level
Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level
Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level
Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level
Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level
Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level
Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level
Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level

4,677

Published on

Agile Tool Hacking: Taking Your Agile Development Tools To The Next Level presented by Craig Smith at the September Brisbane Scrum User Group meeting.

Agile Tool Hacking: Taking Your Agile Development Tools To The Next Level presented by Craig Smith at the September Brisbane Scrum User Group meeting.

Published in: Technology, Design
1 Comment
4 Likes
Statistics
Notes
  • The            setup            in            the            video            no            longer            works.           
    And            all            other            links            in            comment            are            fake            too.           
    But            luckily,            we            found            a            working            one            here (copy paste link in browser) :            www.goo.gl/yT1SNP
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
No Downloads
Views
Total Views
4,677
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
109
Comments
1
Likes
4
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  1. Agile Tool Hacking: Taking Your Agile Development Tools To The Next Level Craig Smith Dr Paul King Suncorp ASERT
  2. Welcome
  3. According to the Compact Oxford Dictionary: Tool (noun) 1. a device or implement used to carry out a particular function. 2. a thing used to help perform a job. 3. a person used by another. Image: http://i.ehow.com/images/GlobalPhoto/Articles/2065416/dictionary_Full.jpg
  4. Image http://blog.theworkinggroup.ca/wp-content/uploads/2009/04/agile-manifesto1.gif Agile Manifesto on Tools…
  5. Image http://i.pbase.com/g3/64/559164/2/55171028.Pictures0588047R103315.jpg http://www.design-industry.com.au/en/wp-content/uploads/2007/07/fridge_01_400x400.jpg Refridgerators vs Radiators
  6. Image http://3.bp.blogspot.com/_qUcuMWvDsac/SLP8WaIAawI/AAAAAAAAA7U/OC_RU-BlB0M/s400/IMG_2682.jpg Refridgerators vs Radiators
  7. Image Beck, Kent – Extreme Programming Explained: Embrace Change XP Practices over Tooling
  8. Image http://blogs.conchango.com/Admin/ImageGallery/blogs.conchango.com/Colin.Bird/Scrum%20Overview%20Diagram.png Scrum Practices over Tooling
  9. Concept  Initiate  Deliver  Deploy Storycards & iteration management Collaboration Development environments Development tools Testing Continuous integration Deployment Monitoring Image http://3.bp.blogspot.com/_H0iqHTCqRyo/RfQyLHm8POI/AAAAAAAAABQ/-ZGsV-p-aVs/s400/evolution.jpg Tools Usage Timeline
  10. Tools Hacking Think Simple! Image http://www.appart.com/Blog/image.axd?picture=2009%2F6%2Fmacgyver.jpg
  11. Tools Hacking Great Team Image http://www.collider.com/uploads/imageGallery/A_Team/the_a-team_nbc_tv_show_image__1_.jpg
  12. Storycards & iteration management Storycards:  Promise for a conversation  INVEST  Defect tracking Iteration / Release / Project tracking:  Prioritised backlog  Iteration story wall  Burn-up & burn down charts  Metrics / Velocity Images http://www.concordion.org/image/example/online-shop/StoryCard.png  Estimation http://www.ugleah.com/img/2009/burndown_chart.gif
  13. Stories & Iterations The Manual Way Images http://www.selfishprogramming.com/wp-content/uploads/2008/10/building-kanban-board.jpg http://ssmirnov.files.wordpress.com/2009/02/still-life.jpg
  14. Example Storycards & iteration management tools Open Source / Free:  XPlanner: http://www.xplanner.org  Agilefant: http://www.agilefant.org  IceScrum: http://www.icescrum.org  Agilo: http://www.agile42.com/cms/pages/agilo/ Commercial:  Jira + GreenHopper http://www.atlassian.com/software/jira/ http://www.atlassian.com/greenhopper/  Mingle: http://studios.thoughtworks.com/ mingle-agile-project-management  VersionOne: http://www.versionone.com/  Rally: http://www.rallydev.com
  15. Iteration Tool Maturity Beginner Intermediate Advanced Start with a Introduce tool if: Connect tools eg. manual story wall Team members / IDE, VCS (index cards, markers stakeholders remote & stickies) Reporting requirements Extend tool with Easier stats / BVC 0wn / community / Keep manual BVC’s commercial plugins & burn charts Keep a manual wall of relevant level Electronic estimation Breakdown stories & & planning estimates (INVEST) Manual planning poker
  16. Agilo
  17. Mingle
  18. Jira + GreenHopper
  19. Hacking Jira: know the features
  20. Hacking tool integration
  21. Hacking planning poker
  22. Collaboration Team:  Daily Scrum / Standup  Retrospective  Kickoff / Demo / Showcase  Collective team ownership  Pair Programming Output:  Project Documentation  Email / telephone / IM Images http://fabiopereira.me/blog/wp-content/uploads/2008/11/walldc93a7f3- 2d9d-4525-8301-d40ad993e66f.jpg http://www.idea.gov.uk/idk/aio/8172457
  23. Collaboration The Manual Way
  24. Example Collaboration Tools Open Source / Free:  MediaWiki: http://www.mediawiki.org  Open Atrium: http://openatrium.com/  Google Docs: http://docs.google.com  Skype: http://www.skype.com  Eclipse Communications Framework (D0cShare): http://www.eclipse.org/ecf/ Commercial:  Confluence: http://www.atlassian.com/ software/confluence/  SharePoint / Office Communicator: http://sharepoint.microsoft.com  PBWorks: http://pbworks.com
  25. Collaboration Tool Maturity Beginner Intermediate Advanced Basic agile / XP / Scrum: Combined kickoff / Connect tools eg. Daily scrum / standup, retrospective for iteration management, retrospective, small projects build tools kickoff / demo / showcase Advanced XP Extend tool with techniques: pair programming, team 0wn / community / Basic wiki / shared document environment ownership commercial plugins Digital camera / Intranet / CMS Distributed whiteboard capability collaboration Wiki gardening
  26. Confluence
  27. SharePoint
  28. Eclipse DocShare
  29. IntelliJ Code Consultant
  30. Hacking Wiki + Iteration Mgmt
  31. Hacking Distributed Retros
  32. Hacking Intranets (Atrium)
  33. Development Environments Developers:  Pragmatic programmers  Continuous improvement  Efficient / repeatable Outcomes:  Co-location  Productive hardware  Consistent environments Image http://imgs.xkcd.com/comics/compiling.png  Scripted machine builds  Environment testing http://api.ning.com/files/mc- mk7rMBrQx2Jpql3boKhn9N2cHmubcFN6hyDrikT8FIz- 2EhEwcbpzSWjqQ8VdjxBVgOTgSs31- sL2oBoifORkpQ680Iu0/appleiphonesdklogo.jpg
  34. Development Environments The Manual Way Image http://www.xtrasens.com/support/manual/install%20flow.png http://img.dailymail.co.uk/i/pix/2007/07_01/hammerDM0607_468x584.jpg
  35. Example Environment Tools Open Source / Free:  VirtualBox: http://www.virtualbox.org  NSIS: http://nsis.sourceforge.net  Linux distributions (various) http://www.linux.org http://distrowatch.com Commercial:  VMWare: http://www.vmware.com  Cloud computing options http://code.google.com/appengine/ http://aws.amazon.com/ec2/ http://github.com
  36. Environment Tool Maturity Beginner Intermediate Advanced Instructions for Automated builds for Automated build for application environments developer machines building environments manually / consistently Automated environment Testers, team members tests on demand using similar environment Plan for pragmatic programmer techniques Required hardware / Consider cloud software computing opportunities Manual tests for checking environments Physical environment Zero cubicles, pairing renovations stations, breakout / Co-located team team area
  37. VMWare
  38. Google App Engine
  39. Physical Environment
  40. Hacking Dev. Machine Builds
  41. Hacking Corporate SOE
  42. Development Tools Developers:  Craftsmanship / clean code  Quality non-negotiable Tool Types:  Integrated Development Environment (IDE)  Database SQL clients  Version control  Web Service / SOAP tools  File & operating system tools Image http://www.cornetdesign.com/images/bowling_all2s.jpg  Metrics http://cybernetnews.com/wp-content/uploads/2007/07/hacker.jpg
  43. Development Environments The Manual Way Image http://www.domainlanguage.com/_library/images_people_working/designing_at_whiteboard.jpg http://4.bp.blogspot.com/_9kQQgQD35rY/SaV5p8YBGhI/AAAAAAAAAkg/HOvlhIo7yGI/s1600- h/06_Red_Green_Refactor.JPG
  44. Example Development Tools Open Source / Free: IDE’s (multiple language support)  Eclipse: http://www.eclipse.org  NetBeans: http://www.netbeans.org  SharpDevelop: http://www.icsharpcode.net  RadRails: http://www.aptana.com/rails  Visual Studio Express: http://www.microsoft.com/express/ Database Clients  DBVisualizer: http://www.dbvis.com/  SQuirreL: http://squirrel-sql.sourceforge.net Web Service / SOAP Tools  soapUI: http://www.soapui.org
  45. Example Development Tools Open Source / Free: Version Control Systems  Subversion: http://subversion.tigris.org  Git: http://git-scm.com  Bazaar: http://bazaar-vcs.org  Mercurial: http://mercurial.selenic.com File & operating system tools  PowerShell: http://www.microsoft.com/ windowsserver2003/technologies/ management/powershell/default.mspx fish: http://fishshell.org  Cygwin: http://www.cygwin.com  Miscellaneous OS tools
  46. Example Development Tools Open Source / Free: Metrics  Checkstyle: http://checkstyle.sourceforge.net  StyleCop: http://code.msdn.microsoft.com/ sourceanalysis  FindBugs: http://findbugs.sourceforge.net  PMD: http://pmd.sourceforge.net  Cobertura: http://cobertura.sourceforge.net  JDepend: http://clarkware.com/software/JDepend.html  Panopticode: http://www.panopticode.org  CodeCity: http://www.inf.unisi.ch/phd/wettel/ codecity.html
  47. Example Development Tools Commercial: IDE’s (multiple language support)  IntelliJ IDEA / RubyMine / ReSharper: http://www.jetbrains.com/  Visual Studio: http://www.microsoft.com/visualstudio Web Service / SOAP Tools  Oxygen: http://www.oxygenxml.com/ Metrics  Clover: http://www.atlassian.com/software/ clover  Simian: http://www.redhillconsulting.com.au Profilers  YourKit: http://www.yourkit.com
  48. Development Tool Maturity Beginner Intermediate Advanced Usage of IDE with team Mastery of IDE Mastery of advanced agreed setup keystrokes / features / IDE features / plugin plugins development Awareness / use of Usage of advanced basic tools / metrics Team commitment to react to metrics output metrics tools & features Use of version control Usage of distributed Usage of advanced version control features version control Team understanding of quality Advanced clean code / Quality non-negotiable / software craftsman clean code
  49. Image http://alagad.com/upload/intellij_tests_21.gif IntelliJ
  50. Clover
  51. Image http://www.inf.unisi.ch/phd/wettel/codecity-wof.html Code City
  52. Hacking IDE Plugins
  53. Hacking RYO IDE Plugins
  54. • d Hacking VCS: FishEye/SVNStat
  55. Testing Tools Testers:  Automate  Continuous feedback  Bridge communication gaps Tool types:  Test specification generation  Test execution / record / log  Test user interfaces  Performance test  Test / incident management  Reporting Image http://blogs.msdn.com/blogfiles/willy- peter_schaub/WindowsLiveWriter/VSTSRangersProjectsWCFLoadTestToo.0Sh ips_7D80/CLIPART_OF_13165_SM_2.jpg http://2.bp.blogspot.com/_U08AbEz5lx4/Ra9UkCi4EeI/AAAAAAAAAAY/vLpsqL 3uqE0/s320/swisstoolcsopen.jpg
  56. Testing The Manual Way Image http://tell.fll.purdue.edu/JapanProj/FLClipart/Verbs/understand.gif http://thedailystandup.com/wp-content/uploads/2008/12/istock_000004776276xsmall.jpg
  57. Example Testing Tools Open Source / Free: Test Specification – xUnit Tools  JUnit: http://www.junit.org  Nunit: http://www.nunit.org Test Specification Tools – Expressive/BDD  Spock: http://code.google.com/p/spock/  FitNesse: http://fitnesse.org  Concordion: http://www.concordion.org  Cucumber: http://cukes.info  easyb: http://www.easyb.org Test Specification Tools – Mocking  NMock: http://www.nmock.org  EasyMock: http://easymock.org
  58. Example Testing Tools Open Source / Free: Test Execution / Record / Log / UI  Selenium: http://seleniumhq.org  Watir: http://wtr.rubyforge.org  Tellurium: http://kenai.com/projects/tellurium  WebTest: http://webtest.canoo.com Performance Test  JMeter: http://jakarta.apache.org/jmeter/  Grinder: http://grinder.sourceforge.net/ Test Management  Radi: http://radi-testdir.sourceforge.net  RTH: http://sourceforge.net/projects/rth/
  59. Example Testing Tools Commercial: Test Execution / Record / Log / UI  Twist: http://studios.thoughtworks.com/ twist-agile-test-automation  GreenPepper: http://www.greenpeppersoftware.com/en/  Squish: http://www.froglogic.com Integrated  HP Quality Center / QTP / LoadRunner: https://h10078.www1.hp.com/cda/hpms/ display/main/hpms_home.jsp ?zn=bto&cp=1_4011_100__  SpiraTest: http://www.inflectra.com/SpiraTest/
  60. Testing Tool Maturity Beginner Intermediate Advanced Automated developer Test driven 100% test coverage unit tests development (unit / acceptance / functional) Some automated BDD / mock testing acceptance / functional Developer / tester tests Automated regression pair programming tests – new / legacy Developers / testers Automated performance working together plus All tests run in CI build testing with functional combined definition of (unit / acceptance / test reuse done functional) Risk based testing Usage of GUI test Usage of expressive / robots DSL testing Based on Elements of Enterprise CI http://www.anthillpro.com/html/resources/elements_of_ci_A4.pdf
  61. Quality Center
  62. Selenium
  63. NUnit
  64. Hacking JMeter
  65. Hacking Performance Tests
  66. Hacking Expressive Tests
  67. Continuous Integration Advantages:  Early warning  Consistent test / integrate  Centrepiece for quality Practices:  Version control / automated build / automated test  Commit early & often  Fast feedback  Visible / audible results  Artefacts Image http://www.michaelfransen.com/wp- content/uploads/2008/02/wheresthebuild-small.jpg
  68. Continuous Integration The Manual Way Image http://farm4.static.flickr.com/3122/3121915858_06a783e594.jpg?v=0 http://www.michaelfransen.com/wp-content/uploads/2008/02/wheresthebuild-small.jpg
  69. Example Continuous Integration Tools Open Source / Free: Continuous Integration Servers  Hudson: https://hudson.dev.java.net  Cruise Control: http://cruisecontrol.sourceforge.net Build Tools  Ant: http://ant.apache.org  Nant: http://nant.sourceforge.net  Maven: http://maven.apache.org  Gradle: http://www.gradle.org
  70. Example Continuous Integration Tools Open Source / Free : Dependency / Repositories  Nexus: http://nexus.sonatype.org  Archiva: http://archiva.apache.org  Ivy: http://ant.apache.org/ivy Commercial:  Bamboo: http://www.atlassian.com/software/bamboo/  Cruise: http://studios.thoughtworks.com/ cruise-continuous-integration  TeamCity: http://www.jetbrains.com/teamcity
  71. Continuous Integration Maturity Beginner Intermediate Advanced Implementation of Implementation of Usage of build clusters / core build steps continuous integration slaves / VM snapshots server to auto-run build Frequent check-in to Dependency management version control system Dedicated build & internal repository machine Adequate hardware to run build Advanced / refactored / High frequency check-in multiple builds to version control Team commitment to system fixing broken builds Broken build alerts & team procedures Builds for environment / project impediments
  72. Hudson
  73. Hudson Plugins
  74. Nexus
  75. Hacking CI Data Migration
  76. Hacking Hudson / Scoreboard
  77. Hudson Swarms Plugin Growth > java -jar swarm-client- jar-with-dependencies.jar Continuous Integration Game Plugin Jira Plugin Amazon EC2 Plugin Image http://weblogs.java.net/blog/kohsuke Hacking Hudson Plugins
  78. Deployment Tools Advantages:  Repeatable from development to Production  No “fight night” surprises Practices:  Automated deployment script  Environment management  Environment tokens  Automated & manual steps  Smoke test / confirmation Image http://www.serena.com/images/products/dimensions-deploy/deploy- illustration2-286-23.jpg http://ciadvantage.com/cs/photos/storage/ctd.gif
  79. Deployment The Manual Way Image http://www.thekua.com/rant/wp-content/uploads/2006/03/RetrospectiveTimelineEvents.jpg http://farm4.static.flickr.com/3645/3340381990_fa9f004e5b.jpg
  80. Example Deployment Tools Open Source / Free:  Roll your own (scripts / build / CI server)  Cargo: http://cargo.codehaus.org  Capistrano: http://www.capify.org  SmartFrog: http://www.smartfrog.org Commercial:  Tableaux: http://www.incanica.com  IBM Rational Suite: http://www-01.ibm.com/software/rational/  BMC BladeLogic: http://www.bmc.com/ products/offering/bmc-bladelogic-application- release-manager.html
  81. Deployment Tool Maturity Beginner Intermediate Advanced Documented manual Fully scripted Usage of deployment deployment & rollback deployment & rollback tool (roll your own / process / checklist where applicable open source / commercial) Documented manual Roll your own basic smoke tests deployment to test Repeatable deployment environments using to all environments Automated helper CI server (tokenized) scripts Repeatable build for Automated production “go-live” processes deployment (push button or automatic) Based on Elements of Enterprise CI http://www.anthillpro.com/html/resources/elements_of_ci_A4.pdf
  82. Tableaux
  83. Tableaux Tokens
  84. Tableaux Deployment
  85. #/bin/bash SCRIPT_DIR=`dirname $0` . $SCRIPT_DIR/setup.sh HOST=$1 PORT=$2 ACTION=$3 URLS=("gi/underwriting/ncd/calculator?brand=wally" "gi/underwriting/ncd/service/ws/GiNcdService?wsdl") [ "${ACTION}" == "Test Installation" ] && { echo "Running test of the installation"; TMPFILE=/tmp/wgetresult.$$ for i in "${URLS[@]}"; do echo wget --no-proxy http://${HOST}:${PORT}/${i} >$TMPFILE 2>&1 wget --no-proxy http://${HOST}:${PORT}/${i} >$TMPFILE 2>&1 RESULT=`grep '200 OK' $TMPFILE` echo RESULT is [ $RESULT ] if [ -z "$RESULT" ] ; then echo "ERROR: NCD ${i} did not start" exit 1 else echo "SUCCESS: NCD ${i} started OK" fi rm $TMPFILE done; exit 0; } Hacking Manual Scripts
  86. [...] <configuration> <container> > mvn cargo:deploy <containerId>tomcat5x</containerId> <type>remote</type> </container> <configuration> <type>runtime</type> <properties> <cargo.remote.username>username</cargo.remote.username> <cargo.remote.password>password</cargo.remote.password> </properties> </configuration> <deployer> <type>remote</type> <deployables> <deployable> <groupId>war group id</groupId> <artifactId>war artifact id</artifactId> <type>war</type> <properties> <context>optional root context</context> </properties> <pingURL>opt. url to ping to know deployed</pingURL> <pingTimeout>opt. timeout (default 20000ms)</pingTimeout> </deployable> [...] Hacking RYO Cargo
  87. Cucumber Feature Feature: Deployment In order to use the latest version of testApp A support officer should be able to Check that testApp.war has been deployed to the remote machine Scenario: User deploys Given app testApp When I deploy Then the testApp.war file should be deployed to remote Cucumber / Capistrano Step Definition [...] When /^I deploy$/ do Dir.chdir(@app_dir) do system "cap deploy:setup" system "cap deploy" end end Then /^ the testApp.war file should be deployed to remote$/ do [...] Hacking Deployment Tests
  88. Monitoring Tools Advantages:  Visible status of assets  Pro-active maintenance Practices:  Environment monitoring  Process confirmation  Fault monitoring  Configuration monitoring  Security monitoring  Accounting monitoring Image http://www.monitoringsoftwareonline.com/files/QuickSiteImages/computer_plus_ magnifying.jpg  Log monitoring Image http://www.kace.com/img/content/screenshots/1000/reporting-dashboard.png http://www.kace.com/img/content/screenshots/1000/reporting-dashboard.png
  89. Monitoring The Manual Way Image http://upload.wikimedia.org/wikipedia/commons/5/52/Unix-process-list.png http://www.petri.co.il/images/virtual_vmware_files_explained_03.jpg http://trubke.net/_nw/1/17916.png
  90. Example Monitoring Tools Open Source / Free:  Roll your own (scripts / CI server)  Cacti: http://www.cacti.net  Zabbix: http://www.zabbix.com  Nagios: http://www.nagios.org  Monit: http://mmonit.com/monit/ Commercial:  Splunk: http://www.splunk.com  IBM Tivoli: http://www.ibm.com/software/tivoli  Hyperic: http://www.hyperic.com  NetIQ: http://www.netiq.com
  91. Monitoring Tool Maturity Beginner Intermediate Advanced Base level / centralised Roll your own basic Usage of monitoring monitoring on critical monitoring for tools at all levels components processes / logs / including application (eg. hardware, operating environments at level system, web server, application level database) Monitoring alert process Refactored logs Useful logs (logging (central location, Visual display of levels, log rolling, known redundant details monitoring tool / status support procedures) fixed / removed) Monitoring of advanced Ad-hoc usage of tools / Ad-hoc usage of tools / items (eg. configuration, procedures for procedures for accounting) reactive support proactive support
  92. Tivoli
  93. Cacti
  94. Splunk
  95. Hacking RYO Visual Monitoring
  96. 2009-07-14 17:10:00,028 [ERROR,au.com.suncorp.ldocs.web.AbstractAction] Unhandled exception caught in action: null java.lang.NullPointerException at au.com.suncorp.ldocs.web.RetrieveSADSAction.retrieveRtf(RetrieveSADSAction.java:98) at au.com.suncorp.ldocs.web.RetrieveSADSAction.executePost(RetrieveSADSAction.java:59) at au.com.suncorp.ldocs.web.AbstractAction.performIt(AbstractAction.java:66) at au.com.suncorp.ldocs.web.AbstractAction.performPost(AbstractAction.java:60) at com.thoughtworks.web.AbstractAction.execute(AbstractAction.java:58) at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484) at com.thoughtworks.web.struts.CustomRequestProcessor.process(CustomRequestProcessor.java:159) at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482) at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525) at javax.servlet.http.HttpServlet.service(HttpServlet.java:760) at javax.servlet.http.HttpServlet.service(HttpServlet.java:853) at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:971) at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:402) at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:28) at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27) at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:174) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:77) at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27) at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:6356) at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:317) at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:118) at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3635) at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2585) at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:197) at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:170) 2009-07-14 17:10:00,028 [INFO ,com.thoughtworks.web.struts.CustomRequestProcessor] END REQUEST 2009-07-14 17:10:02,841 [INFO ,com.thoughtworks.web.struts.CustomRequestProcessor] Processing a 'GET' for path '/ChibaSADS' 2009-07-14 17:10:02,841 [INFO ,com.thoughtworks.web.struts.CustomRequestProcessor] BEGIN REQUEST 2009-07-14 17:10:02,841 [INFO ,com.thoughtworks.command.Command] BEGIN COMMAND au.com.suncorp.ldocs.command.DocumentGenerationServiceCommand 2009-07-14 17:10:02,856 [INFO ,com.thoughtworks.dgs.server.dbaccess.DatabaseQueryManager] [START] FETCH EFFECTIVE TEMPLATE 2009-07-14 17:10:02,856 [INFO ,com.thoughtworks.dgs.server.dbaccess.DatabaseQueryManager] [START] FETCH TEMPLATE VERSION 2009-07-14 17:10:03,544 [INFO ,com.thoughtworks.dgs.server.dbaccess.DatabaseQueryManager] [END] FETCH TEMPLATE VERSION 2009-07-14 17:10:03,544 [INFO ,com.thoughtworks.dgs.server.dbaccess.DatabaseQueryManager] [END] FETCH EFFECTIVE TEMPLATE 2009-07-14 17:10:03,544 [INFO ,com.thoughtworks.dgs.server.dbaccess.DatabaseQueryManager] [START] DEEPEN THE QUERY Hacking Log Files
  97. Wrap Up: Plan your tools & approach Image http://jenn98.com/bugs/images/bugs-elmer-daffy.jpg
  98. Wrap Up: Manual first Image http://jellyflux.files.wordpress.com/2008/11/woman-surrounded-by-robots.jpg
  99. Wrap Up: Refactor processes & tools Image http://33epua.blu.livefilestore.com/y1pF8NaSRUp9Ge4uyvRJLXucalRXqNYGecfm2RUe_VN8Es7rSSe7N- WaQdBnHbgYc8jAr3O_NiZ_P4ZMzhh9vo7Ag/Project2.jpg
  100. Wrap Up: Learn from retrospectives Image http://www.dilbert.com
  101. Wrap Up: Eliminate waste Image http://www.cartoonstudio.co.uk/images/kmeters/ABBwaste.jpg
  102. Wrap Up: Tools Maturity Beginner Intermediate Advanced Collaboration Storycards & Deployment iteration Development tools management Monitoring Testing Development environments Continuous integration
  103. Wrap Up: Think like Macgyver Image http://jira.atlassian.com/secure/attachment/16943/macgyver.gif
  104. Wrap Up: Act like an A- Team Image http://www.popartuk.com/g/l/lgpp31670+i-love-it-when-a-plan-comes-together-weenicons-a-team-poster.jpg
  105. Want More Information? Craig Smith http://www.suncorp.com.au http://www.agileacademy.com.au craig.smith@suncorp.com.au @smithcdau Dr. Paul King http://www.asert.com.au paulk@asert.com.au @paulk_asert Download this presentation at: http://www.slideshare.net/smithcdau
  106. Acknowledgments Suncorp is one of Australia and New Zealand's largest diversified financial services providers, supplying banking, insurance and wealth management products to around 7 million customers through well-established and recognised brands such as AAMI, Australian Pensioners Insurance Agency, Shannons, Vero, Asteron and Tyndall, as well as Suncorp and GIO. Today, Suncorp is Australia's fifth largest bank and second largest domestic general insurance group, with over 16,000 staff. Suncorp has representation in 450 offices, branches and agencies throughout Australia and New Zealand. ASERT is one of Australia’s leading suppliers of development services, mentoring and training in Agile, Web Services, Web Applications, Java, Groovy and Grails.

×