DECODING DEVOPS: WHAT IS DEVOPS REALLY?
According to Wikipedia, DevOps is an Application Delivery method that emphasizes communication, collaboration (information and asset sharing and web service usage), integration, automation, and measurement of cooperation between software developers and other IT professionals.
This definition does not say anything specific about Continuous Delivery, Continues integration, nor about Agile. So why is DevOps often wrongly associated with these terms?
Today, the business expects applications to be delivered “at the speed of business”. For some class of applications (often consumer facing, via the web or mobile) delivery needs to be very fast (in terms of days, hours, or even less). Communication and collaboration between all stakeholders, including future consumers, is key to deliver fast to expectation. Also key is that as much of the delivery process in automated in order to be able to concentrate on the key business value-added activities and be able to get through the end-to-end process in time. All this sounds very “Agile” and “continuous “. At the same time it also uses many of the words in the definition of DevOps above…
“At the speed of business” however does not necessarily equates to “fast” or “continuous”. For another class of applications, reliance, stability, robustness, security, quality are other aspects of the deliverable that are sometimes even more important than its “time-to-market”. Of course timing is important, but not at the expense of… To maximize quality, minimize variability, and maximize predictability, the more automation one can put in place, the less amount of (human) errors. Inefficient communication/collaboration can also be a source of errors and missing objectives, so this is also a key focus area.
What are commonly observed characteristics of Application Delivery processes today:
- Stakeholders are potentially spread globally (development teams, testing teams, business consumers, operators, …).
- Different tooling is used for different aspects in the application delivery process, making measurement of cooperation and collaboration of information and assets difficult.
- Teams and departments sub-optimize their part of the application Delivery process, often not taking the customer value as prime objective.
What DevOps in essence stands for is:
- Enabling communication/collaboration between all stakeholders that take part in the application Delivery process.
- Automate as much as possible in the application Delivery to reduce variability and maximize velocity.
- Integrating and orchestrating the application Delivery steps and tooling for effective and efficient delivery.
- Establish a learning and improvement culture that attempts to optimize the application delivery process from a customer perspective. This can only be achieved from an end-to-end perspective.
Clarive provides an end-to-end Lean Application Delivery platform for the evolving enterprise on every available platform and environment.
The tool does not change the organizational culture to establish DevOps, but it is a prerequisite in order to succeed by establishing global communication/collaboration, automation, and instant insight. Both for teams using Agile as well as traditional development methods.
So what is the value of DevOps for the key resources types within the Application delivery process?
Apart from much more transparency and increased collaboration between all stakeholders using a SINGLE SOURCE of information, these are some of the specific advantages for each type of role:
- Demand Manager: Implementing DevOps ensures the demand manager that demand is captured and managed correctly and it is fully traceable up to the point of delivery. Traceability is support end-to-end, which implies during demand management, development, testing, and release/deployment.
- QA Manager: By implementing DevOps the QA manager is able to increase its QA process by also including the deployment scripts and processes into the QA cycle. It also allows them to properly implement a pull mechanism to manage workload. They can better trace progress on defects in both code and deployment scripts.
- System engineer/Developer: The system engineering team will be able to collaborate much better with the demand, test, and operations team using a DevOps Environment. This will reduce confusion and frustration during development and will enhance time-to-market through better alignment with the other stakeholders.
- Deployment Manager: Implementing DevOps provides the Operations team with a collaborative environment for proper handover of code to be put into production. By having the ability to manage deployment scripts as “code”, with versioning, they are able to deploy at the “speed of business” and in a repeatable fashion, reducing or even eliminating manual work. They can avoid having to work with the binaries, and work with the actual code itself, building it consistently and deploying it consistently. All this ACROSS all required platforms. Also the rollback processes can be managed and operated more granularly. A proper DevOps environment allows them to get instant insight in all deployment operations across all platforms, which serves better management and planning.