2. How we deliver software
• We deliver software in a structured and ordered way. Software installs without
errors in 1 try in the clients environment. Our clients are happy and satisfied
with our delivery process.
How long does it take to get one line of code
into production?
3. Developer vs PM/Manager/Client
• The production environment has crashed.
• This prototype is rough and not ready and needs to be
rewritten before we hand it over to our customers.
• The prototype we are now using in production keeps
crashing.
• We want to work in a test-driven development mode.
• I can manually hack the production server to improve
performance and stability to overcome the issues
we're having.
• The manual hack I did last week has caused the disks
to fill up and the production server has crashed.
• You're not going home until it's fixed. I'll get the
pizza!
• Don't worry, you'll get time to rewrite it. (tonight)
• You're not going home until it's fixed. I'll get the
pizza!
• That will only slow things down and we don't have
the time.
• I fully trust your judgment on this, just get it done
quickly.
• You're not going home until it's fixed. I'll get the
pizza!
6. • Deliver code to a production-like environment with a user
base (UAT)
• Automated testing procedures during deployment
• Higher frequency, smaller volume.
• Automated deployments(as much as possible)
• Any feedback will come back sooner, before the code has
left the mind of the developer
Continuous
integration
Continuous
Delivery
Continuous
deployment
Continuous Delivery
9. Continuous Integration (CI)
The toolbox:
• Version Control
• CI Server
• Build automation
tool
• Test suite
The mindset:
Open
Honest
courageous dialogue
The environment:
Sit together
Open chat-room / forum
10. Continuous Integration: example
Commit
code to SVN
Code
analysis
Compile
application
Run Unit
test
Deploy
application
Run test(s)
Generate
report
Code analysis report
Build number
Test report
12. Some mistakes to look out for with CI
Mistake: Loose jobs that perform the tasks
It is easy to forget to run a job, you wont be able to easily see if your friends
also ran all mandatory jobs.
Mistake: 1 job that does it all
Your CI process should be granular in the most useful way. Having only 1 job
that does it all still requires you to deep dive into your code-test-
deployment, where several can already exclude and better specify what went
wrong.
Mistake: committing broken code
All broken code should automatically be uncommitted and the state of the
environment should rolled-back to keep the latest version working.
13. Continuous Delivery
• Is everything that you did with Continuous Integration but now we
are adding deployment to a user based environment to the cycle,
such as a UAT environment.
• Getting rid of waterfall deployment
14. Problems with waterfall deployment
• Long issue detection and feedback loop (did you already fix it?)
• Lack of cooperation between business and IT (what we actually wanted…..)
• Inability to change.
Requirements
Build
Compile
test
Requirements
Build
Compile
test
Requirements
Build
Compile
test
Deploy
15. The last step
• Manual deployments
• Insufficient configuration management
• Infrequent, error prone deployments
Stressful releases!
16. Requirements
Build
Compile
test
How the development cycle will look like
Requirements
Build
Compiletest
Deploy
Requirements
Build
Compile
test
Requirements
Build
Compile
test
Deploy
Requirements
Build
Compiletest
Deploy
Requirements
Build
Compiletest
Deploy
20. To Summarize
• Continuous integration is an effective way to solve integration
problems
• Continuous integration is a great way to improve the quality of the
software.
• Continuous Delivery removes the need of waterfall deployment
• Continuous Delivery makes the deployments more predictable
• Continuous Deployment gives best value for money
21. Watch & Read
• Kohsuke Kawaguchi who introduces us to Hudson, an open-source
continuous integration (CI) system, which improves the productivity
of a development team by automating various things.
https://www.youtube.com/watch?v=6k0S4O2PnTc
• Atlassian toolbox:
Greenhopper: https://www.youtube.com/watch?v=KWiSkH9Tqbo
Jira: https://www.youtube.com/watch?v=ca8n9uW3afg
Bamboo:https://www.youtube.com/watch?v=2IRTnbzk0RQ