DevOps started out as "Agile Systems Administration". In 2008, Andrew Shafer did a talk called "Agile Infrastucture" addressing issues around involving more of the company in the same disciplines as programmers.
In 2009, Patrick Debois created "DevOpsDays" conference to help to bring it to light. However, it wouldn't begin to trend until about 2010, when people would begin to describe it as a standalone discipline.
Today, DevOps goes beyond just developers, systems administration and infrastructure, its about dev, ops, agile, cloud, open source and business, everything.
DevOps is a movement. There's no certificate, role, set of tools or prescriptive process. There's no specification, it's not a product, or job title. There's no one true voice on what DevOps is or isn't. It's about attitude, ideas, customs and behaviours. Culture, paradigms and philosophy. It's a way of thinking, a way of doing and a way of being. Practicing as well as preaching. It's a conversation. It's about taking the best experiences and sharing those with others.
There are some very important qualities, principles and techniques that have proven to work, that everyone should be aware of, they are the best practices.
Let's explore those...
Note: Though not necessarily accurate, the practices are broken down into their evolutionary stages to make it easier to digest...
Waterfall to Agile
- People are the key - Get everyone together at the beginning. Keep meeting. Make it easy for everyone to see what’s happening.
- Products not projects - Delivery teams run software products, not projects, that run from inception to retirement.
- Keep everything in version control, all code should be under version control, allowing for code development and review, source code management tools, code merging.
- Culture - There's t-shirts, songs, music videos, podcasts, books. DevOps is as much about preaching as it is practicing.
- Kanban - Being able to limit the flow of work to a given worker is key, you must limit work in progress.
- Domain Driven Design
- System metaphor
- Systems thinking
- Two Pizza Teams
- Prioritisation - Work on the most important thing first
- Use analogies to communicate important concepts
- Blameless Post-Mortems
- Release early, release often - until code is in production, no value is actually being generated. If it hurts, do it more often, and bring the pain forward.
- Release often - How to eat an elephant - one bite at a time
- Listen to customers - Close the loop, focus on building a great product that people want to use
- Specification by Example
- Shu-Ha-Ri - Follow the rule, break the rule, be the rule.
- Sacrificial Architecture
Agile to Lean
Lean to Continuous Integration
Continuous Integration to Continuous Delivery
Continuous Delivery to Continuous Deployment
Continuous Deployment to Continuous Operations