DevOps

Accelerate software delivery by unifying development and operations teams with a shared set of automated build, test, and deployment practices.

What is DevOps? Why does it matter?

DevOps is a set of best practices and tools that accelerates the delivery of software. It replaces lengthy and error-prone deployments with structured, repeatable processes to build, test, release, and monitor the functionality and performance of software releases. DevOps practices can be applied to software applications, engineered systems, or software embedded in products, such as automobiles, delivering value to customers with greater velocity, efficiency, and reliability.

overlaycontent

How does DevOps work?

Like Agile, DevOps focuses on delivering smaller units of work at greater speed, providing a shared process and toolset to plan, manage, and monitor software delivery. It replaces large, infrequent releases with a continuous integration/continuous delivery (CI/CD) pipeline of customer value extending to embedded product software. The embedded DevOps model delivers software updates at discrete intervals, while other software enables more frequent over-the-air (OTA) updates.

The benefits of DevOps

Speed

Deliver value to customers more quickly through more frequent, automated software updates.

Deliver value to customers more quickly through more frequent, automated software updates.

Reduced Cost

Realize greater efficiency and automation, and reduce the overall cost of software releases.

Realize greater efficiency and automation, and reduce the overall cost of software releases.

Higher Quality

Improve the quality of the end user experience through consistent, automated testing and performance monitoring.

Improve the quality of the end user experience through consistent, automated testing and performance monitoring.

Improved Collaboration

Work collaboratively to build and deliver a shared vision of customer value.

Work collaboratively to build and deliver a shared vision of customer value.

Greater Customer Satisfaction

Reduce the request-to-delivery cycle and maintain competitive parity over time.

Reduce the request-to-delivery cycle and maintain competitive parity over time.

Longer Product Lifecycle

Extend the usable life of products through frequent software updates.

Extend the usable life of products through frequent software updates.

DevOps lifecycle

Because of the continuous nature of DevOps, practitioners use the infinity loop to show how the phases of the DevOps lifecycle relate to each other. Despite appearing to flow sequentially, the loop symbolizes the need for constant collaboration and iterative improvement throughout the entire lifecycle.

The DevOps lifecycle consists of eight phases representing the processes, capabilities, and tools needed for development (on the left side of the loop) and operations (on the right side of the loop). Throughout each phase, teams collaborate and communicate to maintain alignment, velocity, and quality.

overlaycontent

Phases of the DevOps lifecycle

The DevOps lifecycle consists of the processes, capabilities, and tools needed for development (on the left side of the loop) and operations (on the right side of the loop). Teams collaborate and communicate across the lifecycle to maintain alignment, velocity, and quality.

Plan

The planning phase of DevOps involves determining what requirements exist for the product, usually based on end-user input, to help assess what the software should do, and which features are necessary. This includes bug fixes, enhancements, and new features. Based on planning, teams build out a road map for their software project, outlining how the plan will be achieved. The road map will break down tasks into epics, features, and user stories in that order. An epic represents a larger chunk of functionality, providing a high-level view of the important initiatives within a road map. Epics include features that deliver specific capabilities or enhancements to a software application. User stories are the smallest component in the hierarchy of the road map that break down features into more manageable and actionable pieces. Once the process, from epics down to user stories, has been planned, then the building phase can begin. Successful planning sets the stage for the full project.

Build

The building phase is an iterative and agile approach to coding software. The software engineers and development team build code and collaborate to ensure that the code is completed and done in the correct style conventions. Code is then committed to a source code repository. This code can be merged with existing code if necessary, or branches of differentiated code can coexist. Human code is then converted to machine-readable code. DevOps is iterative and fast. Its focus is to build quickly but not lose quality or productivity. The code must be properly integrated and packaged for deployment so that the project can move forward. This is then assigned a version to ensure traceability.

Continuous Integration

Continuous integration automates the process of building code. When any contributor on a project changes a code, even if multiple people do that simultaneously, it triggers the continuous integration (CI) process. This automation takes any changes and compiles, tests, and verifies that new branch of code. This helps to ensure high-quality code, as well as speed when building new software. Modern DevOps is based around continuous integration automation, and major developer platforms feature CI.

Deploy

In DevOps, deployment is referred to as continuous deployment (CD). Oftentimes continuous integration and continuous deployment are grouped together as CI/CD. CD is an automated process where code changes are deployed as they pass tests, which allows for faster releases. It takes the human aspect out of deployment, which reduces error and improves quality. This saves time for the organization because teams can focus on their software builds rather than releases. This also helps to regulate when deployments occur and ensure that there are fast feedback loops on new features and code changes. Shipping code through CD is faster and helps organizations stand out from the competition.

Operate

The operation phase is the Ops portion of “DevOps” and is a critical part of the software development lifecycle. The operation phase occurs after software is delivered to customers and focuses on maintaining, monitoring, and troubleshooting. This involves patch releases and addressing security issues to improve the performance for end users. Monitoring is an important part of operations, as it ensures that performance is as expected, and that the user experience is positive. If issues arise, then troubleshooting is required to diagnose and fix bugs. If the operation phase is successful, then the software is reliable, secure, and secure. Maintaining the reputation of the software for end users is key in this step of DevOps.

Continuous Feedback

The continuous feedback loop is a way of improving the software and teamwork throughout the product lifecycle. Continuous feedback helps teams learn from releases and processes, and then change and sometimes enhance based on what is needed. This helps the iterative process of improvement. Correcting issues can happen as a product is being developed rather than at the end of the process. It also fosters collaboration among teams. Feedback can be based on the monitoring from the operation phase, from testing or incidents like outages. Having a continuous feedback loop and a commitment to learning and improving helps ensure high-quality software and customer satisfaction.

DevOps best practices

While DevOps processes vary, most include the following:

Collaboration

DevOps breaks down silos that separate development, operations, and test teams so they may be merged, or simply operate under a set of shared goals.

Holistic Release Planning

Link code changes with defects, requirements, and test cases. Holistic release planning allows teams to isolate problems, perform rollbacks, prioritize requests, and synchronize with hardware and electronics deliveries as needed.

Continuous Integration

Developers merge code changes into a shared repository that is integrated, compiled, and tested automatically at regular intervals—sometimes daily—to reduce the cost of integration.

Continuous Delivery

Code changes are regression tested and delivered into production environments at regular intervals—sometimes daily—to speed delivery of customer value.

Over-the-Air (OTA) Updates

New software is delivered wirelessly over the air to be embedded in products. In most cases, updates are carefully controlled to avoid destabilizing products in use.

Monitoring and Analytics

Track, analyze, and report on DevOps processes, and manage escalations with enhanced visibility. Monitor progress and provide teams with a single view of the DevOps value stream across projects.

Tools for DevOps: Codebeamer

Codebeamer is a requirements, risk, and test management solution that accelerates customer value delivery and frees up teams to adopt DevOps practices. Manage CI/CD pipelines with 360-degree visibility into requirements, code, and test data. Prioritize customer requests, make informed rollback decisions, and experience audit-ready traceability. Central DevOps hubs integrated with developer and testing tools, like GitLab, Jenkins, and Mattermost, replace fragmented toolchains. Streamline and manage engineered systems and embedded software releases.

overlaycontent

DevOps frequently asked questions

What are the challenges of adopting DevOps

Common challenges of adopting DevOps practices include:

Siloed Teams – Teams lacking shared processes and goals are likely to prioritize different sets of tasks, resulting in sluggish and error-prone deliveries, so many organizations merge development, test, and operations engineers into a single DevOps team. Teams can also maintain their current organizational structure but work with a shared process and objectives. Being able to view a single, shared dashboard is essential to unite teams around a common definition of success.

Lack of Automation—Frequent working software deliveries require automation across the build-test-deploy cycle or teams will be burdened by manual tasks. Integrated toolchains accelerate deliveries while enhancing DevOps quality.

Lack of Traceability—Lifecycle traceability helps organizations adopt DevOps practices with precision and control. Prioritizing delivery of a customer request, rollback of a feature causing performance issues, or delivering different features to different customers or geographies all require fine-grained development and release cycle control. This degree of release control is only possible when DevOps practices are integrated with other lifecycle disciplines.

How is DevOps different for embedded software?

DevOps practices can be extended to embedded software in products, such as automobiles, cell phones, and medical devices, with some key differences:

Delivery Timing – Smart products typically require more controlled and nuanced delivery practices such as automotive software updates batched and timed to coincide with regular auto service intervals. Deliveries are typically timed to minimize disruption and ensure safety.

Safety and Security – Many smart products are safety-critical, with regulatory oversight extending to DevOps practices. These products must meet traceability and audit standards, and security over the software update chain of custody.

Delivery Methods – Embedded software can utilize over-the-air (OTA) updates, traditional web, CD, or other wired delivery methods.

Heterogeneous Environments – Teams can achieve a high degree of control over the computing environment in traditional DevOps environments. They can dictate the inclusion or exclusion of specific software and ensure that all software maintenance tasks have been carried out, as opposed to operations teams that don’t own physical hardware devices. Embedded software updates generally require more complex testing over a larger number of hypothetical configurations to ensure that the updates will operate in real-world conditions and configurations.