There is a popular myth that DevOps is about discarding everything that has been built so far and starting from scratch. That is not the case. However, the adoption of DevOps does demand a certain cultural shift with people, process and technology in the line of development, testing and operations. Andreas Golze, VP Quality Engineering & Assurance, Cognizant, explains.
Quite often though, organisations encounter significant challenges during the implementation of the concept; particularly in the areas of legacy systems. So what are the benefits of DevOps and what steps can organisations take to successfully work with it?
One of the challenges faced by enterprises, especially the large ones, is to improve communication and collaboration between IT and business teams. DevOps emphasises ‘people and culture’, and seeks to improve collaboration between operations and development teams by changing IT culture, focusing on rapid IT service delivery through the adoption of lean and agile practices.
More specifically, DevOps addresses the existence of traditionally siloed team structures that are not able to scale to meet the varied needs of modern enterprises. It also addresses the philosophical disconnect between development, testing and operations teams, which results in poor communication, collaboration and integration. Moreover, it accelerates the deployment of digital technologies.
DevOps implementations use technology, especially automation tools that can make use of an increasingly programmable and dynamic infrastructure from a lifecycle perspective. Therefore, IT organisations are now embracing DevOps practices to fasten the frequent software releases into software production. This accelerates the time to market for new products and services and improves the overall customer experience.
In fact, according to a Forrester survey, a new software development lifecycle (SDLC) is emerging as the result of the three main focal points of DevOps practices and its characteristics include faster release cycles. First of all, more than 24% of companies have daily and weekly software releases. Secondly, changing requirements and lack of coordination between groups as roughly 47% believe these disconnects were primary points of failure during a release review and finally, the emergence of DevOps with approximately 66% of CIOs having this on their IT agenda.
Fitting the pieces together with continuous testing
Continuous testing (CT) is the first step in the right direction when embarking on a DevOps journey. CT is a constant feedback mechanism that drives software delivery through the software development cycle with automated feedback. At each checkpoint there is an auto-trigger for the next process in the delivery chain if the feedback is to move forward. If the feedback is to not move forward, the process is immediately stopped and corrective measures are taken.
Establishing a continuous testing ecosystem involves the following steps:
- It has been common-practice for many testing organisations to store automation scripts in test management tools or a shared folder structure. However, an automation code base, just like an application code base, should reside in version control repository.
- The automation suite must be integrated with the build deployment tool to enable centralised execution and reporting.
- To enable faster feedback at each checkpoint, there is a need to classify the automation suite in multiple layers of tests. The most common types of these tests are:
- Health check: this is an automated check to verify that services are up after deployment.
- Smoke tests: this most critical set of automated tests ensures that system features are operational and no blocking defects occur.
- Full scale regression test: the goal is to keep feedback time as short as possible through parallel execution of automated tests through multiple threads or machines.
- Intelligent regression: if the execution time for overall regression test is significantly high, CT setup becomes less effective due to longer feedback cycles. In such a scenario, full regression execution can be shifted to overnight or during the weekend depending on its alignment with recurring build frequencies.
- Existing automation tests and migrating tests must be simplified to more open source tools to further enhances the effectiveness of a DevOps setup.
- In order to effectively use available resources and establish the ability to run the load tests on-demand without wasting time and resources, organisations should consider building a cloud infrastructure.
If any of these steps fail, the deployment process is halted and all the stakeholders in delivering software including developers, testers and operations staff are notified immediately to make sure any issues are corrected.
What is next?
The notion that traditional IT organisations cannot do DevOps without throwing away what they have built over a period time is a myth. Testing teams play a key role in overcoming the challenges of transitioning to DevOps by orchestrating a CT infrastructure and creating an early feedback loop. By successfully implementing CT as a first step, the dots of DevOps can be connected with development and operations to create automated build deployments, code coverage analysis, production monitoring and on-demand environment provisioning. All of which enables a full cycle of CT and continuous development (CD) to be established for teams to fail fast and recover more quickly.
Unlike any other tech movement, DevOps is not only driven by a passionate and enthusiastic tech crowd, but it has also resonated with the rest of the business, many parts of which are first-line recipients of IT’s latest digital products and services.
Edited for web by Cecilia Rehn.