适用于物联网边缘的云本地开发
物联网软件正在走向云本地。这对于传统代码来说是什么意思呢?
让我们从定义术语开始说起。“云本地”方法将一个应用程序分解为一系列微服务(图 1)。由于云基础设施的同质化,这些微服务可以超级便携。因此,几乎可以将其部署在任意位置并即时更新。
云本地工程提供了更高的可扩展性和敏捷性,也为软件重用提供了机会。并让工程师变得更轻松。小型服务比单个大型应用程序更易开发、管理和维护。
结合企业与嵌入式代码
但是云本地方法又与传统嵌入式代码有所不同。嵌入式代码通常是专为特定平台定制的静态代码。此类代码经过精心测试可确保操作安全、稳定、可靠并具有确定性。
但是,结合使用传统代码和云本地代码绝非易事。还需要考虑认证问题。
Wind River 的安装工程主管 Paul Parkinson 称:“需要将安全关键型应用程序托管在安全关键型环境之上”。“所有开发的基础软件至少也应具有与最关键的应用程序相同的安全完整性水平。”
云本地应用程序在非确定性 Linux 上运行,并具有很多潜在的依赖关系。而这些依赖关系则通常无法通过 IEC 61508、ISO 26262 或 DO-178C 标准认证。
即使可以通过这些标准认证,认证成本也与系统中使用的有效源代码行数 (eLOC) 成正比。仅 Linux 内核就包含超过 2500 万行代码(仅供参考)。
云本地或安全认证?
云本地和嵌入式工程之间的差异可能无法调和,不过没有关系。我们仍然可以通过虚拟化和集装箱化结合使用以上两者。
如图 2 所示,虚拟化在虚拟化管理程序层运行多个操作系统。而集装箱化则依赖于单个操作系统。这也让容器变得更轻,因为其中只包含一个应用程序及其依赖关系。
云本地设计的基础是容器,而嵌入式设计则是首选虚拟化。但是这两种方法都可与恰当的虚拟化管理程序结合使用。
具体来说,类型 1 的“裸机”虚拟化管理程序可以提供嵌入式系统所需的确定性。由于类型 1 的虚拟化管理程序可以直接在硬件上运行,因此它们对系统资源具有完全访问权限,从而让其即有效又可靠。
这一点很重要,不过可以将其用于分割安全关键型功能和非安全关键型功能也同样重要。
Parkinson 称,“经过验证,即使没有安全需求,也可以通过分割在实时操作系统平台上托管安全关键型功能和通用功能”。“使用硬件虚拟化又将这一点提升至另一层次。”
例如,借助安全认证虚拟化管理程序,能够在实时控制器上部署云本地分析。借助这种方法可以将云本地功能轻松添加到现有嵌入式设计中。由于原始代码不变,因此可以将认证成本降至最低并维持确定性。
尽管如此,从更长远来看,还有很多问题需要考虑。走向云本地可以成为数字化转型的基础(视频 1)。
在 IT 与运营技术的合并过程中即可预见这种转型。事实上,到 2020 年,50% 的 OT 提供商将与 IT 公司进行合作(就物联网产品方面)。
当然,所有这些都取决于是否具有同时支持云本地应用程序的虚拟化平台。好消息是最新的虚拟化管理程序专门用于仅实现这一目标。Parkinson 称,“近年来,通过开发、认证和部署安全关键型系统已获取了大量经验”。