DevOps is now synonymous with release acceleration in software development. This process-driven development ecosystem is also enabling development, quality assurance, and operations teams to actively participate in the systems development life cycle (SDLC), rather than owning just a single piece of the process. However, just like other IT transformation initiative, DevOps too has some pitfalls—and this post is all about how to avoid these.
Automation is the key to DevOps success, and there are several automation options for each process area to choose from. The selection process usually involves evaluating the proof of concept (PoC) results, determining the right open source-commercial mix, and assessing existing tools investments. After shortlisting possible options, the final selection can be based on secondary tool characteristics. Tools that are widely used must be given preference. This balanced tools selection strategy puts the QE team in a better position to leverage tool and plug-in versions, and quickly mitigate issues. With acceleration being DevOps’ critical takeaway, issues must be resolved as soon as they arise, as they have a direct bearing on the application quality.
The People Quotient
After tools, comes people – a skilled and empowered workforce is critical to DevOps’ success. Traditional QE teams must move beyond test automation and acquire skills for configuring and using life cycle automation tools that automate key steps in the build and deployment processes. This includes areas such as environment configuration management, reservation and tracking, and on-demand environment provisioning. Additionally, teams must also acquire skills for automating build and deployment, data provisioning, test execution and real-time monitoring. A comprehensive up-skilling strategy, combined with an empowered team, enables quick decision making and seamless DevOps adoption.
A top-down approach driven by management willingness and organization-level mandate to adopt DevOps, does enforce its broad principles. But the management mandate must also be supplemented with an open and collaborative culture, along with regular informal communication. Open discussions on DevOps benefits, implementation issues, and mitigation strategies, builds awareness and encourages active stakeholder participation. In addition to fostering a tool-based, collaborative ecosystem, DevOps also offers significant takeaways for all stakeholders, including QE teams. Single and multi-vendor distributed teams utilize time overlaps for their regular scrum activities such as standups, estimation and planning sessions, and retrospectives. These teams also utilize a common virtual scrum board to track progress and issues.
Managing the Life Cycle
Lifecycle Management tools facilitate creation of user stories, and effectively manage requirements. These tools also facilitate record maintenance such as sprint estimation, burn down charts, individual effort, and entry-exit criteria using Definition of Ready and Definition of Done. Teams can also rely on internally hosted Wiki pages or the Lifecycle Management tools for project templates, plans, architecture and other necessary details, so that everyone in the team has access to the latest, project-specific information.
DevOps inherently assumes that quality is built into the system, rather than being a process that is executed only during the test phase at the end of a release. This implies that adequate code coverage through unit and integration tests is a pre-requisite for successful DevOps implementation.
A typical challenge that Agile and QE teams face is inadequate bandwidth for enhancing code coverage through automated tests. Plus, to automatically ensure high code quality, these teams must also enforce strict, robust and automated quality gates. It is important for teams to accurately estimate the effort for each user story. In the DevOps scenario, increasing the test automation coverage must be a top priority for teams. Additionally, having a standard nomenclature for defining object properties enables QE teams to develop their automation scripts in parallel to development. This best practice ensures that test automation is always up-to-date with development, rather than the more common case where automation is done in the (n-1)th, or the previous sprint.
While life cycle automation is important, it is not the only success factor for DevOps. Automation must work in unison with robust processes, driven by an empowered workforce. DevOps is not a silver bullet that will solve all problems. Teams that have just initiated this change, must have realistic expectations. Nevertheless, DevOps has gradually but surely evolved from being a ‘great to have’ a few years ago to a ‘must have’ today. As DevOps reduces cycle time without compromising on quality, businesses must continue to retain and delight customers by quickly rolling out new features to production – while avoiding the pitfalls.