为何嵌入式开发也需要DevOps?
对于碎片化的嵌入式和物联网产品开发而言,没有什么是比DevOps更能显著提升效率的方法了。作为新一代持续集成/持续开发(CI/CD)的方法论,DevOps正被快速从企业软件引入嵌入式世界中。
为什么企业对于DevOps的接受度越来越高?根本原因就是DevOps可以降低成本并提升效率。
根据Google DORA( DevOps、Research与Assessment)团队最新的《DevOps现状》报告,在DevOps方面成效不佳的团队很少能够在6个月内将软件投入生产运营。即便他们做到了,也会有16%-30%的失败率,而且他们很可能需要长达六个月的前导时间来让代码投入生产运营。就算变更不那么频繁,但某些事情发生变更带来的风险相对较高,而下一次更新可能又需要6个月的时间。
与此同时,根据IT软件质量联盟(CISQ,Consortium for IT Software Quality )2018年发布的报告,美国劣质软件的总成本为2.84万亿美元。平均而言,每个失败项目的成本大约是5000万美元。
嵌入式DevOps的发展过程
随着云、虚拟化、安全等越来越多的新技术引入至嵌入式,嵌入式DevOps也经历了几次重大变革。
首先,是传统开发模式:传统开发方法将嵌入式DevOps分为三个流程。独立团队编写代码、整理代码以及测试代码。这在“瀑布式”软件开发方法中运行无碍,但是它的速度太慢,无法满足当今市场需求。
之后,是敏捷方法流程:这类方法为嵌入式DevOps提供了一种新的路径,可以更快速地发布新版软件代码。同时,这也是按照“DevOps”理念来整合不同流程和团队的第一步。
第三,则是随着云计算的普及,开始引入持续集成/持续部署(CI/CD):随着团队能够以空前速度推出新代码,DevOps方法的迭代也在快速演进。在每次迭代中采用卸载/重新安装的方式已变得不切实际。然而,CI/CD方法可以使软件系统在不停止运行的情况下进行迭代演进。
第四,是将安全集成至DevOps中,从而实现完整的DevSecOps:随着开发团队越来越忙,以及新代码定期发布,系统的安全风险也在增加。DevOps现在的任务是将安全性作为团队工作流程中必不可少的组成部分。
尽管DevOps有着诸多好处,但并非所有人都愿意尝试。风河公司的Jeff Gowan表示,公司尝试DevOps时,往往都需要解决以下两点问题,一个是需要克服开发惯性,另外则是通过合理的ROI,解决管理层的预期。
嵌入式DevOps之踵
同软件DevOps不同,嵌入式DevOps需要严重依赖硬件,而如今随着电子系统变得越来越复杂,有更多的硬件、更多的软件和更多的连接,也正因此硬件成为了嵌入式DevOps的瓶颈。
模拟仿真是解决硬件资源的一种行之有效的方法,通过采用虚拟硬件,从而将DevOps紧耦合,打通开发全流程。
风河的Simics全系统模拟软件可模拟复杂电子系统硬件,为开发人员提供物理硬件不可能具备的全新开发技术,进而实现更快更好的软件交付。
Jeff Gowan通过Simics,详细解读了DevOps的痛点以及应对方法。
首先是开发生命周期瓶颈,对于某些还没有上市或者虽然上市但成本过高的硬件而言,如果想尽早开发,就必须选择模拟仿真。但应注意,对于工业类应用而言,需要最佳的仿真平台,以满足严苛的设计要求。
其次,是精度与速度。对于仿真而言,精度和速度往往是相悖的两项指标,其中精度往往都是最重要的。DevOps流水线中的仿真模拟越精确,您对代码的信心就越高,您的软件发布准备也会更加完备。例如,如果您正在开发基于Intel的特定SoC芯片,而您无法获得这款芯片,就可以在仿真x86系统上进行开发和测试,或者在相似设备上进行较普通的x86开发。您可能会发现一些缺陷,或者错误地认为您的设计是可靠的——一旦您能在真实的电路板上进行开发,很可能发现以前做的工作都白费了。
第三,是无损测试的需求。这方面模拟仿真技术带来的好处非常明显,可在不损坏实验室、不破坏实际设备的情况下,对虚拟设备进行反复压力测试,甚至摧毁它直到发现所有漏洞。
另外,通过使用模拟仿真进行测试,还可加快产品的认证速度,并同时大幅削减硬件实验室的成本。通过采用预先模拟技术,几乎可以对无穷无尽的场景组合进行测试,测试的次数也几乎是无穷无尽。不需要更换硬件、重新布线或重新配置,只需直接点击重置、修改测试场景,然后再次执行即可。甚至可以在夜间将其设置为自动运行,然后在第二天早上登录观察运行结果。
第四,则是多设备集群测试需求。在一台设备上设置运行测试是一件事。如果您正在构建包括一群设备的系统,那就是另一回事了。如果用几十台、几百台或上千台设备建立一个实验环境,在其中运行测试肯定更不容易,更何况每个设备都有可能处于不同的环境中,或者需要执行不同的操作与部署。
“有一家企业曾将所有测试设备连接到他们的网络中,跨越公司的整个园区。虽然这是可以做到的,但是既痛苦又昂贵。您必须购买所有设备,然后花时间让所有设备实现网络互连。即便您的设备不是散布于办公室的各个角落,而只是在一个实验室里,那同样会到处都是电线电缆。环境混乱是真正的挑战。”Jeff Gowan举例道。
总结
依赖物理设备,是嵌入式软件与一般软件开发的不同点,这也是嵌入式不易实施DevOps的症结所在。对物理硬件的依赖,可能会增加部署成本和时间,同时降低开发质量。
如今,嵌入式行业正在随着科技发展而日新月异,为了满足终端市场的快速变化,工程师们也应当拥抱最新的设计方法学和新颖的工具,从而加速产品的开发、调试及测试周期,并降低系统成本。
风河Simics正是一款可以让您立即开始工作的生产力工具。通过提供物理硬件的虚拟替代方案,支持试验、故障排除、共享、共同、测试和运行、开发、配置等七项完整的开发任务,从而大大提高了工程效率,并降低了开发成本,使嵌入式敏捷开发成为可能。