Copyright © 2015 SolutionsIQ Inc. All rights reserved. Branching for CD? Think again ! Devesh Chanchlani.

Slides:



Advertisements
Similar presentations
Testing Relational Database
Advertisements

Agile Software Distribution
Goal: Delight customer with frequent high-quality production releases. Scaled Agile Release Strategy Presented By: James Carpenter.
Test Automation Success: Choosing the Right People & Process
E X treme Programming & Agile Modeling Copyright © 2003 Patrick McDermott UC Berkeley Extension
System Analysis & Design Methods V Extreme Programming XP/dX.
Taking a Waterfall Project Agile REF: Paul Geberth GCSS-J Project Manager Establishment of an Agile Project.
Copyright  2002, Medical Present Value, Inc. All rights reserved. Copyright © 2010 Texas Education Agency. All rights reserved. TEA confidential and proprietary.
Simplifying Application Management CIO Strategies SummIT, Mumbai 23 Jun 2011 Rajesh Raghavan.
Atlassian Africa South Africa 2015 Jonathan Singh.
Agile development By Sam Chamberlain. First a bit of history..
EXtreme Programming Quick Introduction Daniel Arraes Pereira Eduardo Lourenço Apolinário Ricardo de Oliveira Cavalcanti.
Computer Engineering 203 R Smith Agile Development 1/ Agile Methods What are Agile Methods? – Extreme Programming is the best known example – SCRUM.
Chapter 3.1 Teams and Processes. 2 Programming Teams In the 1980s programmers developed the whole game (and did the art and sounds too!) Now programmers.
Xtreme Programming. Software Life Cycle The activities that take place between the time software program is first conceived and the time it is finally.
Introduction to Agile.
An Overview of Agile L e a d i n g C h a n g e T h r o u g h C o l l a b o r a t i o n.
 Definitions  Background/History  Continuous Delivery › How to practice Continuous Delivery  Continuous Integration  Continuous Integration Tools.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 17 Slide 1 Extreme Programming.
Adopting Agile for Enterprise Software Joe Bedell, Software Engineer Jason Breen, Software Engineer Peter Melko, Scrum Master June 15 th, 2015.
CONTINUOUS INTEGRATION, DELIVERY & DEPLOYMENT ONE CLICK DELIVERY.
Craig Berntson Chief Software Gardener Mojo Software Worx Branches and Merges are Bears, Oh My!
Continuous Integration and Testing
1 Department of Computer Science, University of Sheffield An introduction to eXtreme Programming Professor Mike Holcombe.
Dr. Tom WayCSC Software Processes CSC 4700 Software Engineering.
Teaching material for a course in Software Project Management & Software Engineering – part II.
Extreme/Agile Programming Prabhaker Mateti. ACK These slides are collected from many authors along with a few of mine. Many thanks to all these authors.
Extreme Programming (XP). Agile Software Development Paradigm Values individuals and interactions over processes and tools. Values working software over.
1 FROM DEVELOPERS TO ENGINEERS ENGINEERING ROLE IMPLEMETED AT EXPEDIA August 26, 2015.
TFS 2010 What’s new and interesting. Key Items Agile Planning Tools – Slides #3-#6 Improved parallel development - Slides #7-#8 Continuous Integration.
Chapter 2 Software processes. Topics covered Software process models Process activities Coping with change.
Chapter 7 The Practices: dX. 2 Outline Iterative Development Iterative Development Planning Planning Organizing the Iterations into Management Phases.
UHCS 2005, slide 1 About Continuous Integration. UHCS 2005, slide 2 Why do you write Unit Test ? Improve quality/robustness of your code Quick feedback.
Refactoring as a Lifeline : Lessons Learned from Refactoring Amr Noaman Abdel-Hamid Software Engineering Competence Center ( SECC ) IT Indeustry Development.
Phoenix Scrum User Group Simplifying Scrum Online May 21 st 2009.
Meghe Group of Institutions Department for Technology Enhanced Learning 1.
CERN IT Department CH-1211 Genève 23 Switzerland t Migration from ELFMs to Agile Infrastructure CERN, IT Department.
1 SYS366 Week 1 - Lecture 1 Introduction to Systems.
The Kiev Experiment Evolving Agile Partnerships. Who are we? Simon Sasha Peter.
CS223: Software Engineering Lecture 18: The XP. Recap Introduction to Agile Methodology Customer centric approach Issues of Agile methodology Where to.
Introduction to Software Engineering Muhammad Nasir Agile Software Development(2)
1 Punishment Through Continuous Delivery If it hurts, do it more often…
Benjamin Day Get Good at DevOps: Feature Flag Deployments with ASP.NET, WebAPI, & JavaScript.
Industrial Software Development Process Bashar Ahmad RISC Software GmbH.
By Aleksey Stukalov How to Develop Highly Customizable Off-the-Shelf Software.
Ognjen Bajić Ana Roje Ivančić Ekobit Efficient Application Testing.
1 © Agitar Software, 2007 Automated Unit Testing with AgitarOne Presented by Eamon McCormick Senior Solutions Consultant, Agitar Software Inc. Presented.
Tools and technology usage in PFMS application lifecycle management process LEPL Financial-Analytical Service, Ministry of Finance October, 2015 Dimitri.
Chapter 5 Agile Development Moonzoo Kim KAIST
Joonas Sirén, Technology Architect, Emerging Technologies Accenture
DevOps; a Tester’s best friend
Introduction to Agile Software Development
Continuous Integration and Testing
Real Metrics for Real Decisions
Extreme Programming.
Johanna Rothman Create Technical Excellence Chapter 9
Get Good at DevOps: Feature Flag Deployments with ASP
Branching and Merging Practices
Automated Testing and Integration with CI Tool
Software Testing and Maintenance Maintenance and Evolution Overview
Why Object-oriented Programming?
ABHISHEK SHARMA ARVIND SRINIVASA BABU HEMANT PRASAD 08-OCT-2018
Chapter 3 – Agile Software Development
DevOps Acceleration Engine
Open Source Tool Based Automation solution with Continuous Integration and end to end BDD Implementation Arun Krishnan - Automation Manager Maria Afzal-
Agile Development – a new way of software development?
Extreme Programming.
Roots/Git to Deploy What is continuous integration and continuous delivery How they are used at the Innovation Co-Lab Victor Wang, Software Engineer &
Jamie Cool Program Manager Microsoft
Open Source Tool Based Automation solution with Continuous Integration and end to end BDD Implementation Arun Krishnan - Automation Manager Maria Afzal-
Presentation transcript:

Copyright © 2015 SolutionsIQ Inc. All rights reserved. Branching for CD? Think again ! Devesh Chanchlani

Self Introduction Passionate Programmer Technical Agile Coach with SolutionsIQ Coach teams to embrace, scale and sustain XP practices Belong to Pune Branching for CD? Think Again! – Devesh Chanchlani 2

Project Background  Worked as an Technical Coach with a global e-payments company.  Multiple feature teams, contributing simultaneously in a release.  Each release would support numerous regions/countries.  Features would need to maintain compatibility across many vendor solutions.  Made a released once an year  And now we decided to go LEAN and deliver continuously … Branching for CD? Think Again! – Devesh Chanchlani 3

4 When we started making FREQUENT releases …

Branching for CD? Think Again! – Devesh Chanchlani 5 Mainline Feature 1 Feature 2 Feature 3 Feature 4 RnRn R n+1 R n+2 When we started making Frequent Releases

Branching for CD? Think Again! – Devesh Chanchlani 6 Then we decided to deliver features INCREMENTALLY …

Branching for CD? Think Again! – Devesh Chanchlani 7 R1 Code-freeze R1 R2 Code-freeze R2 Development for R2 (12 weeks) Stabilizing R1 (4 weeks) Integration Feature 1 Feature 2 Feature 3 Feature 4 Stabilizing R2

Challenges observed  Merge-hells on integration branch before code-freeze (Processing)  Release stabilization phase being a drag (Inventory, Waiting)  Merges and stabilization leading to several code-hacks (Defects)  Merge-hells on feature branches after each release (Processing)  Even 100% automation won’t solve our problem 8 Branching for CD? Think Again! – Devesh Chanchlani

9

On Retrospection … 10 Code-reuse & Refactoring becoming difficult No real Continuous Integration happening Isolated Feature teams

11 “Feature branching is a poor man's modular architecture, instead of building systems with the ability to easy swap in and out features at runtime / deploytime they couple themselves to the source control providing this mechanism through manual merging.” Dan Bodart Branching for CD? Think Again! – Devesh Chanchlani

Trunk Based Development (TBD) Branching for CD? Think Again! – Devesh Chanchlani 12

What it means …  All developers commit to a single branch, called trunk, making frequent check-ins.  Branches are created only for Release purpose.  Regular developers don’t commit to a release branch.  Release branches are never merged back to trunk.  Release branches are short-lived, frequently being replaced by other release branches. 13 Branching for CD? Think Again! – Devesh Chanchlani

14 Exploring Trunk Based Development Branching for CD? Think Again! – Devesh Chanchlani

15 Our BIGGEST Problem - Imagine you are releasing into production every two weeks, but need to build a feature that's going to take three months to complete. Branching for CD? Think Again! – Devesh Chanchlani

Feature Toggles 16 Courtesy: Spotify Labs / Henrik Kniberg Branching for CD? Think Again! – Devesh Chanchlani

Feature Toggle implies … 17  A configuration file defined a bunch of toggles for various pending features.  These toggles were mostly applied at UIs, from where interaction with the features began.  For features with no UI, the toggle would be in the app code.  using techniques like polymorphic substitution and dependency injection  Feature toggles were removed once the feature was complete.  Pipelines for different permutations of toggles for releases were setup.  If either of the build failed, it implied a bad commit. Branching for CD? Think Again! – Devesh Chanchlani

Feature Toggle types 18 1.Release – partial features, temporary 2.Business – certain class of users/regions, permanent (already existed) 3.Runtime – easier rollbacks, run tests with various configurations of features 4.Build – new feature codebase is not compiled Branching for CD? Think Again! – Devesh Chanchlani

19 Another Problem - Phasing out old implementations Branching for CD? Think Again! – Devesh Chanchlani

Branch by Abstraction 20 Consumer Component to be replaced STEP 1 Consumer Component to be replaced Abstraction Layer STEP 2 Consumer Old Component Abstraction Layer New Component STEP 3 Consumer Old Component Abstraction Layer New Component STEP 4 Branching for CD? Think Again! – Devesh Chanchlani

References  Paul Hammant -  Martin Fowler -  Carlos Lopes - Multiple projects, different goals, one thing in common: the codebase!  Henrik Kniberg – Engineering at Spotify  Chuck Rossi – The Facebook Release Process  Thanks to for comic characterswww.bitstrips.com 21 Branching for CD? Think Again! – Devesh Chanchlani

Our Customers 22 Branching for CD? Think Again! – Devesh Chanchlani

23 Thank you! solutionsiq.com Branching for CD? Think Again! – Devesh Chanchlani