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
© Copyright 2024