我叫约夫·兰德曼。我是JFrog的首席技术官和联合创始人。软件世界正在以越来越快的速度发展。交付新软件版本的预期时间每天都在缩短,我们必须每天都应对这些挑战,全天候地更新全球数以万计的客户和部署。为了满足这些不断增长的需求,公司需要专注于其核心业务,利用云功能和管理服务来降低操作复杂性和开销。JFrog平台可以让你专注于你的核心业务,同时拥有最好的端到端DevOps平台来管理你的软件创建管道。今天,我们想与您分享我们在创建这个平台时面临的一些主要挑战,以及我们如何解决这些挑战,以创造独特的多云价值。我们可以概括地讲一下在创建JFrog平台时所面临的六个挑战。
第一个是规模的挑战,要在世界各地的多个地区经营成千上万的客户。现在我们支持大约20个地区。下一个挑战是应用更新的挑战。我们希望能够尽可能快地应用软件版本更新,更重要的是,当需要应用安全补丁时,我们希望几乎立即执行。这让我们开发了一些非常有趣的基础设施以便能够做到这一点,我稍后会讲到。下一个挑战是持续安全的挑战。这一切都是为了确保我们的基础设施和应用程序不受任何安全、漏洞或弱点的影响。除此之外,还有数据保护方面的挑战。我们希望确保您的数据在我们这里得到妥善保管,当然也不会丢失。
然后还有另一个挑战,即不同工作负载类型的挑战。我们的应用程序彼此之间非常不同,它们在数据库、网络、计算等方面施加了不同的需求。这是另一个挑战。最后一个挑战是混合工作负载的挑战。JFrog平台是多云的,它支持SAS和自托管的组合。这就是最后的挑战。
让我从第一个挑战开始,规模的挑战。我们的平台由数十个微服务组成,这些服务通过服务网格相互交流。今天,我们正在使用流量,这也是我们在on-prem版本中使用的。我们希望能够根据需要动态地扩大和缩小这些服务。这导致我们在2017年初从我们用来运行云的遗留基础设施迁移到Kubernetes。
一旦升级到Kubernetes,我们所做的第一件事就是摆脱Windows提供的默认自动缩放,因为我们发现在那里实现的规则不能满足我们想要放大和缩小触发的需求。所以,今天,我们在所有云上使用我们自己的客户自动缩放。我们必须处理的另一个挑战是如何分散负载以实现最佳的资源利用。例如,DB连接。我们不想在接纳新客户时让他们透支。所以我们有完全自动化的基础设施来处理这些问题。
其次,我们有客户想要拥有自己的私人环境,他们想要完全隔离的基础设施。所以我们使用相同的自动化,相同的模板来提供。所以我们的系统,我们的管理系统也必须照顾到这一点。
我们必须面对的另一个挑战是需要支持分布式拓扑或跨区域部署。我们经常会发现,客户拥有多站点开发环境,他们需要在它们之间或分布到边缘节点之间的某种持续时间。因此,这要求我们的自动化支持多种拓扑。另一件非常常见的事情是需要根据每个客户、基于地区等进行定制。所以我们有了一个层次结构框架,它允许我们在层次结构中设置特征标志。所以尽管每一层都继承了它上面的一层。所以我们有全球和区域,然后我们有特定的订阅层,最后是特定的客户。例如,这些特性是唯一的C名称或每个客户的证书,地理IP限制,但实际上,平台中的几乎每个特性都是可定制的,你可以在每一层中覆盖它。
这是非常灵活的。最后,我们几乎立即发现,一旦移动到这个规模,手动更改永远不会发生。因此,任何人工更改当然都是经过审计的,它不可能发生,但任何不是自动化的更改都将被自动化清除。我们今天也在研究一些工具,让我们能够以完全自动化的方式发现这些漂移。
让我们来谈谈更新。JFrog中的更新完全是端到端的自动化过程。刚开始的时候,我们四处寻找现成的工具。所以我们研究了ALGO和FLUX,它们当时还很年轻。我们必须设计我们自己的系统来和JFrog里的其他系统合作。这是一个我们内部称之为自动驾驶仪的系统。这个系统所做的是运行一个完全渐进的更新,并在输出进展时监视它,我们支持这种监视的可插拔指标。
当升级进行时,我们知道如何根据这个输出停止或继续升级。我们早期想要的另一件事是能够进行零日安全更新,以及一些风险非常低的更新,并几乎立即应用到系统中。早些时候,我谈到了需要几乎立即应用零日补丁,这使我们改进了部署基础设施,并将部署时间与以前相比缩短了近95%。这很好。我们面临的另一个挑战是平台的开发应用了完全的dogfooding,这意味着我们正在使用云中的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和SREs团队的伟大工作的结果,再加上这些自动化工具,可以让这种云过渡轻松、自动地发生,这是JFrog DevOps和SRE出色工作的结果。目标只有一个,让你专注于真正重要的事情,专注于你的核心业务来创建伟大的软件。谢谢,我希望你们在接下来的会议中玩得愉快。