如何使用CDN改进软件分发
当涉及到通过网络分发软件时,每一毫秒都可能很重要。换句话说,您在几分之一秒内交付应用程序或其他软件工件的能力对于实现您的软件交付目标至关重要。

不幸的是,当您在Internet上移动软件时,亚秒级软件分发并不总是可行的。在某些情况下,承载应用程序的数据中心离最终用户太远,无法保证近乎即时的软件交付。
这就是内容交付网络(cdn)的用武之地。CDN提供了一个分布式的服务器网络,可以用来优化软件的分发。尽管这不是cdn的唯一用例(通常用于加速从网站下载的内容),但对于需要通过Internet尽可能快地分发软件的组织来说,这是一种有用的技术。
继续阅读cdn如何工作以及它们在软件发行中扮演的角色的概述。
长距离软件分发的挑战
cdn可以解决的软件分发挑战很简单:从地理意义上讲,用户离托管软件的服务器越远,用户下载该软件所需的时间就越长。
这主要是由于较长的地理距离通常需要数据通过更多的“跳数”或网络段。每一跳都可以减少延迟和带宽这意味着用户需要更长的时间才能收到他们下载的软件。跳数过多还可能导致丢包,需要重传数据,也会导致传输延迟。当您在一个大的地理区域内移动软件时,数据传输完全失败的可能性也更高,因为您的传输依赖的网络基础设施越多,一个网络段出现故障的风险就越大。
与长距离发送数据相关的延迟最多只有几秒钟。有时,它们只是几分之一秒。可以肯定的是,这些延迟并不是对所有的软件发行用例都至关重要。
然而,在某些情况下,即使只是几分之一秒的延迟也会导致问题。例如,假设您无意中将容器化应用程序的错误版本发布到生产环境中,并且需要部署更新的容器来修复它。如果它是一个每秒接收数千个请求的应用程序,那么即使是下载容器映像的短暂延迟也可能对您的用户产生重大的负面影响。
另一个例子是,您可能需要按需部署无服务器功能,以适应特定类型的应用程序请求。如果函数还没有上传到无服务器计算环境,并且需要一些时间才能上传到那里,那么在等待函数通过网络移动时,应用程序可能会挂起。
长距离下载软件工件时可能出现的第三个挑战示例是远程工作并且需要经常下载源代码、应用程序映像或工件的软件开发人员。虽然为单个下载等待几秒钟可能不是什么大问题,但是如果开发人员每天下载数百个工件并且需要等待每个工件,则开发人员的整体生产力可能会受到影响。例如,如果他们每次想签出代码或提取容器映像时不必等待数据传输,那么他们将无法获得相同的开发体验或效率。
cdn如何改进软件分发
cdn通过允许您在地理上分散在全球各地的服务器网络上缓存软件工件(如容器映像或无服务器功能)的副本来解决上述问题。
换句话说,使用CDN,您可以在世界各地的许多服务器上存储要分发的软件副本。然后,当一个团队需要下载软件时,他们可以从离他们最近的服务器上下载软件,从而加快数据传输速度。
cdn用于软件分发的第二个好处是它们可以提高可靠性。当您将所有工件存储在单个服务器或单个数据中心中时,如果服务器或数据中心脱机,或者由于其网络基础设施问题而无法访问,您的软件分发通道将中断。但是使用CDN,你在不同的位置有多个服务器托管你的软件。如果一台服务器不可用,用户可以简单地从CDN中的另一台服务器提取软件。
使用cdn更快、更自信地分发软件
虽然你可能认为cdn是提高网站性能的一种方式,而不是改进软件交付和分发的工具,但cdn也可以做到后者。
虽然建立自己的CDN并为软件分发优化它是一项复杂的任务,但像JFrog分布可以很容易地利用cdn进行软件分发。JFrog Distribution自动利用cdn和其他优化技术来加速您定义的网络上的软件分发。