博客

使用 Volterra 应用交付网络 (ADN) 让您的 Web 应用不再受距离限制

Pranav Dharwadkar 缩略图
普拉纳夫·达瓦德卡
2020 年 7 月 30 日发布

本博客是有关企业面临的真实问题的新博客系列的开始,并描述了 Volterra 的应用交付网络 (ADN) 如何解决所概述的问题。 这个特定的博客详细介绍了世界各地的在线企业每天面临的网络应用性能的一个关键挑战。 由于大多数消费者在家工作,这一挑战变得更加严峻。 我描述了 Volterra 如何帮助企业“非距离化”他们的 Web 应用程序,从而实现 77% 的应用程序性能提升,而无需对其应用进行任何重写。

什么是 Web 应用程序性能?

Web 应用程序的性能通常通过最终用户看到页面内容所需的时间来衡量。 Web 开发人员使用多种指标来衡量其 Web 应用程序的性能,例如首次内容绘制 (First Contentful Paint)、最大内容绘制 (Largest Contentful Paint) 或文档完成 (Document Complete)。 在本博客中,我使用“文档完成度”指标来衡量我的 Web 应用的性能。Web 开发人员使用 Web Page Test、Google Lighthouse 或 Rigor 等工具来衡量这些指标。

为什么 Web 应用程序性能很重要?

Web 应用程序性能的轻微下降都会对用户体验产生巨大影响,从而影响在线门户的销售。 电子商务巨头亚马逊报告称,应用性能下降 1 秒就会导致 16 亿美元的收入损失。 正如Akamai 在这份稍早的报告中所述,多个垂直领域的在线企业也观察到了类似的经济影响。 谷歌和微软报告的经济影响数据类似。

abn1
图 1

这些数据点清楚地证实了 Webapplication性能是网上企业最关注的问题。

挑战是什么?

让我们以电子商务垂直领域的一个在线企业为例。 许多电子商务企业将其网络应用放在一个或几个数据中心,而这些数据中心并不存在于电子商务企业用户所在的所有国家。 当用户与数据中心位于不同的国家/地区时,从用户到数据中心的高网络延迟会导致页面加载时间缓慢近 6-12 秒。 如上所述,当页面加载时间超过 5 秒时,跳出率会增加到 90%。

让我们解构一个 Web 应用页面加载过程,如图 2 所示

adn2
图 2
  • 首先,建立一个安全的 SSL 会话,这需要在用户浏览器和 Web 应用程序之间来回发送 6 条消息。
  • 接下来,Web 应用程序通常会使用用户浏览器中的 cookie 来确定用户是否拥有该电子商务供应商的账户。
  • 根据 cookie,如果用户有帐户,则向用户显示登录页面,否则向用户显示以访客身份结帐的页面。

当通过高延迟链路(可能是跨大西洋/跨太平洋链路)传输时,仅设置安全 SSL 会话就需要六条消息,这肯定会影响页面加载时间,从而导致糟糕的用户体验

Volterra ADN 如何提高应用程序性能?

有许多技术可以通过优化应用来提高 Web 应用程序的性能,例如压缩图像或优化依赖项以减少页面加载时间。 很多时候,这些优化可能无法实现,因为业务需求推动了应用设计。 即使这些优化是可能的,它也可能不是一个可行的选择,因为编写该应用程序的开发人员不再在该组织工作或忙于开发新服务。 因此,电子商务组织中的 DevOps 团队重视能够提高应用程序性能但不需要更改应用的解决方案。

Volterra 提供两款产品 VoltMesh 和 VoltStack,与 Volterra 的 ADN 结合,可以将应用性能提高高达 75%(参见下一节的演示)。 Volterra 的 VoltMesh 产品是一种全球分布式网络和安全产品,在 Volterra 的 ADN 上配置时还提供应用加速功能。 Volterra 的 VoltStack 产品提供分布式应用部署和生命周期管理,使用户能够将其应用的部分内容卸载到 Volterra 的 ADN,以进一步提高应用性能。

VoltMesh 和 VoltStack 通过以下三种方式解决电子商务企业的 Web应用性能问题

解决方案 1: SSL 终止(又名 Volterra ADN 上的 TLS 卸载

提高 Web 应用程序性能的最简单解决方案是在 Volterra 的 Global ADN 上执行 SSL 会话终止。 用于建立 SSL 会话的六条消息集在本地发送到国内的全球网络边缘,不会穿越跨大西洋或跨太平洋链路。 远程 Volterra全球网络站点和原始服务器之间将有一个持久的 SSL 会话,从而进一步提高性能。 如图 3 所示,可以直观地看到这一点。

adn3
图 3

解决方案 2: 将对延迟敏感的处理(例如 cookie 处理)转移到 Volterra ADN 上

为了进一步提高性能,企业可以在 ADN 上部署其应用程序的延迟敏感部分。 Web 应用程序中对延迟敏感的部分的示例包括 cookie 处理或 graphQL 或前端的后端。 在电子商务企业示例中,他们通常处理 cookie 以确定向用户绘制哪个页面,例如,如果用户有帐户,则绘制登录页面,否则绘制访客页面。 与在集中式 DC 或遍布全球的云中处理 cookie 相比,在我们的 ADN 上处理 cookie 可以显著提高性能。 如图 4 所示,可以直观地看到这一点。

adn4
图 4

解决方案 3: 将 Web 应用程序的前端(例如产品目录)本身移至边缘,即实体店

许多商业供应商,例如梅西百货、家得宝、塔吉特都有实体店,消费者可以在实体店内浏览在线产品目录,查看商品位置以及获取交易/优惠券。 为了改善用户体验,他们可以选择仅将其网络应用程序的前端移动到店内计算。 其应用程序的所有剩余组件(即数据库)可以保留在后端数据中心,因为它的访问频率不会像前端产品目录那样高。 如图 5 所示,可以直观地看到这一点。

adn5
图 5

任何解决方案都需要考虑的关键架构原则

这个问题本质上是一个跨多个异构云的分布式计算问题。 DevOps 团队可以自行选择路线,将来自不同供应商(例如公共云提供商、CDN 提供商或边缘提供商)的零碎解决方案拼凑在一起,或者从分布式云服务平台提供商处购买打包解决方案。 图 6 重点展示了这些挑战。

adn6
图 6

以下是 DevOps 团队在评估任何解决方案时应该考虑的关键架构原则。

  1. 跨多个云的一致应用运行时环境: DevOps 团队的应用将分布在他们的后端云中,这可能是私有数据中心或公共云以及他们的边缘位置和物理商店位置,所有这些都可能是完全不同的应用运行时环境。 DevOps 团队应该认真考虑利用 Kubernetes 的解决方案,在所有这些分布式云中提供一致的应用运行时环境。 Kubernetes 使云同质化,使得在云之间移动应用程序变得更容易。
  2. 地理邻近流量路由: 由于应用的前端可以部署在云端、边缘和实体店边缘等不同位置,因此每个解决方案都应确保将用户的流量转移到部署前端服务的最近位置。 并且,任何考虑的解决方案都不应要求 DevOps 团队改变互联网路由策略。
  3. 全局负载均衡: 任何考虑的解决方案都应提供全局负载均衡,因为后端服务可能位于全球多个位置。
  4. 跨多个云的统一应用和网络安全策略: 虽然应用组件的位置可能因地区而异,但任何考虑的解决方案都应提供在部署前端服务的任何云中应用统一的应用和网络安全策略的能力。
  5. 跨多个云平台、跨应用和网络连接的单一玻璃可观察性: 在分布式云环境中,解决跨多个云的应用和连接问题极其困难。 任何考虑的解决方案都应提供跨多个云的连接、安全性和应用部署的单一玻璃可观察性。

Volterra 解决方案取得的成果

测试设置

接下来描述的测试设置用于展示上一节中描述的每个 Volterra 解决方案所提供的性能改进: 

  • 所使用的网络应用程序是Online Boutique ,这是来自 Google 的云原生微服务演示应用。 该 Web 应用由 11 个微服务组成,如图 7 所示
adn7
图 7
  • 使用pagetest.org 测量Web App 性能
  • 在 Web 页面测试中,用于确定 Web 应用性能的指标是“文档完成度”
  • 该企业是一家欧洲电子商务公司,数据中心位于巴黎
  • 用户(或客户)始终位于旧金山。

测试场景和结果

测试了以下四种场景,并描述了每种场景的性能改进。

基线情景: 首先,我以旧金山的用户为基准来评估 Web 应用程序的性能,并且 Web 应用程序完全在巴黎数据中心运行,如图 8 所示。 基线场景下 Web 应用的性能测量为 3.5 秒。

adn8
图 8

解决方案1测试场景: 在解决方案 1 的测试中,用户仍在旧金山,Web 应用程序仍在巴黎数据中心运行,但是,SSL 会话在圣何塞的 Volterra ADN 上运行的 VoltMesh 反向代理上终止。 该场景如图 9 所示。

adn9
图 9

VoltMesh 自动在圣何塞 PoP 中运行的反向代理和在巴黎数据中心运行的网络应用程序之间创建持久 SSL 会话。 Web 应用程序的性能提高到2.9 秒,提升了约 18%

解决方案2测试场景: 在方案二的测试中,前端和货币微服务部署在圣何塞的ADN上。 其余的微服务和数据库仍在巴黎数据中心运行。 该场景如图 10 所示。

adn10
图 10

仅移动前端和货币微服务背后的理由是,只有这些微服务才会在用户的随意浏览活动中涉及。 Web 应用程序的性能提高到2 秒,比解决方案 1 的结果提高了31%

解决方案3测试场景: 在解决方案 3 的测试中,前端和货币微服务被部署到实体店边缘的商品英特尔 NUC(4 个虚拟核心)上。

adn11
图 11

仅移动前端和货币微服务背后的理由是,只有这些微服务才会涉及用户在实体店边缘的随意浏览活动。 Web 应用程序的性能提高到0.8 秒,比解决方案 2 的结果提高了60%

总结结果和经济价值

图 12 显示了测试结果摘要及其产生的经济价值。 可以通过将以秒为单位的改进与每秒的改进对组织的价值进行推算来确定经济价值。 例如,亚马逊认为每提高 1 秒就会产生 16 亿美元的经济价值;因此,解决方案 3 比基线提供了 43 亿美元的经济价值。

 

adn12
图 12

从这些结果可以看出,DevOps 团队可以使用本博客中提出的三个选项在不重写应用的情况下实现显著的性能改进,同时为其应用保持相同级别的安全保护。 要了解更多可以通过分布式云平台解决的真实客户用例,或者有真实的客户用例与我分享,请随时通过LinkedInTwitter与我联系。