fixing continuous delivery for mobile

Post on 13-Jan-2017

6.596 Views

Category:

Business

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

2016

Rangle.io 129 Spadina Ave., Suite 600

Toronto, ON M5V 2L3 Canada

+1 (416) 737-1555

nick@rangle.io

Fixing Continuous Delivery for MobileNick van WeerdenburgFounder / CEO

rangle.io

@n1cholasv

@rangleio

Twitter:

Continuous Integration

Continuous Delivery

Continuous Deployment

what is continuous delivery?

“Build” multiple days times per day / after every merge.

Add unit tests, linting, beautification, etc.

Linked together with a tools such as Gulp.

Many solutions. We like CircleCI.

Why? To keep master “clean” and “working”.

continuous integration

Producing something of value* at frequent intervals.

Keeping master deployable.

continuous delivery

Actually deploying “deployable” code.

Can be tricky on the backend, easy for the front end…excluding mobile apps.

continuous deployment

Why Do Continuous Deployment?

continuous deployment = better Agile

CD Agile

Build what is actually needed.

discuss working software

focus on what's next

ruthlessly prioritize

Avoid work in progress.

Save Money

Realize ROI and learning earlier

Deliver 80% of the value with 20% of the effort.

Like Agile, it helps…

Deliver Early for Value and/or Learning

Image by xoque

Lean towards learning

(lean startup)

Lean towards tangible

value(classic scrum)

Good user stories/feature slicing

Limit WIP

Reduce cycle time

How to Achieve CD In General?

Buggy Software = Work in Process

Deferred Bug Fixing Costs More

Ergo, leaving testing to testers is often problematic.

Effectively, you end up with a mini-waterfall inside the iteration.

We aim for truly continuous delivery, where every merge is deployable.

So, how do you approach testing?

Short answer: testing is everyone’s job.

This raises the urgency of deploying your software.

Again… Deferred Bug Fixing Costs More

Rangle Flow

Cycle time

WIP

If these are high, debug the process.

How to Measure if CD is Working

Issues that Arise

Handoffs driving Rework

Design Development

TestingFeedback

Life of A Pull Request

Testing is one of the biggest lags

Design too, often due to regressions found during development.

Access to running code on device is essential.

Cost of fixing bugs?

The impact of PRs stacking is massive.

UX Design Dev Design Test

Solution

Designer works with the team

Pair designing as well as pair programming when friction occurs

Relentlessly measure WIP and Cycle Time and fix issues

expect team to need time to ramp up

automate everything

understand the value (tacit knowledge)

Solutions in the Team

PRs need to be closed in < x hrs

What is x? It depends on when you feel friction or pain

WIP goes up? It usually means PRs not being closed

This results in more development against slightly different codebases

This means more regressions

So…

Solutions in the CD Pipeline

Define

PrepareMinutes Count

Builds take time

Deploys take time

Testers can't be immediately available

Massive impact on flow, leading to…

Bigger PRs

Longer PRs

More regressions, more testing

But…

CodePush

Circle CI

Heroku-style PR deploys

deploy different PRs as needed

which enables to…

Our Solution

Hot push across dev lifecycle

phonegap-plugin-contentsync

Ionic push

nordnet cordova-hot-code-push

Microsoft Code Push

Rangle Cordwood

It’s too much! But we wanted hot push across dev lifecycle.

But…lots of Recent Hot Push Solutions

Cordwood

CircleCI hooks

Per-PR hot push

client-side UI to pick PRs

deploy once, and presto! On demand device config for testing across the dev. lifecycle

but Cordwood is dead (more later)

Cordwood has…

Define

PrepareWe killed it.

Many options arose at same time so it didn’t make sense to continue

Our goal: a solution that worked across all our JavaScript mobile projects

Lots of Recent Hot Push Solutions

CodePush

https://microsoft.github.io/code-push/

Handles the push well

No solution for per-PR pushes

Circle-CI, some node scripts, and some API digging solved this.

https://github.com/rangle/code-push-demo

CodePush

Now in slow motion…

That’s it!

Q&A

https://github.com/rangle/code-push-demo

https://microsoft.github.io/code-push/

Thank YouNick van Weerdenburg

nick@rangle.io

@n1cholasv

@rangleio

129 Spadina Ave., Suite 600Toronto, ON M5V 2L3 Canada

top related