译者|布加迪评测|孙淑娟。IDC估计,到2022年,全球在边缘硬件、软件和服务上的支出将超过1760亿美元,比上一年增长14.8%,并在2025年达到2740亿美元。因此,您的开发人员现在很可能正在开发边缘应用程序,或者在不久的将来。在积极试水之前,有几个方面需要考虑。我是一名企业架构师,曾与多家开发组织合作,可以提供一些有关创建边缘应用程序的关键课程。牢记这些教训可以帮助您避免令人沮丧的结果,并确保您充分利用边缘计算。第一课:质疑自己的想法开发人员通常认为创建边缘应用程序就像创建数据中心或面向云的应用程序一样。但边缘是一种不同的范例,需要不同的编码方法,并慎重选择适合边缘的应用程序。大多数开发人员习惯于集中式计算环境,少数服务器拥有大量计算资源。但边缘计算颠覆了这一点,将适量的资源分配到不同位置的多台服务器上。这会影响任何类型的边缘工作负载的可扩展性。例如,内存密集型应用程序可能无法很好地扩展到数百或数千个边缘实例。出于这个原因,大多数边缘应用程序将专门为边缘构建,而不是从现有数据中心或云部署环境“翻译”而来。您需要批判性地思考边缘架构如何影响您的应用程序,以及哪些应用程序将从这种分布式方法中受益。将逻辑放在数据所在的位置通常更容易。因此,如果数据是分散的,或者需要访问大型集中式数据存储,则基于云的方法可能是明智的。但是,当应用程序使用边缘生成的数据(例如请求/响应、cookie和来自在线用户的标头)时,边缘计算才真正发挥作用。第二课:不要忽视基础知识虽然将代码分发到边缘可以改善延迟和可扩展性,但它不会突然运行得更快。低效代码在边缘也是低效的。如前所述,边缘的每个访问点将比典型的集中式计算环境更受资源限制,尤其是在无服务器边缘环境中。在为边缘编写代码时,优化效率对于充分利用此架构至关重要。虽然将功能推到边缘相对快速和容易,但您仍然需要应用通常用于任何代码的相同的管理良好的流程。这包括良好的变更管理流程、将代码存储在源代码控制系统中,以及使用代码审查来评估代码质量。第三课:重新思考可扩展性如果您使用边缘,您是在“向外扩展”而不是“向上扩展”。因此,您需要开发代码以适应每个请求的约束,而不是根据每个服务器的约束。这包括对内存使用、CPU周期和每个请求的时间的限制。约束会根据您使用的边缘平台而有所不同,因此了解这些约束并相应地设计您的代码非常重要。通常,您希望使用每个操作所需的最小数据集进行操作。例如,如果您在边缘进行A/B测试,您可能只想存储您正在处理的特定请求或页面所需的数据部分,而不是整个规则集。如果是基于位置的体验,你只需要特定州或地区的轻量级查询中边缘实例提供的数据,而不是所有地区。第四课:可靠性准则确保边缘应用程序的可靠性对于提供积极的用户体验至关重要。确保您的质量保证(QA)计划包括测试边缘代码。添加适当的错误处理对于确保您的代码优雅地处理错误也很重要,包括在出现问题时计划和测试回退行为。例如,如果你的代码超过了平台强加的限制,你想创建一个回退机制,让你回退到一些默认的内容,这样用户就不会收到影响体验的错误信息。执行分布式负载测试是展示应用程序可伸缩性的好方法。部署代码后,继续监控平台以确保未超过CPU和内存限制,并追踪任何错误。第5课:优化性能边缘计算的主要好处是让数据和计算资源更靠近用户,这可以大大减少延迟。当您跨越成百上千个存在点(PoP)进行扩展时,创建轻量级且高效的代码对于获得此优势至关重要。完成功能所需的数据也应该在边缘。开发需要从集中式数据存储中获取数据的代码将抵消边缘带来的延迟优势。对于您可能希望在边缘应用程序中使用的任何第三方代码,还需要强调高效执行。一些现有的代码库效率低下,会损害性能和/或超出边缘平台的CPU和内存限制。因此,在将任何代码合并到已部署的边缘环境之前,请仔细评估它。第六课:不要重新发明轮子仅仅因为边缘是一种新范例并不意味着您必须从头开始编写所有代码。大多数边缘平台都集成了各种内容分发网络(CDN)功能,允许您创建自定义逻辑来生成代表现有CDN功能(例如缓存)的输出。将代码结构化以确保可重用性也是一个好主意,这样代码就可以在边缘和集中式计算环境中执行。将核心功能抽离成一个不依赖于浏览器、Node.JS或特定平台功能的库,让代码“同构”,可以在客户端、服务端和边缘运行。使用现有的开源库是避免重写通用功能的另一种方法。但要注意需要Node.JS或浏览器功能的库。还可以考虑与一些开发与您使用的边缘平台集成的产品的第三方开发人员合作,这可以节省时间和精力,同时获得经过验证的互操作性的好处。将经验付诸实践为了说明这些最佳实践的影响,请考虑一个真实案例:一个组织难以在边缘实施地理围栏应用程序。由于超出平台在CPU和内存方面的限制,该组织面临着高错误率。查看组织如何构建应用程序,他们拥有所有地理围栏区域的数据,900KB的JSON,存储在每个边缘PoP。使用CPU密集型算法针对每个地理围栏检查POI,如果在检查的前几个区域中未找到POI,则会触发CPU超时。为了纠正这个问题,每个地理围栏区域的数据都被移动到一个键值存储(KVS)系统,其中每个区域都存储在一个单独的条目中。并添加了轻量级检查以识别某个兴趣点可能的“候选区域”(通常是1到3个候选区域)。只对候选区域进行全数据和CPU密集型检查,大大降低了CPU的工作量。这些更改将错误率降低到可以忽略不计的水平,同时缩短了初始化时间并减少了内存使用量,如下图所示。图1:成功率和错误率前后对比(注意成功和错误指标是不同尺度的,不能直接比较)图2:初始化时间前后对比图3:之前-和-内存使用情况的比较。(图片来源:Akamai)充分利用边缘边缘计算为受益于贴近用户的应用程序提供了巨大的优势,不仅带来了速度和效率,还带来了个性化的用户体验。成功的关键是确保您的应用程序非常适合边缘,然后优化您的代码以在不超出限制的情况下充分利用边缘平台功能。如果你关注我与多个组织合作的经验,你可以更快地充分利用边缘,而不会出现问题。原标题:边缘编码:成功的六课,作者:JoshJohnson
