Upload
rangleio
View
6.596
Download
0
Embed Size (px)
Citation preview
2016
Rangle.io 129 Spadina Ave., Suite 600
Toronto, ON M5V 2L3 Canada
+1 (416) 737-1555
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
@n1cholasv
@rangleio
129 Spadina Ave., Suite 600Toronto, ON M5V 2L3 Canada