As the virtualization, software as a service (SaaS), and big data revolutions continue, a whole host of new development strategies have emerged to take advantage of these technologies. These strategies, collectively called DevOps, enable software teams to deliver features to users more quickly and reliably than was previously possible with legacy software methodologies and offer exciting new opportunities for transformation of software practices in traditional software domains such as defense and aerospace. DevOps goes beyond agile by emphasizing integrated development and operations (hence the name DevOps), continuous delivery, and heavy use of automation and virtualization to improve consistency and reliability. Many of the major internet companies such as Amazon, Facebook, and Netflix are using DevOps to deliver continuous improvements to their diverse product offerings.
In a traditional software lifecycle, feature development and operational tasks like deployment, sustainment, and maintenance are loosely coupled. This paradigm mirrors the software delivery strategies of previous decades, when major named “releases” would be published through a variety of OEM, retail, and, later, online channels, primarily through physical media such as CD-ROMs. Defense and aerospace software modeled this process through the use of “block” releases corresponding to major system upgrades, often in connection with releases of upgraded electronic and mechanical systems. This model of software deployment gives users tons of new functionality all at once, at the expense of long release cycles and buggy releases that require lots of subsequent patching. Agile improved this situation slightly on the development side of the equation but did not address all of the operational issues with getting software into the hands of users.
DevOps Software Process and Aerospace
In a DevOps software process, some of the traditional technology and process relationships are inverted. First, in DevOps, development and operations are tightly coupled. Often, the same small engineering team is responsible for the full lifecycle of a feature or component, from design and development to testing, deployment, sustainment, and uptime. This strategy removes bottlenecks in deploying new features created by the handoff between various product teams with differing needs and goals. Instead, features themselves are often loosely coupled and treated as isolated APIs or services. This allows them to be maintained and upgraded independently without significant integration testing.
This decoupling allows for the more-or-less continuous development of features. While agile processes organize changes into two- to four-week sprints that will deliver a new working product, DevOps releases can occur multiple times per day if needed. Each DevOps update, whether a bug fix or new functionality, is treated as a live patch to an existing system with 100% uptime. The use of scalable virtual architectures such as Amazon’s AWS ensures that resources are always available to support the new release, accompanied by automated regression, smoke test, and performance validation. This approach is so ubiquitous in DevOps organizations that many mistake continuous delivery for DevOps itself. (A summary of this debate can be found here.)
DevOps Teams
In fact, DevOps is as much about getting teams right as it is about novel release or sustainment strategies. Because DevOps teams will design, develop, deploy, and maintain their software components, it is critical that the right attitude and skills be present. Developers need to have an increased focus on quality and especially how subtle changes might affect the integrated system since most DevOps teams will not include independent quality assurance. Everyone needs skills in virtual machines since virtualization will feature heavily in the design of quality, reliability, and scalability. Finally, teams will need to have some degree of permanence, as DevOps engineers are responsible for maintaining their code over the long term. Organizations that are used to maximizing developer productivity through frequent re-assignments or temporary augmentations from offshore teams will have to adjust.
DevOps can offer significant improvements in the time-to-market, consistency, reliability, and cost of defense and aerospace technologies, but will require some adaptation to meet industry needs and practices. DevOps works best in SaaS environments backed by commodity hardware and always on networking; strategies for simulating this in approach in embedded and offline environments will need to be developed. Care will need to be taken to ensure that continuous development and deployment does not impact the testing and certification requirements for safety-critical systems. Finally, traditional lifecycle strategies such as CMMI, which remain popular and occasionally even feature in contract requirements, must be adapted to accommodate DevOps. Nonetheless, as technologies and prevailing standards in the industry shift, defense and aerospace technology companies will have to embrace DevOps in order to remain successful and competitive.
When you need to augment your software and engineering team for a safety-critical project, contact Performance Software to learn how we can support you.