By Michel Genard
Agile methodologies and DevOps are still relatively new in the embedded systems world. Organizations must implement these strategies to meet market demands but are faced with personnel limitations and other challenges. To understand why embedded DevOps is essential for success, it’s important to understand how these methods have evolved.
Defining Embedded DevOps
You’ve surely heard about DevOps. To keep everyone on the same page, though, it’s worth taking a moment to review the definition and discuss what it means for makers of embedded systems. DevOps is the combining of software development, IT operations, and quality assurance (QA), three previously separate workflows and IT groups.
The Evolution of Embedded Systems Development
Traditional Embedded Systems Development
Traditionally, software developers wrote code. When they were finished, and the application had been through QA, it would be deployed into production by IT Ops, who arranged for the servers, storage, and other needs to make the code perform as expected in the data center. In embedded systems, the “Ops” half of the equation refers to the people who put the software onto the embedded system and oversee the production of whatever device the software powers.
This model worked well for the “waterfall” method of software development, wherein developers spent relatively long periods of time perfecting the embedded system software before turning it over to Ops. There’s nothing wrong with this approach. It’s just a little slow.
Traditional development methods are simply too slow for today’s competitive embedded market.
Agile methodologies introduced a new approach to software development. With agile, dev teams work in “scrums” and push out releases at a faster clip than is usual in the waterfall model. What became quickly apparent was that agile teams were creating code so rapidly that it was better to integrate the Ops and QA teams into the development process. They all started to work together under the DevOps banner.
Continuous Integration / Continuous Deployment (CI/CD)
Another consequence of DevOps relates to the mechanics of integrating and distributing the new code itself. The pace of code releasing grew so quickly that only automated software could handle it. Plus, many of the code releases were just small updates to existing applications. It made little sense to do a big uninstall/reinstall routine every day (or even every few hours) as new code came out of DevOps teams. To solve this problem, we now have continuous integration (CI) and continuous deployment (CD) of code. CI/CD tools take code and place it right into a production application without stopping any functions from running. This is like the old “change the tire while the car is moving” concept. But here, it works.
As DevOps teams got busier, new issues began to emerge. One involved security. Releasing new code every week or even every day creates risk exposure. Developers started to get asked to include security practices in their work. The result is a workflow known as DevSecOps.
Putting it All Together: Combining DevOps and CI/CD for Better Embedded Systems Development
Turning DevOps and CI/CD theories into practice requires toolsets that, although technically separate, are interdependent to complete CI/CD processes. The figure below shows a simplified version of the most common DevOps-to-cloud-CI/CD workflow. Each step in the workflow is supported by a specific type of tool.
For DevOps and CI/CD to be successful, developers, testers, security people, and operations teams must be able to collaborate in real-time as code moves through this workflow. Their software development tools and cloud platforms must support the tools and workflow in order to make the entire process work. (The examples shown here should not be viewed as authoritative. They merely represent a small sampling from a large pool of DevOps and CI/CD technologies.)
Organizations need ways to effectively integrate portions of the embedded development process to produce better software faster.
To see how each of these solutions helps combat the challenges associated with CI/CD, download our eBook:
Realizing the DevOps Vision in Embedded Systems