Extending Continuous Integration

  • 687 views
Uploaded on

How to automate a release tool chain

How to automate a release tool chain

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
687
On Slideshare
0
From Embeds
0
Number of Embeds
1

Actions

Shares
Downloads
50
Comments
0
Likes
5

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. Extending Continuous Integration
  • 2. About the speaker
    • Johannes Brodwall
    • Lame duck Lead software architect at BBS
    • Organizer Oslo XP meetup
    • Organizer Smidig 2008
    • Blog: http://brodwall.com/johannes/blog
    .meetup.com/13
  • 3. What’s the point of Continuous Integration?
  • 4.
    • Pay now to insure against defects
    • Pay less to deploy to production
    • Release whenever you want
  • 5. What is Continuous Integration?
  • 6.  
  • 7.  
  • 8.  
  • 9.
    • Unit test
    • Functional tests
    • System run in test harness
  • 10. Result:
  • 11. Every check in is is now tested
  • 12.  
  • 13. Will this find all our defects?
  • 14. No!
  • 15.
    • Limited to our test harness
    • Limited to our imagination
    • And then there’s performance
  • 16. So what should we do?
  • 17. (Hint: CI is about paying now to avoid paying later)
  • 18. Pay more now!
  • 19. Our approach: Automated system test
  • 20.
    • Realistic setup
    • Realistic load
    • Realistic variation
  • 21.  
  • 22. How to automate system tests
    • Automated build (and test)
    • Scrap old data
    • Install latest snapshot
    • Download production data
    • Replay production data
    • Verify result
    • Send results and logs via email
  • 23. ” Did you meet any problems?”
  • 24. No
  • 25. No, Only challenges!
  • 26. The hard bits
    • Installation
    • Integration
    • Simulation
    • Verification
  • 27. Installation
  • 28. How to automate installation
    • Easy, scripted, always working install
    • Simplify
      • (Replace WebSphere with Jetty)
      • (Combine components)
    • Reduce integration
    • All nodes look the same
  • 29. (Side effects)
    • Easy installation
    • Simpler design
    • Simpler architecture
  • 30. Integration
  • 31. Integration Dealing with dependencies
  • 32. Dealing with integration
    • Don’t integrate - Do it yourself!
    • Simulate other system
      • Fake responses
      • Keep canned data (data centric)
    • Integrate with test version
  • 33. Simulation
  • 34. Simulation Put realistic load on the system
  • 35. Simulation Depends on what you system does
  • 36. How to simulate production
    • In our case: Files
    • Crawler (Dyrkorn & Watne)
    • Load generator (D&W)
    • Record HTTP requests
  • 37. Verification
  • 38. Verification Finding out if it worked
  • 39. How to verify results
    • Compare with production
    • Verify integrity
    • Check logs
  • 40. Comparing
    • Store test result in database
    • Store production result in database
    • Full outer join on key fields
    • Find missing or mismatched status
    • Filter out know deviations
  • 41.  
  • 42. Date
  • 43. Number of files
  • 44. Okay
  • 45. Missing
  • 46. Extra
  • 47. Extra Mismatched
  • 48. Extra Extra Extra Known deviations
  • 49. Consistency checks
    • SQL expressions that pick out things that are weird
  • 50. Logging
    • It matters!
    • Error logs should be empty if everything is okay
  • 51. Result:
  • 52. Every build is now system tested
  • 53.  
  • 54. Will this find all our defects?
  • 55. No!
  • 56.
    • Limited integration
    • Limited stability
  • 57. No! Automated staging
  • 58. No! Automated staging
  • 59. Automated staging
    • ” Next” version
    • Lock-step with production
    • Promote after a week
    • Monitor 9:00-16:00
  • 60.  
  • 61.  
  • 62. Only when you can think as an operator, can you master your system
  • 63. Result:
  • 64. Every release is hardened
  • 65.  
  • 66. Will this find all our defects?
  • 67. No!
  • 68.
    • Wrong requirements
    • Poor solutions
    • New user behavior exposes bugs
    • Bugs we didn’t care enough about
  • 69. The goal: Release after every iteration
  • 70.  
  • 71. The sad reality: Pilot release after every iteration
  • 72. Pilot production
  • 73. Why releases every iteration?
  • 74.
    • Find more bugs
    • Try the easy solution first
    • Find new requirement faster
    Exploit opportunity
  • 75. Result:
  • 76. Find all the bugs cheaply!
  • 77. Make sure it always works
  • 78. Pay more now to pay less later
  • 79. The goal: Release after every iteration
  • 80. (And throw away the bugtracker)
  • 81. Thank you!