All posts by razisiddiqui

Lessons learned from DevOps deployments: Testing, business strategies, and more

The word DevOps is derived from merging development and operations, and this merger is exactly what DevOps practice is all about: a set of practices to support collaborative partnership and communication between software development teams and IT operations leveraging maximum automation through key phases of solutions delivery process. Technology organizations need to promote a ‘one-team, one goal’ mentality, meaning that all members must view themselves as “critical” to the success of the team. Gone are the days of an “it’s not my job” mindset. DevOps’ core value proposition is its one-team delivery approach that covers the entire technology organisation.

DevOps is to IT industry what Toyota’s Kanban lean manufacturing was to the manufacturing industry. In today’s business environment, solutions and service delivery processes must be optimised for innovation and speed-to-market. Methodologies including Scaled Agile Framework (SAFe), Lean Startup, and Design Thinking are well-suited to support these objectives, and cloud platforms are the platform of choice for software solutions delivery.

Continuous integration and delivery

Gone are the days of multi-year projects and product launch parties. Continuous integration (CI) and continuous delivery (CD) are essential components of DevOps practice. Cultivating this culture of continuous application release is a paradigm shift in technology organizations, a shift that took off by agile methodology’s implementation and now overseen by DevOps practice. This shift requires that enterprises move at a faster pace than before – a pace that enables shorter solutions lifecycles and speed-to-market. 

If DevOps is to succeed, then you have to end the practice of running a large number of test cases manually

For error-free CI and CD, greater collaboration, automation, and information transparency is needed between business, development, and IT operations. To achieve this seamless internal collaboration and sustained innovation across the enterprise, DevOps adoption is essential. In cases where different teams work collectively towards achieving common business goals, DevOps helps companies respond to the challenges of multi-paced IT in combination with methods such as the SAFe to facilitate collaboration.

Continuous testing

DevOps demands speed and agility, at this pace traditional quality assurance (QA) testing methods are incompatible with DevOps practices. Gone are the days of “months on end” manual QA testing. If DevOps is to succeed then you have to end the practice of running a large number of test cases manually. With daily or weekend regression runs, test volume has gone up considerably, making test automation imperative.

Continuous testing is not an easy skill to master. It requires a lot of hard work at the beginning building out test cases. Traditional QA testers will evolve and transition into test automation engineers, who must have a complete grasp of application functionality as well as the underpinning infrastructure, test automation tools, and scripting languages. 

DevOps success hinges on getting continuous testing right. It’s a key indicator that your DevOps/agile practice is mature, and your QA strategy must take into account that 100% test automation is not practical – nor it is possible.

Infrastructure as code

One of the key components of DevOps is Infrastructure as Code (IaC) which is used in conjunction with CD. It is based on code development methods in the developments and deployment of Infrastructure configurations. IaC should not be confused with infrastructure as a service (IaaS) and should not be mistaken as part of configuration management tools provided by different vendors for infrastructure provisioning capabilities.

Teams should create IaC execution plans for building, versioning, and change automation of infrastructure services. Ops team should use same repository and versioning as Dev team uses for source code. Just as the same source code compiles the same binary, an IaC code should generate the same environment every time it is run. This allows DevOps teams to test solutions in production-like environments early in the development cycle. Gives them the ability to validate and test to prevent deployment issues. Teams are able to deliver stable environments rapidly and at scale.

Final thoughts

Combining DevOps culture with agile approaches such as SAFe and platform as a service provides resource elasticity and frees Ops from purchasing, shipping and receiving, so they can focus on optimising infrastructure and developers can focus on functionality rather than scalability. 

Continuous testing and Infrastructure as Code are the two most important components of DevOps

Continuous testing and Infrastructure as Code are the two most important components of DevOps. They both need most attention, training, tooling, re-skilling, and deployment of team members. Applying software development best practices to test automation and infrastructure configuration teams streamlines solutions delivery. DevOps teams should adopt a homogeneous set of tools and practices in order to deliver solutions and their supporting infrastructure rapidly, reliably, and at scale. Company-wide DevOps standardisation is paramount.

For business executives and technology executives (CIOs/CTOs), the main concern is the ability of DevOps to enable business transformation through faster innovative solutions development without disruptive blackouts, so to fulfill emerging business needs.

At the same time, for senior solutions development executives (SVP product development/SVP solutions delivery), their primary focus is on improving key metrics such as reducing risk and cost and improve quality, productivity, speed and agility in the SDLC. Adopters of DevOps focus on value-driven development and delivery, waste elimination, and automating repetitive tasks. Business transformation objectives and IT efficiency objectives need to be aligned.