You’ve toiled hard on your code, tested it locally, and you’re confident it’s ready to go. But how long until you see it in production? For some teams, it can be months or even years. By the time your new feature or bug fix gets used in anger, you’ve forgotten what you did! But with a great deployment pipeline and some clever architecture, there’s a better way.
This session is packed with war stories and real world successes. We’ll walk through the realities of a no-touch deployment pipeline that you can trust all the way to production, and we’ll examine some clever architectural patterns to enable true software agility. By the end, you’ll be convinced that if it’s not in production, it doesn’t count. If you struggle to get updates in the hands of users, this is the session for you.
18. @damovisa
BUILD
Does it merge?
Does it compile?
TEST
Do our tests pass?
Is our code secure?
DEPLOY + TEST
Do the tests still pass?
Does the UI work?
Can we talk to our DB?
PRODUCTION
I might buy a yacht.
A pipeline is about testing
THE PIPELINE
Did our deployment work?
19. @damovisa
BUILD
Does it merge?
Does it compile?
TEST
Do our tests pass?
Is our code secure?
PRODUCTION
I might buy a yacht.
A pipeline is about testing
THE PIPELINE
DEPLOY + TEST
Do the tests still pass?
Does the UI work?
Can we talk to our DB?
Did our deployment work?
30. @damovisa
BUT WHAT ABOUT…
One-way changes
Branch by
Abstraction
Transitional
Deployments
Technical
Debt
give yourself a
way back
resolve dependencies
based on feature flags
clean up after
yourself
31. @damovisa
+ + =
Everything.
Yes, everything.
Automation01
Stop the bad from
getting to Production
Testing02
Separate Deployment from Release
Test in Production!
Feature Flags03
A white yacht please.
Success
TAKEAWAYS
Don’t argue. These definitions come from the bible – the Continuous Delivery book by Jez Humble and David Farley.
It’s a progression.
…The end goal of this pipeline is…
…For this to work, the pipeline must be concerned with two things…
You’re testing the stuff you couldn’t test before – does this meet customer expectations? With real data? In a real live environment?
Make sure your code can run with the flag on and off. Avoid clashes and things you can’t undo. It’s hard.
For large architectural changes, branch by abstraction (look it up) lets you resolve dependencies based on feature flags