汽车DevOps:未来道路的规则

改编自JFrog业务发展副总裁Kit Merker的主题演讲.
随着软件为所有设备提供动力,使我们每天做的事情得以实现,软件工程师现在是保持我们现代社会运转的机制。我们越来越信任他们用生命创造的软件。
JFrog致力于实现它的愿景持续更新和液体软件在美国,我们对新兴的“物联网”(Internet of Things)行业或物联网(IoT)给予了大量关注。从制造业到智能家居,从无人机到石油钻井平台,从卫星到恒温器,这一庞大的互联软件驱动设备类别无所不包。所有这些行业的变化当然都是必然的,但没有一个能像汽车行业的变化那样引起共鸣。
自动驾驶汽车是代码
制造自动驾驶汽车的发展挑战是艰巨的、高风险的,而且对人类安全至关重要。这就是为什么我们决定直面它。

汽车是非常强大的机器,我们每天都把生命托付给它。我们都知道开车很危险,但我们还是会开车,注意交通规则,保持清醒,不发短信。为了使驾驶更安全,我们努力培养更好的驾驶员。
这些强大机器的轮子越来越多地交给了软件。因此,我们需要开发更好、更安全的软件。这需要持续不断的改进更新。
软件机制规则
当我们在JFrog的物联网团队开始我们的演示项目时,我们问自己:这些软件机制应该遵循什么规则?我们决定:
规则0:不要杀人!
当然,这似乎是不言而喻的。但我们非常清楚,自动驾驶汽车的目标是防止受伤和死亡,任何故障的后果都可能是严重的。作为第一规则之前的规则,这支配着我们所有的其他选择。
规则1:钥匙的转动应该是最新的。
当你打开汽车时,你不应该怀疑你是否安装了正确的软件版本。在一个液体软件的世界里,在最安全的时刻,更新会不断地流向需要它们的地方,所以汽车总是最新的。除了在最关键的情况下,司机不需要计划他们的时间表或访问服务中心安装它。
今天我们离那个目标还有很长的路要走。虽然市场上的一些车辆可以进行在线升级,但还没有任何一款车辆的软件升级可以让终端用户几乎看不到。
中国的一名电动汽车司机在交通高峰期不小心启动了更新在美国,长达一小时的下载和安装过程让他们被困在路上。相反,更新应该是快速和隐形的。
规则2:随着时间的推移,汽车应该变得更好。
随着不断更新,一辆车不必在离开停车场的那一刻就开始过时。软件bug也不应该像以前那样引发召回捷豹最近的刹车问题.
自动驾驶汽车正在快速改进,随着这些改进,行驶里程也在增加。通过持续交付的软件更新是改进这些汽车的关键。高兴的特斯拉司机经常在推特上说,新功能刚刚出现,让他们的体验更好,汽车更强大。通常情况下,你会认为汽车是一种贬值的资产,但我们都知道,软件只会随着反馈迭代、测试和客户使用而改进。
规则3:减少司机和开发人员的焦虑。
乘客和行人可能对自动驾驶汽车感到焦虑,但他们并不孤单。开发人员可能会有同样的紧张情绪——毕竟,没有人希望自己的代码签入导致代价高昂的召回事件成为头条新闻。
作为程序员和公司,我们需要能够信任我们推出的更新。自动化测试是必不可少的,还有更好地跟踪构建元数据、虚拟驱动环境和其他技术。但我们也需要确信我们的更新没有安全漏洞。
一个谨慎的更新创建和分发系统应该有助于在驱动程序和开发人员之间建立强有力的信任关系。
汽车用液体软件
我们JFrog的物联网团队一直在使用JFrog平台为了证明汽车用例swampUP 2019的与会者看到并探索了液态软件是如何真正工作的。
在旧金山,我们首次展示了使用RC车辆的现场实践演示。在这个小范围内,我们展示了如何使用Enterprise+在车辆行驶时更新其软件。

在我们的系统中,我们正在使用行业特定的技术,包括的必要构建集成嵌入式Linux系统柯南,我们的C/ c++包管理器.我们也在使用汽车级Linux,我们已经集成了物联网工具,如熔岩用于自动化设备管理和测试。

- 为了使汽车在钥匙一转时就能更新,我们依靠JFrog分布交付发布包Artifactory边缘将下载与安装分离的节点。我们使用修理者并排部署到设备上,支持在任何故障时快速回滚到最后的安全版本。
- 为了让车随着时间的推移变得更好,我们使用了用于CI/CD的JFrog管道使持续的软件更新和来自客户反馈的改进成为可能。
- 为了帮助减少司机和开发人员之间的焦虑,Artifactory为工件的可跟踪记录提供可信的存储库,JFrog Xray捕捉和隔离任何安全漏洞通过扫描基于风险的安全的综合数据库的工件。
除了在我们的实验室与我们的汽车进行演示工作外,我们更兴奋的是与我们的客户在他们的车辆环境中工作,并帮助每个人实践软件机制的规则!
