2. First Principles
Our highest priority is to
satisfy the customer
through early and
continuous delivery
of valuable software.
http://agilemanifesto.org
Software
Environment
3. Necessary Focus
Developers must also support the operational use of their
software — a combination that’s become known as “devops.”
This further motivates writing good code and testing it
thoroughly. Developers’ personal stake in keeping the system
running smoothly complements the engineering procedures and
lets the system maintain quality at scale. Methodologies and tools
aren’t enough by themselves because they can always be
misused. Thus, a culture of personal responsibility is critical.
Kent Beck - Facebook - https://www.facebook.com/publications/514128035341603
4. Environmental Impediments
•
•
•
•
•
•
Ubiquitous in Agile initiatives
Common impediment at stand-ups at this moment
Unavailable environments
Costly to spin up another test environment
Inconsistent and stale configurations - system failures
Communication barriers between development and operations
5. Agile
Continuous Delivery
Short Cycle Times
Focus on Quality
Low Technical Debt
Individuals and Interactions
Dev
Ops
Delivery and
maintenance of the
software product
Delivery and
maintenance of the
systems on which the
software product
runs
How can we apply Agile practices to both?
7. A Deeper Vertical Slice?
UI
Business Logic
Data Access
Server Environment
<< User Stories
8. It’s all software now ...
•
•
Virtualization has revolutionized system operations
•
Let’s apply known practices to both application development and
system development
•
Let’s develop our systems - using build automation,TDD, and
CI
We have historically run our software on systems, now lets use
software to build those systems
9. Three reasons why this won’t work :)
•
Reason 1: System provisioning is much more variable than building
software
•
•
Reason 2: Systems are more heavyweight than software artifacts
Reason 3: Doing this involves possibly unfamiliar tools and skills
•
Operations write software? That’s for developers.
•
Developers manage systems? That’s for operations.
10. Too variable ?
•
Traditional system provisioning involves
•
•
•
•
Many steps
Specialized knowledge
Manual input
One solution: make provisioning deterministic
15. Too unfamiliar?
•
Explore new areas:
•
•
•
•
Developers - Learn sysamin stuff - bash, init.d scripts, managing public
keys, vi instead of Eclipse
System engineers - Dig into software development - Ruby, Java, TDD
Embrace new tools
Dev/Ops collaboration - pairing, post release retrospectives