我们的可扩展多区域SaaS部署解决方案

从一个实例到全球网络:分销、推广和部署到SaaS

我们的可扩展多区域SaaS部署解决方案

吃我们自己的狗粮就像许多其他生产DevOps工程团队一样,我们的JFrog团队每天多次在AWS、Azure和GCP上部署新版本,横跨20多个云区域。这个过程过去花费了我们很多时间,如果与其他团队一起进行维护,甚至可能会失败。

作为我们在2021年持续改进云计算的一部分,我们决定改变我们在自己的SaaS环境中处理云部署的单实例设置,这意味着向最终用户部署任何类型的软件版本。我们希望将我们的软件从一个主站点分布到大范围的区域,这将需要大量的自动化,并使用完整的、经过测试的、可扩展的基础设施。

我们决定“吃自己的狗粮”,并将单实例JFrog Artifactory升级为多实例JFrog平台还设置了分布边。

我们的用例

在过去,我们在生产环境中使用一个JFrog Artifactory实例作为我们的私有Docker和Helm注册表,享受了许多好处。它允许我们存储、共享和部署我们的二进制工件,从一个单一的真相来源到任何JFrog云区域。

针对多个生产区域的单点故障针对多个生产区域的单点故障

这种单实例方法的最大优点是简单。但是,它是不可扩展的。对于需求较低的环境,单实例设置可能是最有效的选择,并且配置相对简单,但是当它使用相同的配置同时为静态和动态内容提供服务时,需求就会增加,效率就会降低。此外,使用一个实例也会带来潜在的风险,因为它可能会导致一个故障或故障导致整个系统停止工作的情况。

此外,在过去,软件习惯于以版本的形式发布,这些版本相隔几周或几个月发布。每当发布新版本时,操作团队必须手动更新软件。现在一切都变了。

解决方案

JFrog平台使我们的软件发布从开发人员代码一直到产品的无缝和安全流程成为可能。

我们的位型是多重云并与HA冗余网络架构.这意味着不存在单点故障,只要Artifactory Edge节点中至少有一个处于运行状态,我们的内部系统就可以继续运行。这最大限度地提高了我们的正常运行时间,达到“五个九”的可用性。

JFrog云目前处理数百万的下载从我们的云Artifactory Edges到我们的生产运行时集群。没有任何东西是从互联网或其他JFrog服务器交付的。

用于多个生产区域的多实例方法用于多个生产区域的多实例方法

我们的日常工作流程:Dev2Cloud生产流程

对于如何在内部向云生产交付新版本,我们实施了严格的前向控制。这里有两个例子:

  1. 只有RnD交付组通过相关产品CI作业部署和升级版本到边缘和云staging。
  2. 只有生产交付组通过CI作业将版本提升或降级到云生产。推广一个没有部署到边缘的版本,从设计上讲是失败的。

1.软件分发- RnD交付组

今天,我们所有的交付团队都知道如何使用可信的、不可变的发布包将他们的发布推广到Artifactory Edges中。这包括我们自己内部的官方JFrog平台发布和图表依赖,以及外部第三方依赖。

从发布包到下载中心的发布工作流

你知道吗?
托管在JFrog Artifactory Edge节点中的包是发布包的一部分,发布包是一个安全的、不可变的软件包集合。
了解更多>

2.软件交付——生产交付组

JFrog分布使我们能够大规模加速部署和并发下载,并支持高并发下载和经过验证的消费。

我们开发了一个内部部署服务(参见上面解决方案部分图表中的JFrog内部客户端),它负责端到端云供应、部署和维护。它从DevCenter获取包含Helm图表和码头工人的图片(本质上是部署我们的工作负载)。

阅读更多并开始使用Artifactory作为您的码头工人注册表对于你们来说舵图资料库

无限扩展-网络加速和弹性

在庞大的基础设施、用户或下载高峰期间快速发布软件更新,需要DNS解决方案。我们的团队在确保可扩展的HA解决方案方面投入了大量资金,以提高网络利用率和大规模的弹性。在探索了我们的DNS解决方案的几个不同选项之后,我们决定使用AWS R53作为我们的延迟路由策略(我们的DNS解决方案)。

对于我们的用例,我们为不同地区的客户提供了一系列软件发布包(Docker映像和Helm Charts),可以通过单个端点(延迟路由策略)从可用的Artifactory Cloud Edges之一下载。

基于延迟的记录是最好的选择,因为它通过应用相关的健康检查,允许将流量路由到具有最佳延迟和更少往返时间的边缘。不可知地使用AWS R53,允许我们获得使用ALIAS记录的优势,这减少了最终答案解析的时间,因为权威服务器遍历DNS层次结构并更快地检索最终答案。
基于延迟的记录

结果

在生产环境中运行了近一年之后,我们可以看到云部署的巨大改进。利用JFrog平台,我们能够提高部署速度、治理和网络利用率,在大规模、不可知的基础设施上发布更新到任何云服务器。

快速开始使用JFrog平台
创建一个免费的JFrog学院从今天开始记帐学习吧!

关闭

我们使用多实例方法的经验是非常积极的,因此,如果您愿意进行一些额外的初始配置,我们建议从一开始就使用多实例。

特别感谢为分布式云解决方案的设计和实现做出贡献的每个人。特别感谢Eran Nissan, Eldad Assis, Matan Katz, Asaf Federman, Ronny Niv。以及AWS的一些人。另外,感谢我们的CTO、云生产和DevOps团队的其他成员对JFrog分布式*云功能、流程和设计决策的支持和帮助!

请继续关注我们团队的更多有趣更新,因为我们将继续为JFrog Cloud创建更多的高级功能。