我叫约阿夫·兰德曼。我是JFrog的首席技术官和联合创始人。软件世界正在以越来越快的速度发展。交付新软件版本的预期时间每天都在缩短,我们必须每天应对这些挑战,在全球范围内全天候更新成千上万的客户和部署。为了满足这些不断增长的需求,公司需要专注于他们的核心业务,并利用云功能和管理服务来降低这种操作的复杂性和开销。JFrog平台允许您专注于您的核心业务,同时拥有最好的端到端DevOps平台来管理云中的软件创建管道。今天,我们想与您分享我们在创建这个平台时面临的一些关键挑战,以及我们如何解决这些挑战以创造独特的多云价值。在创建JFrog平台的过程中,我们可以大致谈谈我们所面临的六个挑战。
第一个是规模的挑战,在世界各地的多个地区运营着数千名客户。今天我们支持大约20个地区。下一个挑战是应用更新的挑战。我们希望能够尽快应用软件版本更新,更重要的是,当需要应用安全补丁时,我们希望几乎立即做到这一点。这促使我们开发了一些非常有趣的基础设施,以便能够做到这一点,我稍后会讲到。下一个挑战是持续安全的挑战。这一切都是为了确保我们的基础设施和应用程序不受任何安全、漏洞或弱点的影响。除此之外,还有数据保护方面的挑战。我们希望确保您的数据在我们这里是安全的,当然也不会丢失。
然后还有另一个挑战,即不同工作负载类型的挑战。我们的应用程序彼此非常不同,它们在数据库、网络、计算等方面施加了不同的需求。这是另一个挑战。最后一个挑战是混合工作负载的挑战。JFrog平台既是多云的,也支持SAS和自托管的组合。这是最后的挑战。
让我从第一个挑战开始,规模的挑战。我们的平台由数十个微服务组成,这些服务通过服务网格相互通信。今天,我们正在使用流量,这也是我们在on-prem版本中使用的。我们希望能够根据需要动态地伸缩这些服务。这导致我们在2017年初从用于运行云的传统基础设施迁移到Kubernetes。
升级到Kubernetes后,我们要做的第一件事就是摆脱Windows提供的默认自动缩放,因为我们发现Windows所实现的规则不能满足我们的需求,无法触发我们想要的伸缩方式。所以,今天,我们在所有云上使用我们自己的客户自动扩展。我们必须处理的另一个挑战是如何分散负载以获得最佳的资源利用。例如,数据库连接。我们不想在新客户上飞机的时候把它们用爆。所以我们有完全自动化的基础设施来处理。
其次,我们的客户希望拥有自己的私人环境,他们希望拥有一个完全隔离的基础设施。所以我们使用相同的自动化,相同的模板来提供。所以我们的系统,我们的管理系统也必须迎合这一点。
我们必须面对的另一个挑战是需要支持分布式拓扑或跨区域部署。我们经常会发现客户拥有多站点开发环境,他们需要一些时间间隔,或者分布到边缘节点,例如。因此,这要求我们的自动化支持多种拓扑结构。另一件很常见的事情是,需要根据每个客户、每个地区等进行定制。因此,我们有了一个分层框架,它允许我们在分层中设置特征标志。所以尽管每一层都继承了它上面的一层。所以我们有全球的,有地区的,然后我们有特定的订阅层,最后是特定的客户。例如,这些功能是每个客户唯一的C名称或证书,地理IP限制,但实际上,平台中的几乎每个功能都是可定制的,您可以在每个这些层中重写它。
这是非常灵活的。最后,我们几乎立刻发现,一旦移动到这个规模,手动更改是永远不会发生的。因此,任何手工更改当然都是经过审核的,它不可能发生,但是任何不是自动化的更改都将被自动化清除。我们今天也在寻找工具,让我们以全自动的方式发现这些漂移。
让我们来谈谈更新。JFrog的更新是完全端到端自动化的过程。当我们开始时,我们四处寻找现成的工具。我们研究了ALGO和FLUX它们当时还很年轻。我们必须装备我们的自制系统来和JFrog的其他自制系统合作。这个系统我们内部称之为自动驾驶。这个系统所做的是运行一个完全渐进的更新,并在它前进的过程中监控输出,我们支持可插拔的监控指标。
当升级进行时,我们知道如何根据此输出停止或继续升级。我们很早就想要做的另一件事是能够进行零日安全更新,以及一些风险非常低的更新,并几乎立即将它们应用到系统中。早些时候,我谈到了几乎立即应用零日补丁的必要性,这使我们改进了部署基础设施,并将部署时间比以前减少了近95%。这很好。我们面临的另一个挑战是,平台的开发应用了完全的狗食,这意味着我们正在使用云中的JFrog平台来创建云中的JFrog平台,当然,还有自我培养的产品,如果你愿意的话,这有可能会破坏我们自己的编译器。hth华体会最新官方网站为此,我们必须开发一套工具和检查点,确保每个云更新都是无懈可击的。
我想说的下一个挑战是持续的安全。我们所有的产品都hth华体会最新官方网站经过JFrog x射线扫描。这是我之前提到的狗食的另一个方面。一个很好的例子就是shell漏洞的日志,我们立即发现我们的服务没有受到影响,因为这种持续的扫描。我们应用的另一种连续扫描是在我们的基础设施上。我们扫描Terraform模板。我们大量使用Terraform。我们还监控对系统的访问。我们使用列表特权访问控制策略,并对其实施和监控。最后,系统的事件和日志被输入到事件响应基础设施中,任何可疑活动都会触发事件响应系统中的自动化工作流。 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.
所有这些产品都表现出不同的需hth华体会最新官方网站求,在CPU、IO、内存、网络等方面引入了非常不同的工作负载需求。这意味着我们需要为这个产品使用不同的节点池。当必须在不同的节点池之间分割大量集群时,我们需要担心两个主要问题。第一个是我们刚刚谈到的应用类型或产品之间的区别。hth华体会最新官方网站另一个几乎是这个的子类别,订阅类型之间的差异。我们的一些应用程序严重依赖于数据和网络。例如Artifactory,而其他的则严重依赖CPU,例如x射线扫描仪,或者JFrOg管道。所以我们需要为它们使用不同的节点池。我提到格式化不同节点池的另一个原因是订阅类型和它们在系统上的预期工作负载之间的差异。例如,与企业客户相比,免费层客户可能会在系统上引入非常不同的工作负载。
然后我们需要根据这两个标准——产品的差异和订阅的差异——来匹配节点池和活动。hth华体会最新官方网站所以我们需要匹配节点池类型,根据这两个不同的标准,不同的产品或应用程序和不同的订阅。hth华体会最新官方网站我们通过使用O-Ring升级来支持节点池类型之间的无缝迁移,我们在Kubernetes内部使用标签选择器来实现这一点。最后,我们必须支持的另一个高需求特性是工作负载,它不仅在应用程序之间是不同的,而且是混合的,或者我们在JFrog中称之为两栖的。它在两个方面是混合的;在云和OnPrem之间。首先,我们是多云的,我们部署在所有主要的公共云提供商上,让您可以自由选择。所以AWS, GCP和Azure,以及更多的未来。
然而,这也意味着我们不会将自己锁定在任何一个提供商解决方案上,而是更加努力地工作,这可能需要定制开发,以确保我们为您提供跨提供商的最佳质量服务。但也有一些例外。我一会儿就会讲到它们。此外,我们的客户拥有跨越自托管和云信息的工作负载。例如,您可以在自托管环境中运行CI,然后将其分发到云中的生产环境,或者您可以在云中运行大多数软件创建管道,然后将其分发到自托管的边缘节点或边缘节点。在其他云层中。这些用例对于客户来说是非常常见的,我们必须支持所有这些场景。这也导致我们投资于快速自动化数据迁移的特性,从自托管到云,以及云之间。
我提到过,有时某些云提供商会更本地地支持某些特性。私有链接就是一个很好的例子,它在我们的企业客户中非常普遍。它允许您在JFrog和您自己的私有云之间使用安全通道。另一个例子是支持CD和下载,或者使用对象存储直接下载,这可能更快。在这些情况下,我们可能会优先支持最好地提供此解决方案的供应商,但我们将以最通用的方式公开该特性,以允许其他供应商采用未来的支持。解决所有这些挑战使我们能够创建一个真正灵活的端到端软件供应链云平台。它是一个混合的多云平台。所以你有选择的自由。我们知道我们正在存储和管理您最有价值的资产之一的工作流,您的软件发布。
这就是为什么保护和可靠地处理这些资产是我们的首要任务,我们需要高度的安全性和完整性检查作为我们云操作的一部分。这一点,再加上让你可以轻松地管理从传统的自托管云或其他云的云过渡的工具,当然是JFrog的DevOps和SRE团队出色工作的结果,这些工具再加上自动化工具,使云过渡轻松、自动地发生,是JFrog的DevOps和SRE出色工作的结果。目标之一是,让你专注于真正重要的事情,专注于你的核心业务,创造伟大的软件。谢谢大家,希望大家在接下来的会议中玩得愉快。