云原生。这两个简单的词重新定义了我们构建、部署甚至消费软件的方式。二十五年前,当我还在为代码问题抓耳挠腮的时候,我根本无法想象有一天我会在网络浏览器中使用办公套件。然而,这就是现实。从一堆软盘中安装办公套件的日子已经一去不复返了。自然地,版本发布之间三到四年的间隔也成为了过去。如今,新功能可以随时随地出现,无需安装。软件行业的速度提升了一个数量级,这绝对是保守的说法。
从我的角度来看,这种演变是一项巨大的成就。当然,如果你比我年轻一点,或者甚至是那些从未经历过其他事物的“云原生”开发者,你肯定会有不同的看法。在这一点上,云原生实际上已经成为默认的做法——甚至对我来说也是如此。它既不令人兴奋也不新鲜,只是理所当然。然而,仍然有一些应用程序运行在云之外。这些应用程序正日益影响着我们的个人和职业生活。你看,软件正在吞噬世界。这意味着云原生应用正越来越多地被边缘原生应用所补充。
在本文中,我将定义边缘应用并描述其特性。但在我开始之前,重要的是要了解云环境和边缘环境有何不同。
边缘和云之间有什么区别?
我们周围越来越多的日常物品由软件驱动。这就是为什么我认为 物联网 这个术语最终将被 软件定义一切 所取代。这个想法对应用程序和服务的构建方式产生了深远的影响。在大多数情况下,将事物直接连接到云端是没有意义的。这就是 边缘计算 发挥作用的地方。边缘计算的核心是在网络边界(更靠近数据源的位置)提供计算、网络和存储能力。它可以减少延迟并优化带宽使用。它使应用程序更具弹性,并让用户控制其数据物理位置。
边缘和云是两种截然不同的计算环境。云的定义是资源的按需可用性。你可以随时创建新的虚拟机实例、增加网络容量或更改网络拓扑。云资源自然是有限的,但这些限制非常高,以至于大多数用户永远不会遇到它们。本质上,云是异构的、集中的和大规模的。
- 异构性:云是异构的,因为可用的计算资源分为几种预定义的类型。可以创建数百甚至数千个相同类型的实例,所有实例都是相同的,除非进行了自定义。从开发人员的角度来看,它们代表了一个稳定且可预测的硬件平台。
- 集中化:云是集中化的。你可以在特定的数据中心或地理区域部署资源,但一切都从中央控制台进行管理。
- 大规模:最后,云本质上是一个大规模的环境。你的特定部署可能很小,但你可支配的资源在容量和性能方面都是巨大的。
边缘与云截然相反。它是异构的、分布式的和小规模的。在设计边缘计算解决方案时,为工作选择合适的硬件至关重要。特别是,电池供电设备需要一流的电源效率,这意味着基于 ARM 和 RISC-V 架构的处理器比在云端更常见。此外,许多边缘设备必须与遗留设备交互;它们通常具有 IT 设备上找不到的端口,并利用特定于运营技术的协议。由于这些原因,边缘硬件通常因物理位置而异。根据定义,边缘计算意味着分布式应用程序;数据处理在整个边缘到云连续体的各个物理位置执行。最后,边缘是一个小规模的环境。当然,可以部署数千个边缘节点来支持一个解决方案。但是,在任何特定位置,计算、网络和存储资源都将受到严重限制。
这两个环境之间的区别意味着边缘原生应用与云原生应用有很大不同。现在让我们更仔细地看看它们。
边缘原生应用特性
边缘原生应用与云原生应用有一些共同的特性。两种应用类型都依赖于微服务。它们公开 API,通常以 RESTful 方式,从而实现服务组合。两种类型的应用程序都由松散耦合的服务组成。这种设计防止了服务之间产生亲和性,并增强了应用程序的整体弹性。最后,利用 DevOps 方法的团队构建了它们,重点是持续集成。然而,边缘原生应用通常会避免持续部署——尤其是对于由实时或任务关键型需求驱动的应用。
边缘原生应用自然具有使其与众不同的特定特性。具体而言,这些特性是生命周期、异构性和约束。
- 生命周期:边缘原生应用通常具有较长的生命周期。边缘原生应用通常包括大量的资本投资,例如重型机械或工业设备。这意味着它们必须维护和运行多年,甚至几十年。
- 异构性:边缘原生应用表现出异构性。在这里,我不仅指边缘节点本身,还指解决方案所有组件的来源。没有一家供应商可以为你提供构建和部署解决方案所需的传感器、执行器、微控制器、边缘节点、软件和网络设备。至少,你必须与多家供应商打交道,这些供应商具有不同的支持生命周期和对你特定市场的承诺。
- 约束:边缘原生应用受到边缘硬件和软件在现场面临的现实的约束。数据中心之外的世界是严酷的。威胁清单很长:极端温度、湿度、电磁干扰、水或灰尘侵入以及振动都会缩短设备的寿命并歪曲传感器读数。功耗也是一个巨大的问题,而且不仅仅是对于电池供电设备。更高的功耗会导致更多的热量,这需要更强大的冷却系统,而冷却系统又会增加成本并成为故障点。最后,由于边缘计算应用本质上是分布式的,因此它们完全依赖于网络。你必须假设网络将是不稳定和不可靠的,并据此设计解决方案。
另一个重要的考虑因素是,边缘计算桥接了信息技术 (IT) 和运营技术 (OT) 的世界。后者提供了用于操作工厂、管道、配水系统和风力发电场等工业控制系统的组件。换句话说,OT 是技术领域的一部分,可编程逻辑控制器 (PLC) 和监控和数据采集系统 (SCADA) 在其中占据主导地位。IT 和 OT 体现了两种不同的计算方法。IT 依赖于可更换且频繁更新的现成组件。在许多组织中,笔记本电脑的三年生命周期很常见。另一方面,OT 是关于控制关键基础设施的专用解决方案,这意味着更新不频繁。因此,可以说,对于许多组织而言,IT 是为业务服务的,而 OT 本身就是业务。
并非所有边缘原生应用都以 OT 用例为目标。但由于它们可能存在于云和企业数据中心之外,因此它们会暴露于 OT 应用必须面对的许多危险,并且必须满足许多相同的要求。这需要开发人员改变思维方式。
定义边缘原生
我们现在对边缘环境和边缘原生应用的特性有了深刻的理解。现在是回答本文标题中的问题的时候了:什么是边缘原生应用?
我对这个问题的回答如下:
一种分布式应用程序,由部署在云和企业数据中心之外的虚拟化或容器化微服务组成。边缘原生应用针对现场使用进行了优化,具有弹性,适应移动性,经过编排,并利用零信任和零接触运营模式。
这个定义意味着仅仅拥有在本地处理数据的分布式节点还不足以构成边缘原生应用。毕竟,此类应用程序是使用特定方法从头开始为边缘构建的。想想看:任何随机的事务性网站都是云原生应用吗?当然不是。
针对现场使用进行了优化
由于边缘原生应用通常在受限的硬件上运行,因此针对尺寸和功耗进行了优化。边缘几乎没有弹性,这意味着你必须仔细管理资源,尤其是在考虑到解决方案的预期寿命更长的情况下。你可能会想通过为边缘节点提供额外的计算能力、内存和存储来使其面向未来。然而,这不符合成本效益,并且无论如何,从长远来看可能都不可行。
弹性
边缘原生应用由于其分布式特性而具有很强的弹性。它们假定节点、服务甚至网络可能随时发生故障。它们尽可能无缝地管理此类中断,方法是缓冲出站事务和数据以供稍后处理。靠近故障系统的节点应该能够接管,尽管服务质量会降低。
适应移动性
边缘原生应用可以连接到移动网络并部署在车载节点上。它们具有位置感知能力,这意味着它们可以动态地利用本地环境中可用的服务。它们还可以根据当地法规和要求调整其行为。此外,它们可以在需要时利用基于位置的路由。这使他们能够选择最具成本效益的选项来传输数据和接收命令。
经过编排
边缘原生应用的组件可以部署在容器内,但虚拟机、无服务器函数和二进制文件也发挥着作用。所有这些部署工件的生命周期都必须经过精心编排,才能扩展或缩减某些服务,或分阶段进行增量更新。自然地,这种对编排的依赖使整个应用程序更具弹性,因为可以启动额外的服务实例来应对不利条件或运营挑战。
零信任
零信任模型意味着,默认情况下,任何设备都不受信任。每个设备和节点都被视为潜在的攻击媒介。零信任模型涉及系统的设备身份验证和授权,并限制了授予访问权限的范围和时间范围。此外,数据在传输和静态时都必须加密。
零接触
边缘原生应用需要凭据才能进行身份验证、授权甚至设备证明。后者涉及使用证书或类似方法来证明设备独一无二的身份和可信度。零接触引导意味着一旦设备连接到网络,此类凭据就会从中央位置自动部署。手动操作容易出错且可能成为攻击媒介,因此消除它们是一项重要的优先事项。
总结
如果你是云原生开发人员,我希望你现在意识到边缘计算空间与你熟悉的空间有何不同。然而,这些差异不应阻止你参与进来。你掌握的语言和技术肯定适用于边缘。凭借正确的思维方式和学习意愿,你可以成为一名高效的边缘原生开发人员。
如果你正在寻找经验丰富的边缘原生开发人员社区进行交流,请加入 Eclipse 基金会的边缘原生工作组 Eclipse 基金会。
评论已关闭。