简单和快速:专注于你的核心业务

Yoav乡下人
首席技术官&创始人之一
JFrog标志

JFrog首席技术官兼联合创始人Yoav Landman阐述了如何不断增长的速度和开发优秀软件的复杂性驱使JFrog创建端到端DevOps平台。该平台解决了规模、安全和数据保护方面的挑战。它支持多样化和超工作负载,允许您通过利用云和托管服务来降低操作复杂性,从而专注于您的核心业务。

跨混合/多云环境采用最佳实践

视频记录

我叫约夫·兰德曼。我是JFrog的首席技术官和联合创始人。软件世界正以越来越快的速度发展。交付新软件版本的预期时间每天都在缩短,我们必须每天都应对这些挑战,全天候更新全球成千上万的客户和部署。为了满足这些不断增长的需求,公司需要专注于他们的核心业务,利用云计算能力和管理服务,以减少这种操作的复杂性和开销。JFrog平台允许你专注于你的核心业务,同时拥有最好的端到端DevOps平台来管理你在云中的软件创建管道。今天,我们想与大家分享我们在创建这个平台时所面临的一些关键挑战,以及我们如何解决这些挑战,以创造独特的多云价值。我们可以大致谈谈我们在创建JFrog平台时所面临的六个挑战。

第一个是规模的挑战,要在世界各地的多个地区经营数千个客户。现在我们支持大约20个地区。下一个挑战是应用更新的挑战。我们希望能够尽可能快地应用软件版本更新,更重要的是,当需要应用安全补丁时,我们希望几乎立即执行。这促使我们开发了一些非常有趣的基础设施,以便能够做到这一点,我稍后会讲到。下一个挑战是持续安全的挑战。这一切都是为了确保我们的基础设施和应用程序不存在任何安全、漏洞或弱点。除此之外,还有数据保护方面的挑战。我们希望确保您的数据在我们这里得到妥善保管,当然永远不会丢失。

还有另一个挑战,即不同工作负载类型的挑战。我们的应用程序彼此之间非常不同,它们在数据库、网络、计算等方面提出了不同的需求。这是另一个挑战。最后一个挑战是混合工作负载的挑战。JFrog平台是多云的,它支持SAS和自托管的组合。这是最后一个挑战。

让我从第一个挑战开始,规模的挑战。我们的平台由几十个微服务组成,这些服务通过一个服务网格相互交流。今天,我们使用流量,这也是我们在on-prem版本中使用的。我们希望能够根据需要动态地扩大或缩小这些服务。这导致我们在2017年初从我们用来运行云的遗留基础设施迁移到Kubernetes。

升级到Kubernetes后,我们做的第一件事就是取消Windows提供的默认自动缩放功能,因为我们发现,在Windows中实现的规则并不能满足我们想要如何放大或缩小触发的需求。所以,今天,我们在所有云上使用我们自己的客户自动伸缩。我们必须处理的另一个挑战是如何分配负载以实现最佳的资源利用。例如,DB连接。我们不想在引进新客户的时候让它们达到最大值。所以我们有全自动的基础设施来处理这些。

其次,我们的客户想要有自己的私人环境,他们想要有一个完全独立的基础设施。所以我们使用相同的自动化,相同的模板来提供这些。所以我们的系统,我们的管理系统也必须迎合这一点。

我们必须面对的另一个挑战是需要支持分布式拓扑,或跨区域部署。我们经常会发现拥有多站点开发环境的客户,他们需要在它们之间有某种持续时间,或者分布到边缘节点。因此,这要求我们的自动化支持多种拓扑。另一件非常常见的事情是,需要根据每个客户、基于地区等进行定制。所以我们有了一个层级框架,它允许我们在层级中设置特征标志。虽然每一层都继承自上一层。所以我们有全球和地区,然后我们有特定的订阅层,最后是特定的客户。对于这些特性的一些例子来说,是每个客户的唯一C名称或证书,地理IP限制,但实际上几乎平台中的每个特性都是可定制的,您可以在每一层中覆盖它。

这是非常灵活的。最后,我们几乎立刻发现,一旦移动到这个规模,手动的改变是永远不可能发生的。因此,任何手动更改当然都是经过审核的,它不会发生,但任何非自动化的更改都将被自动化消除。我们今天也在寻找工具,让我们能够以完全自动化的方式发现这些漂移。

让我们谈谈更新。JFrog的更新完全是端到端的自动化过程。当我们开始的时候,我们四处寻找现成的工具。所以我们研究了ALGO和FLUX,它们当时还很年轻。我们必须设计我们自己的系统来与我们在JFrog中的其他自己的系统协作。这是一个我们内部称之为自动驾驶的系统。这个系统所做的是,它运行一个完全渐进的更新,并随着输出的推进进行监控,我们支持这种监控的可插拔指标。

当升级进行时,我们知道如何根据这个输出停止或继续升级。另一件我们很早就想要的事情是能够进行零日安全更新和一些风险非常低的更新,并几乎立即应用到系统中。早些时候,我谈到需要几乎立即应用零日补丁,这导致我们改进了部署基础设施,并将部署时间与以前相比减少了近95%。这很好。我们面临的另一个挑战是平台的开发应用了完全的狗食,这意味着我们正在使用云中的JFrog平台来创建云中的JFrog平台,当然还有自我培养的产品,如果你愿意的话,这承担着破坏我们自己编译器的风险。hth华体会最新官方网站为此,我们必须开发一套工具和检查点,以确保每个云更新都是防弹的。

我想讲的下一个挑战是持续安全。我们所有的产品都hth华体会最新官方网站是通过JFrog x射线扫描。这是我之前提到的狗食的另一个方面。一个很好的例子是shell漏洞淹没世界的日志,我们立即发现我们的服务没有受到持续扫描的影响。我们应用的另一种类型的连续扫描是在我们的基础设施上。我们扫描我们的terrform模板。我们大量使用terrform。我们还监控对系统的访问。我们使用列表特权访问控制策略,我们同时执行和监视这些策略。最后,系统的事件和日志被输入到事件响应基础设施中,任何可疑活动都会触发事件响应系统中的自动工作流。 We take special care of the privacy of your data and all of your data is being stored, encrypted at REST, both in the database and in the object storage.

说到数据,我想谈谈数据保护。我提到了数据库和对象存储。这些是你全部资产的主要位置。我们没有使用任何文件系统或类似的东西来实现长期持久性。这也为我们带来了一些特性,例如,我们可以使用云管理服务来进行容灾。因此,对于数据库,我们使用跨区域复制,在故障转移的情况下,这些复制可以提升为主数据库;对于对象存储,我们使用跨区域复制,这是由云提供商提供的。除此之外,我们还通过进行时间点备份来处理数据的共用。因此,如果客户偶然造成任何数据丢失,旧数据都可以恢复。它将在备份中。另一个方面是,由于我们只使用数据库和数据库中的对象存储,所以我们使用时间点恢复检查点实现时间点备份。

在桶中,我们对不同的云供应商进行了一些区分。在这种情况下,并不是每个人的支持都是一样的。因此,我们可以使用桶版本控制或软删除来实现某种时间点备份。最后还可以实现客户多站点跨区域的活动内容联合。这不是DevOps平台的一部分。它是平台产品的一部分。hth华体会最新官方网站这是平台产品的一个功能。目前我们支持对工件存储库和安全对象的二进制文件的联合,将来我们将向联合支持中添加更多的对象。我想谈论的下一个挑战是支持不同工作负载的需求。所以我们的产品hth华体会最新官方网站彼此之间差别很大。 We have artifact management and security scanning and distribution to edge nodes and CI CD, and IoT updates.

所有这些产品在CPU、IO、hth华体会最新官方网站内存、网络等方面都显示出不同的需求,并引入了非常不同的工作负载需求。这意味着我们需要为这个产品使用不同的节点池。当不得不在不同的节点池之间划分大量集群时,我们需要考虑两个主要问题。第一个是我们刚刚谈到的应用程序类型或产品之间的区别。hth华体会最新官方网站另一个几乎是这个的子类别,它是订阅类型的区别。我们的一些应用程序受到大量数据和网络的限制。例如,Artifactory,而其他的则严重依赖于CPU,例如x射线扫描仪或JFrOg管道。所以我们需要为它们使用不同的节点池。我提到格式化不同节点池的另一个原因是订阅类型及其在系统上的预期工作负载之间的差异。例如,与企业客户相比,免费层客户可能会在系统上引入非常不同的工作负载。

然后,我们需要根据这两个标准(产品的差异和订阅的差异)将节点池与活动相匹配。hth华体会最新官方网站因此,我们需要根据这两种不同的标准、不同的产品或应用程序和不同的订阅来匹配节点池类型。hth华体会最新官方网站通过使用o型环升级,我们支持节点池类型之间的无缝迁移,我们在内部使用Kubernetes中的标签选择器来实现这一点。最后,我们必须支持的另一个要求很高的特性是工作负载,它不仅在应用程序之间是不同的,而且是混合的或我们在JFrog中称为两栖的。它在两个方面是混合的;在云和OnPrem之间。首先,我们是多云的,我们部署在所有主要的公共云提供商中,给你选择的自由。因此,AWS、GCP和Azure,以及更多的服务。

然而,这也意味着我们不会把自己锁定在任何一个提供商解决方案上,而是更努力地工作,这可能需要定制开发,以确保我们跨提供商为您提供最优质的服务。但也有一些例外。我一会儿就会谈到这些问题。此外,我们的客户的工作负载跨越了自托管和云信息。例如,您可以在自托管环境中运行CI,然后在云中分发到生产,或者您可以在云中运行大部分软件创建管道,然后分发到自托管边缘节点或边缘节点。在其他的云。这些用例对于客户来说是非常常见的,我们必须支持所有这些场景。这也促使我们投资于快速自动数据迁移的特性,从自托管到云,以及在云之间。

我提到过,有时某些云提供商更本地地支持某些特性。一个很好的例子是私有链接,它在我们的企业客户中非常常见。它还允许您在JFrog和您自己的私有云之间使用安全隧道。另一个例子是支持CD和下载,或者使用对象存储直接下载,这可能更快。在这些情况下,我们可能会优先支持最好地提供该解决方案的供应商,但我们将以最通用的方式公开该特性,以便将来采用其他供应商的支持。解决所有这些挑战使我们能够创建一个真正灵活的端到端软件供应链云平台。它是一个混合的多云平台。所以你有选择的自由。我们知道我们正在存储和管理您最有价值的资产之一,您的软件发布的工作流。

这就是为什么保护和可靠地处理这些资产对我们来说是最重要的,我们需要高度的安全和完整性检查作为云运营的一部分。这一点,再加上一些工具,这些工具可以让你轻松地管理从传统的自托管云到其他云的云转换,当然这是JFrog中出色的DevOps和SREs团队伟大工作的结果,而这些工具加上自动化工具,让云转换轻松自动地发生,这是JFrog中DevOps和SRE伟大工作的结果。我们的目标只有一个,让你专注于真正重要的事情,专注于你的核心业务来创建伟大的软件。谢谢,我希望你们在接下来的会议中享受。

快速释放,否则死亡