Continuous integration in large programs

Post on 14-Apr-2017

104 views 0 download

transcript

Continuous Integration in Large Programs

Naveen Kumar Singh@naveenhome

Let’s define large

What are the challenges?

One challenge per sticky note 10

Mins

Arrange in below order

Technical Problem People Problem Process Problem

5 Mins

Everything Boil Down to…….

I don’t know Why to do We can’t do

Time to Produce and Design?

Let’s look at things differently

Lean Product Development – Highly

Uncertain, High Variability and not repeatable

Design

Development

Testing?

Lean Manufacturing – Predictable, Low Variability, Mechanistic, shorter lead

time and near Zero defects.

Deployment

Information Security

Support (L1, Apps)

Why Continuous Integration

Let’s play a game to understand why Continuous Integration?

Simulation will cover below:-

• Cost of Delay• Cost of Production• Continuous Integration Principles

Define your Delivery Pipeline

Build Test Release

Deploy to test

Pre-Prod Prod

Manual or Automated

Time spend on each phase

20 Mins

Typical waste in software development

Defects Overhead processes Waiting

Not-realizing people's potential

Task switching Inventory Motion Extra features

What is Continuous Integration

A software development practice where members of the integrate their work frequently, usually each person integrates at least daily- leading to multiple integrations per day. Each integration is verified by an automated build to detect integration errors as quickly as possible. Many teams find that this approach leads to significantly reduced integration problems and allows a team to develop cohesive software more rapidly. – Martin Fowler

Continuous Integration PrinciplesEveryone commits to the mainlineEvery commit should be builtAutomate the buildMake the build self-testingKeep the build fastEveryone can see the results of the latest build

Continuous Integration For…….

Better• Quality

Faster• Feedback

Cheaper• Automat

ed

Our challenges……

Distributed Team

• India• Philippines• USA• Middle-East

Sub-Products

• Investment• Pension• Health• Wealth

Others• Different Skills• Manual Test• Wrong Metrics

Continuous Testing is Must

Build a fast and reliable automated validation test suite

Ensure test run quickly

Write our automated tests before we write the code

Automate as many of our manual tests as possible

Integrate NFR testing into our test suite

Rules for Team

Commit Early, Commit OftenCode may not be complete but should not be brokenUse feature togglingFix broken build is first priorityWork on TrunkAutomate, automate and automate…..Punishment for breaking team rules

What team was doing

Make constraint visible

Team brainstorm and identify

solutionFail fast to learn

better way

Focus on built-In quality not verification

Practice Test First Continuously review “DONE” criteria

What we achieved

– One click deploy in production– Single Branch– More than 120 people team– Nightly build– Code always in deployable state– Very less failed build– Reduced cycle time– Rarely rollback

Thank You!

Wanted to know more about Agile, Scrum, CI/CD and DevOps etc?

Write to me naveenhome@gmail.com

Call me +91 9810547500

Follow me on Twitter @naveenhome