Agile-DevOps: When CI/CR gets in the way of CD
Victor Hugo Certuche, SPC 6
Holistic Agilist at Scaled Agile Experts / Soft Skills and Leadership Coach / Oracle Primavera Coach
First it was Quality Assurance: Companies created groups or positions in charge of Quality, missing the point that Quality is the responsibility of Everyone! Now it is the turn for DevOps: companies create groups or positions for DevOps, instead of understanding that DevOps is the responsibility of Everyone! DevOps, like Agile is a mindset, not a thing.
DevOps main purpose is to allow development to happen in Production to avoid the waste generated in the traditional Dev-Test-Deploy cycle.
Even though it might sound counter-intuitive to allow development in Production, the fact is that through an Agile mindset we are flipping everything from traditionally being blockers (gateway) to enablers. As an example, ATDD allows the acceptance of a User Story to happen before coding even starts.
We need to focus our attention on the enablers needed to allow Development to happen in a Production environment rather than creating or optimizing wasteful gateways (i.e. QA, staging, UAT, etc) that get in the way of Continuous Delivery.
In a true DevOps environment, Production nodes are offlined to allow for Development to happen. Since Development is expected to be fully mature, CI is already in place and any changes to Development are validated through the CI cycle immediately. As CI succeeds, the Production node is partially onlined and monitoring starts. Once all the node's lifelines show stable state, the node is fully onlined.
Full DevOps is not a matter of technology since technology for this type of work has existed for some time now (bitbucket, docker, etc.). This process requires the company to think and act in an Agile manner. We need small changes that are contained in case there is a failure that needs to be offloaded. Most organizations still write monolithic code that makes it very difficult for this process to even start.
There are some companies that sincerely would like to move to a DevOps world but do not want to make the investment to enable the code to move into a DevOps ecosystem. Therefore, they put together a "DevOps" roadmap that includes optimization to the traditional Dev-Test-Deploy pipeline only to find out that such pipeline makes reaching true DevOps almost impossible!
These are the common excuses:
- Our applications are critical an require extensive testing
- We have regulations that we need to make sure we comply
- We have many dependencies that require integration and testing
- ...
To each excuse all we need to say is: "what are the enablers to remove the excuse". For example, if the business is heavily regulated, then we need the people in charge of regulations to be part of the team and work with the team to upfront any regulation issues! It is orders of magnitude cheaper to anticipate regulatory compliance than to retrofit it when the code is complete.
The road to a DevOps culture must start with the simple premise: "How do we enable Development to happen in Production?" Then, start uncovering all the enablers that remove the excuses to reach such goal. Optimizing the traditional DTD cycle very likely will take the company in a path away from true DevOps. It is time to stop optimizing Waste and start enabling Value.
Value delivery coach
8 年Love it.
Senior IT Leader
8 年Great post.
Agile Coach & Scrum Master, Detailer, JIRA whisperer. I don't do SAFe.
8 年Nice article Victor. I always cringe when I see "DevOps team" mentioned. That's an Ops team then.... The only time that makes sense is if they are building the tooling (having a team focussed on this for a short while means you get to your goal quicker) that supports your hot deployment in to production, but it's rarely the case.
Building JivaPMS
8 年Hi Victor, This is excellent, I appreciate your good views on this topic of DevOps.