汽车DevOps:未来道路的规则

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

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

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

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