DevOps is a broad system that is made up of many interrelated elements. It is critical to ensure that there are best practices in place for each of the elements. The key elements in a DevOps deployment are automating provisioning, testing, build and deployment. Although there is an emphasis on automation in DevOps, this should not be interpreted to mean people are not needed in the process. The absence of collaboration and change management will create problems automation had aimed at eliminating. People are an important element in the automation process, especially when dealing with unforeseen events where intelligence and tribal knowledge are an important ingredient. These activities have to be balanced with continuous feedback and logging. This article covers the technical practices that are involved in flow and feedback.
In a DevOps process, there are several technical practices that can be put in place to optimize flow. These practices are discussed in subsequent sections.
Optimizing flow requires a deep understanding of application service drift. It is important to discourage individual viewpoints about databases, middleware, networking, and configurations. Instead, teams need to have a common perspective of the application and understand differences in expected and actual application configuration. With this approach, automation errors are minimized which in turn minimizes deployment failures and application down times.
It is important to ensure optimizations that are targeted at flow instead of individual processes. Process targeted optimizations will disrupt the flow. For example, a fast development process that is not synchronized with operations and quality assurance will result in problems. The best approach is to view DevOps as one process from objective setting to production. Optimizing flow improves team sharing and collaboration.
For improved teamwork, teams need to identify tools that will facilitate development, testing and deployment collaboration. The objective here is to define processes, plan collaboration and communication, and develop a tooling strategy. In a DevOps process, there are several tool categories that are needed.
- One category of tools required is version control. These tools are used for tracking software versions. Software elements tracked include the version number, configuration and dependencies.
- The second category is built and deploy tools. These tools automate building, deployment, continuous development and integration.
- The third category is testing tools which automate the testing process. The fourth category is tools that facilitate provisioning. These tools support platform provisioning, monitoring and logging changes in configuration, data, and software.
In a DevOps process, ad hoc work and changes should be discouraged. Instead, DevOps tools should be used. Capturing requests is a different activity from logging software progress. and change requests from any business area need to be automated. It is best practice to use kanban tools to automate requests. A Kanban framework supports agile development by helping you manage work in progress and team resources. The framework facilitates flexibility in planning, setting clear objectives and having a transparent development lifecycle. Kanban tools provide visibility of all activities and minimize work in progress. This way items get to be worked on after items in progress have been finalized.
It is important to ensure metrics from manual and automated processes are logged. When selecting a tool, it is important to ensure that the tool will help you capture relevant metrics to help you understand your processes. After defining important metrics, it is important to put in place automated processes to correct deviations from set targets.
Continuous feedback is a core element of continuous delivery. Continuous delivery alone does not guarantee better business outcomes or user experience. Continuous feedback gathers user experience and provides this experience to developers who use it to improve future delivery. Feedback is acquired through structured or unstructured methods. Techniques such as surveys and focus groups are used to get structured feedback. Unstructured feedback is obtained from social media feeds or reviews on app stores. This feedback should also be considered useful and incorporated in software improvement. When you have a DevOps process in place it is important to ensure you receive feedback in the shortest time possible.
A successful feedback loop requires the involvement of all stakeholders. Code developers need to have full ownership of the whole project. The traditional approach is to write and test code than hand it off for deployment. This can lead to lack of ownership. In a DevOps environment, development and testing collaborate closely with operations. This exposes developers to end user requests thus increasing their awareness of end-user needs.
The testing team as the first end users need to have a broad understanding of software features, its relationship with other elements of a product and how performance and security are affected. The interaction between testing teams and end users should be encouraged. This interaction promotes a qualitative understanding of feature values by testing teams.
In a DevOps approach, the operations team needs to be involved in managing and ensuring software is stable. The operations team needs to have a deep understanding of business objectives and end-user needs. When development of service level agrees with the users, the operations team needs to be involved. Involvement of operations helps them plan and deploy environments that meet end-user requirements.
Product owners are an important source of feedback on software value. Product owners are well placed to understand feature requests and market trends. This information should be shared with developers and operations to help them improve software quality.
This article focused on discussing the best practices in DevOps flow and feedback. The importance of automation in flow was discussed. The different stakeholders and their roles in ensuring successful feedback were discussed.