The traditional application release cycle for most organizations takes months and sometimes years to roll out, from ideation to generating business value from the end users. This cycle impacts an organization's ability to be nimble and react to market changes, especially in today's fast-paced environment, as users' priorities and markets shift without warning.
Another major concern with the traditional release cycle is that ensuring a high-quality release incurs a high cost due to how the application is tested. A majority of the testing occurs after nearly all features are developed. This testing often results in a rush of critical issues being identified later in the release cycle, which becomes progressively more difficult to coordinate and implement a fix that adds to the time it takes to release and ultimately increases delivery cost.
The time it takes (from the conception of an idea from a requirement or a user request to the point when it is finally delivered to the target customer and the solution's value is realized) is known as time to market or lead time.
DevOps is fundamentally about increasing collaboration and speed of delivery to reduce the time to market. This type of radical enhanced collaboration is about breaking down the boundaries between the development and operation teams.
The different teams involved in the delivery of applications typically involve the following:
• Product development
In the traditional Delivery model, these different teams have conflicting priorities and mindsets, resulting in a lot of friction and increased lead time.
The following image depicts these conflicting priorities across the teams.
Review the conflicts teams face,
- Developers constantly change the application and release frequent enhancements. Simultaneously, a tester requires a stable application to perform their own tasks to validate the system.
- Developers constantly change the application without analyzing the impact on maintainability and operations. However, the operations team requires a stable and maintainable application to support live users.
- A tester's main concern is to validate the application's functional specifications. The tester has no understanding of the non-functional requirements such as, deployments (automated).
- An operations engineer is worried about maintaining the application and meeting the Service Level Agreements (SLAs). The Operations team is the most knowledgeable on the impact of disruption on customer experience when an issue occurs. Hence, the need of the operations team is also customer value driven.
- Stakeholders do not have a transparent view of the project's progress since they are engaged towards the end of the project. Hence, the stakeholders are not confident of the delivery teams.
DevOps and Agile
Agile and Scrum practices prescribe agility, deliver incremental value, transparency, and early feedback. Layering on DevOps speeds up these practices and earns you a black belt in receiving that feedback as early as possible.
For organizations using agile methodologies such as Scrum, following DevOps practices can accelerate and solidify core agile principles of being agile, delivering value early and often, receiving early feedback, and meaningful transparency. However, DevOps benefits even those teams that follow a more traditional delivery process.
One of the most rewarding outcomes of DevOps is reducing the time to market without impacting the quality or the value of the software application that is being delivered.
How does DevOps improve all the agile principles?
- Implementing a DevOps process emphasizes an automated delivery pipeline that is run frequently either on a schedule or on developers committing changes. While these pipelines can be entirely manual, automated, repeatable delivery processes ensure that these pipelines run frequently. This process reinforces the notion of delivering value early and often.
- Pipelines enforce quality gates and ensure that only high-quality changes are integrated or packaged and delivered. Changes that do not meet the quality gates are rejected, and all relevant stakeholders are notified. Notification improves the overall transparency of the delivery process. Quality gates make it easy to judge the release readiness of an application by how far along the application version is in the pipeline.
- As the organizational and technical ability matures, these pipelines can run to production, delivering application value faster to enable a quicker feedback cycle.
- Implementation of one or more automated release pipelines with meaningful quality gates to production forces the effective communication and collaboration of all the roles involved, from developers, quality assurance, operations, and other stakeholders involved.
Hence, organizations that follow DevOps practices emphasize alignment of their priorities to promote collaboration between developers, testers, and operation engineers to quickly deliver applications with high quality and maximized value to the customer.
DevOps is a mindset when it comes to people, a methodology when discussing processes, and a set of tools to reduce waste through processes and yield consistent outcome.
Check your knowledge with the following interaction:
Release frequency determines how fast a change is delivered to production without compromising on quality and performance. The idea is to release early and release often (RERO) while focusing on business needs.
Take a step back and think about how often do you release software to production:
- Once a sprint
- Multiple releases in a day
The lesser the release frequency, the more significant the changes and features are to validate. This proportionately increases the risk of quality and negative market reception. Releasing smaller changes ensures faster validation and reduces the risk to release to production.
Releasing small changes frequently reduces the risk of the application delivery process, allows it to run faster, provides the space for innovation, and lets developers react quickly to market demands.
The DevOps cycle
A DevOps cycle consists of Continuous Integration, Continuous Delivery, and Continuous Deployment stages and automated processes to quickly move applications from development through testing to deployment.
In the following image, click the + icons to understand more on the Continuous Integration, Continuous Delivery, and Continuous Deployment processes and where do these processes fit in a delivery cycle.