Journey to CD Standardbank 20022015 V2

The Journey to
Continuous
Delivery
Presented by
Lenro Meyer and Reon Fourie
Continuous Delivery
“It is hard enough for Software Developers to write code
that works on their machine. But even when that is done,
there is a long journey from there to software that is
producing value – since software only produces value
when it is in production.”
Martin Fowler
Continuous Delivery
What is Continuous Delivery?
• Basically a logical extension of continuous integration (CI), but it
encapsulates a lot more than just software development
• Focused more on requirements and involves a whole lot more people
in the delivery chain than traditional CI
• Automate as much as possible
• It is all about creating a repeatable and reliable process for delivering
software to our customers to ensure we get continuous feedback on
what we are delivering
Our highest priority should be to satisfy our
customers through early and continuous delivery of
valuable software.
Principles of Continuous Delivery
• The process of releasing/deploying of software must
be repeatable and reliable
• Automate everything
• If something is painful or difficult, do it more often
• Keep everything in source control
• Done means “released”
• Build quality in
• Everybody has responsibility for the release process
• Improve continuously
Our Journey
1. Manual Build and Code Management
2. Continuous Integration
3. Continuous Delivery
4. Continuous Delivery helping us to DevOps
The Start
“Slow, error-prone, manual processes, delays, handoffs and
lengthy fix cycles inevitably lead to infrequent releases.
And when you infrequently release large numbers of changes
and fixes in one go, the go-live is predestined to be stressful and
often followed by days or weeks of post-release emergency
patches.”
Andrew Phillips
Legacy Applications
• Java projects where you had to include 30+ other
projects to develop and test
• Fragmented code repositories
• Distributed teams working on different branches
• Difficulty getting a project to work
• Testing and governance nightmare
• Even harder to deploy code to production
Continuous Integration
Ant Scripts
and
Manual
Artefact
Management
Maven
Atlassian
•
Crowd
•
Jira
•
Confluence
•
Bamboo
•
Fisheye
Nexus
Continuous Delivery
• Internet Banking re-write
• Deploys to application server
• Tests user interface
• Runs regression and
functional tests
• Test driven development
Release
• Release more often
• Jira generates release notes
• Create release builds
• Perform release build from Jira
Internet Banking Use-case
• Projected started March 2014
• Thoughtworks involvement
• Agile project (Does this mean it will go
faster?)
• Governance
• Big focus on test driven development
• New FE using AgularJS
• Automated builds using Bamboo (CI)
• Showcases every iteration
• Ready to go – We thought so….
Internet Banking Use-case
• Major issues with infrastructure (4 month
delay for go-live)
• November 2014 – Chop Chop gets initiated
• Goal Get to true continuous delivery for software
and infrastructure in 3 months and
– Change from AIX to Redhat
– WAS to JBoss
– WAS HTTP to Apache HTTPD
• Timeframe 3 months
Internet Banking Use-case
Success : Project Chop Chop go live
10 February 2015
https://experience.alpha.standardbank.co.za
Our journey still continues