On Tuesday I participated in an online panel on the subject of DevOps and CD for non-web applications, as part of Continuous Discussions (#c9d9), a series of community panels about Agile, Continuous Delivery and DevOps. Watch a recording of the panel:
Continuous Discussions is a community initiative by Electric Cloud, which powers Continuous Delivery at businesses like SpaceX, Cisco, GE and E*TRADE by automating their build, test and deployment processes.
Below are a few insights from my contribution to the panel:
Differences between web-ware and firmware
While you have to be continuously innovating, continuously delivering with your software you also need to be accounting for this firmware component as well. You need to make sure that as you have your pipeline as part of your continuous integration, there is continuous testing across the platform….You don’t want to push something to the end user when there is an error in it, you want to trap it and fix it immediately.
Challenges with DevOps for hardware, IoT and embedded
How does machine learning fit into this equation? I think that we are probably, from my perspective, two to three years out from really having robust production ready machine learning to handle (continuous integrations and delivery) across the pipeline, but I think it is something that if we are not thinking about now and we are not looking at how the equation changes when the devices are always on. If I’m able to integrate machine learning into this process, I’m going to be able to, theoretically, to reduce that level of friction that Steve spoke about, I think that it is a very important point, not a very important short term point but a very important long term point as we think in this community of CI/CD.
If I’m able to get real time feedback on a failure point it feeds into the entire process so I can get back into design mode, I can get it back into product engineering. It’s absolutely critical from my perspective.
Another (key point and challenge) is version control and having the ability to roll back in real time. Real time rollback is absolutely critical, it is something that we have adopted and we implore our customers to adopt because as soon as this bug is out in production and then a user finds it, you have to be able to go back to the previous version, it doesn’t matter what it takes and you need to have full version control across the spectrum.
Tips for DevOps for non-web apps
I would say that there are a couple of key things, single source repository, automate everything, build and deploy, make the build self-testing, make sure that you’re testing a clone of a production environment, make sure that you have a robust process communication so that everyone is seeing what is going on across the entire spectrum of delivery.
We talk about this a lot, that the software that we use is compliance in code, so you don’t have to maintain separate spreadsheets, separate databases, whatever your process is, the code is compliant and you are able to get that throughout your entire lifecycle of how you are delivering changes within your organization or to your customers or consumers.