4. AGILE PRINCIPLES SAY:
“Our highest priority is to
satisfy the customer
through early and
continuous delivery of
valuable software.”
5. AGILE PRINCIPLES SAY:
“Deliver working software
frequently, from a couple of
weeks to a couple of months,
with a preference to the
shorter timescale.”
6. “Wait a minute! My
company doesn’t want
to deploy that often!”
that
ant is t
port
t’s im deliver fas
Wha CAN
you
8. , Tivoli, .
Nagios w, etc
PenVie
O
One master branch
Production
Monitoring and
Alerts
Rollbacks on
error
Deploy to
production
udson,
Verify expected
enkins / H
J
istrano,
behaviour
S, Cap e shell
TF
omemad, etc.
H
Compile and
scripts
Package
Pull from
master branch
9. WHAT COULD GO
WRONG?
We could put something new in production that
doesn’t work or we could break something that used
to work!
We could put a half finished feature into production
before it was ready and confuse the users!
We could kick the users off the system in the middle
of doing their work
10. HOW DID WE DEAL WITH
THESE IN THE PAST?
We had long manual test cycles between releases!
We typically deployed off-hours when nobody was
using the system
e’re
e if w utes
easibl 15 min
ot f very
N
ying e
deplo
11. PRE-REQUISITES
ARE HARD
Able to deploy to production at the busiest time of the day
with no visible changes - no unexpected changes, no
downtime!
Have sufficient monitoring to know when something goes
wrong and the ability to rapidly fix it or roll back to a known
good state!
No manual processes after code has been checked in. Every
step is automated.!
Holistic view of the process, from customer request to
production support. Team is bigger than just the devs.
14. COURAGE
Courage to say no to requests that compromise the
teams values!
Courage to say code quality isn’t high enough!
Courage to say these deadlines aren’t realistic!
Courage to escalate issues that nobody wants to
talk about
15. “Take pride in what you do. The kind of
pride I'm talking about is not the arrogant
puffed-up kind; it's just the whole idea of
caring - fiercely caring.”
Arnold Jacob "Red" Auerbach was an American basketball coach of the
Washington Capitols, the Tri-Cities Blackhawks and the Boston Celtics.
http://en.wikipedia.org/wiki/Red_Auerbach
17. SIMPLE DESIGN
“A complex system that works is
invariably found to have evolved from a
simple system that worked. The inverse
proposition also appears to be true: A
complex system designed from scratch
never works and cannot be made to
work. You have to start over, beginning
with a working simple system.”
-- Gall's Law
19. AUTOMATED TESTS
ations
ecific
ble Sp
ecuta
Ex
A section of executable code that can be run
repeatedly to ensure that our production code does
what it is supposed to do!
Why is it important to automate these?
23. REFACTORING
Code refactoring is a “disciplined technique for
restructuring an existing body of code, altering its internal
structure without changing its external behaviour”,
undertaken in order to improve some of the nonfunctional
attributes of the software. !
!
Advantages include improved code readability and
reduced complexity to improve the maintainability of the
source code, as well as a more expressive internal
architecture or object model to improve extensibility.!
!
-- Wikipedia entry on Refactoring
24. “The trouble with quick and dirty
is that dirty remains long after
quick has been forgotten.”
Steven C. McConnell is an author of many software engineering textbooks
including Code Complete, Rapid Development, and Software Estimation.
http://en.wikipedia.org/wiki/Steve_McConnell
28. COLLECTIVE CODE
OWNERSHIP
We all own the code!
We all keep it clean!
Clean up the garbage, no matter who left it like that!
Freedom to make any change, anywhere in the code
base
34. This model assumes one !
branch. !
!
Avoid feature branches.
Production
Monitoring and
Alerts
Rollbacks on
error
Deploy to
production
Verify expected
behaviour
Compile and
Package
Pull from
master branch
35. One branch !
per developer
Production
Monitoring and
Alerts
Deploy to production
Verify expected behaviour
Rollbacks on
error
Compile and package
Merge with master branch
Verify expected
behaviour
Verify expected
behaviour
Verify expected
behaviour
Compile and
Package
Compile and
Package
Compile and
Package
Merge with local
copy of master
Merge with local
copy of master
Merge with local
copy of master
Pull from
Amy’s branch
Pull from
Bob’s branch
Pull from
Carol’s branch
41. COMMON GOAL
How does each group get measured?!
Developers!
Testers!
DBA’s!
Operations staff!
Are those measurements helping or hurting the
overall goal?
43. MORE ADVANCED
AUTOMATION
Provisioning!
Getting a new machine up and running !
Configuration management!
Making changes to a machine already running!
Cluster immune system!
Automated rollbacks if the new deploy doesn’t
meet defined acceptable thresholds
46. PRE-REQUISITES
Able to deploy to production at the busiest time of the day
with no visible changes - no unexpected changes, no
downtime!
Have sufficient monitoring to know when something goes
wrong and the ability to rapidly fix it or roll back to a known
good state!
No manual processes after code has been checked in. Every
step is automated.!
Holistic view of the process, from customer request to
production support. Team is bigger than just the devs.
48. “Design and programming are human
activities; forget that and all is lost.”
Bjarne Stroustrup is a Danish computer scientist, most notable for the
creation and the development of the widely used C++ programming language.
http://en.wikipedia.org/wiki/Bjarne_Stroustrup
50. CONTACTING ME
Mike Bowler!
Agile & Technical Coach !
!
mbowler@GargoyleSoftware.com!
Cell: 905 409-7052!
Twitter: @mike_bowler!
!
Other links for me on Facebook, Google+ etc at!
http://www.GargoyleSoftware.com/mike_bowler
53. Production
Monitoring and
Alerts
Rollbacks on
error
Deploy to
production
Verify expected
behaviour
Compile and
Package
Pull from
master branch
Mike Bowler
Agile & Technical Coach
(905) 409-7052
mbowler@GargoyleSoftware.com
@mike_bowler