DevOps - Useful and Powerful
DevOps and CI/CD Unit Business Manager at V-Ness
Software Production is a like a play with several acts. It would be difficult for a person to walk into a play in Act II and be able to understand the context - in order for the audience to fully appreciate and understand the play, they need to have the transitions from one act to the next make sense.
To understand expanding software automation value, we need to first recognize that software production is a mix of creative and disciplined efforts from requirements.
On one end of the spectrum we have initial Requirements and the process moves through stages until it is final out in production – Requirements->Design->Coding->Build->Package->Stage->Deploy->Test->Package->Production.
The Development space (Requirements -> Package) begins with high creativity and creativity decreases as we move through the different stages.
On the other hand, Operation efforts begin with initial coding efforts and the procedural rigor increases as we move closer to production
Once the developers are done with the basic creation, there is a highly repetitive zone in the middle which seeks to solidify configurations, verify functionality, verify quality, verify compliance, etc. and produce something that can be reliably and repeat-ably be used by the people who will derive value from that produced thing
It is in this intersection between Development and Operations and the associated transition where Automation can add tremendous value, tease out inefficiencies, and shorten time-to-market while increasing quality
Automation within the repetitive tasks of the DevOps zone has some obvious direct impacts with regard to labor cost
Machines don’t sleep, have dentist appointments, etc.
Machines always do things the same way – easier to troubleshoot
Machines document exactly what they did – less likely to assume or omit things
Countless opportunities to automate stuff that yield direct labor savings
Obvious things like:
Continuous Integration runs
Test coordination / parallelization
Systematic deployments / handoffs
Less obvious things like
Machine / VM startup or provisioning
Audit data gathering
Risk management (security scans, IP scans, quality scans)
Artifact cataloging / reuse
But good processes yield huge indirect savings in terms of productivity for developers and operations staff whose jobs may not be directly involved in the execution of the repetitive tasks in DevOps
Automatic data collection / standardization means no more wasting time chasing data for auditors
Automatic configuration and process documentation means that the ops guys don’t have to call the developers or testers during the maintenance window to figure out why a deployment is not working properly
Automatic and consistent processes improve life for developers. For example:
No waiting around for someone to get back to lunch to do something / run something
No wasted time from breaks due to someone screwing up the system configuration of a build or test machine – they should be always consistent and verified so by the automated process
No wasted time because a structural problem (security, IP, code standard, etc) got missed for weeks even though the code passed all tests
No wasted time building unnecessary artifacts through systematic reuse processes instituted consistently across all teams
The Strengths are:
Accuracy -> "Data Driven" – Apply the right data to right environment
Speed -> Eliminate manual administration with pre-build automation.
Consistency -> Apply data in repeatable manner to product environment
Reduce Maintenance Time -> Minimize deployment/environment build time.