大家好,我叫Marija Kuester,是西门子公司的IT服务经理,今天我和我的同事们想给你们介绍一下我们把JFrog Artifactory作为我们公司的IT服务来运行的动机和挑战。因此,三年前,我们遇到了以下情况:有很多开发团队使用不同的开发平台,使用各种分散的解决方案来托管他们的二进制文件。我们有团队在TFS平台上托管二进制文件,这原则上不是为二进制文件托管而设计的,我们有团队在明确的情况下托管他们的二进制文件。一些团队使用不同的共享来放置他们的二进制文件。
一些团队在本地机器上托管二进制文件,而一些团队找到了一些构建影子ITs的开放解决方案。所有这些解决方案都必须满足一些重要的公司需求,比如如何保持二进制文件的安全性,如何与其他项目共享二进制文件,如何满足法律要求,如何降低管理成本,或者如何使所有内容更高效,对开发人员更可用。因此,我们公司必须建立一个统一的中央托管二进制托管平台,满足来自开发人员的所有功能和性能要求,并满足来自管理和降低管理成本的所有安全和法律要求。今天,我们在西门子内部为我们公司的开发团队提供Artifactory全球服务。我们有一个专门的团队管理遍布全球的所有Artifactory资产,支持开发团队将Artifactory集成到他们的开发管道中,照顾所有安全和法律方面的问题,以正确的方式管理二进制文件,并与JFrog保持永久联系,获得他们的支持。这是我们的服务号码。我们在全球三大洲的15个地点设有活动集群。
我们在后台托管了43台服务器,有一个团队负责整个服务设置,我们有一个供应商:JFrog。我们为250多个软件项目提供支持,为大约6000名开发人员提供服务。我们的系统每月在全球有1.5亿次访问。那么,将Artifactory设置为IT服务有哪些优势呢?我们将Artifactory设置为公司的一个二进制文件中心。我们利用Artifactory建立了西门子作为内部资源中心。我们对我们公司使用的第三方二进制文件有很好的概述。扫描它们的安全和许可证漏洞,我们减少了影子ITs,因为我们有一个中央服务被许多项目使用,我们覆盖了二进制主机的所有法律要求,我们覆盖了二进制主机的所有安全要求,我们使用集中式解决方案降低了成本。这些都是我们将Jfrog产品定位为IT服务的优势。hth华体会最新官方网站我的同事,我们的创新人员Andreas Mirring和我们的服务架构师Imre Pe m,将更多地讨论我们在公司中运行Artifactory作为IT服务所面临的挑战,以及我们已经或即将实施的解决方案,以保持我们的服务可用性、性能、可预测性和安全性。
谢谢大家,现在轮到你们了。在介绍完我们的服务以及它的外观之后,我想给你一些关于如何设置自己的服务器以及可以使用哪些支持技术的提示。为此,我首先想谈谈应用程序和服务体验之间的区别。应用程序体验是你们都知道的,这基本上是为使用而创建的应用程序,对用户有好处。这是JFrog提供的。然而,这并不是你所拥有的全部体验。您也有一些主题,如您的系统集成对第三方产品的可用性,成本或培训研究提供给您的用户。hth华体会最新官方网站这就是你的任务,让它变得伟大。再谈谈应用和服务经验之间的比例。这可能取决于你自己的产品,应用体验的份额可能会更大或更小。 For example, if you consider a system which has just a small scale with a few teams, it’s a single instance.
而且您没有任何法律要求,只需开箱即用即可使用该系统。这或多或少是应用体验。但是如果你处在这样一种情况下我们在全球范围内都有一个庞大的系统。你有很多法律,比如出口管制,或者FDA批准,还有一个与第三方工具集成的工作流,比如你自己公司的源代码存储库。你的应用有多好可能并不重要,重要的是你的服务有多好。例如,考虑一下我们的服务,它在全球范围内有很多实例,并且有几十个视图或业务单位在使用它。我们如何设置我们的服务非常重要,这对你来说可能也是一样的。最好的服务可能会超过伟大的应用程序。记住这一点。为了支持你,给你一些提示,我现在想基于一些利益相关者分析一些支持工具和工作流程。 For this, I want to pick the developer and the project manager. Let’s first look at the developer. So a typical developer has quite a few injection points with your service which you might not often think about like build failures or downtimes, on and off boarding, so that you can use your system, some bugs that he might experience during the usage, customizations and interfaces that you have to other company assets, and the supporting and training that you offer. I want to take a look in depth at the failures and downtime. So a typical scenario would be that a user has a broken build in the archive artifacts step of a CI/CD engine and he will ask himself: “Is Artifactory not really working? How do I find this out?” and in the end, if you’re a service provider, it means that you’re guilty until proven innocent.
所以,如果有什么东西不好用,人们总是会认为是你的错。所以,收集指标和数据来提供一个清晰的画面,一切是否正常运行,一切是否正常工作。你必须证明这一点。这是你的责任。另外,定义术语“运行系统”。所以只是机器上的脉冲信号吗?这对你的客户来说够了吗?主页上是HTTP 200吗,你们有小样本文件可以上传下载吗?所以你说现在这个系统开始运作了?或者我们可能有一个定义好的服务水平协议,其中您有一个用例,并且说,我们必须上传这个工件,我们有一些复制和访问速率变化,因为它是客户证明的。 Now, let’s quickly discuss a possible setup how you could measure these results. Typically, you should check this quite regularly I would propose at least once per minute because you always want to know the current status and you don’t want old information. You could for example, run a job in Jenkins, which uses a normal Artifactory user and which locks into all systems. In this case, we have three and you should connect as similar as the user as possible. For example, use JCI and you should also paralyze this for speed because you want to check off you can then for example, perform an update than download of a small file, compare the checksums before and after, and maybe change some properties on the system so that you interact a bit with the API’s.
然后测量所有这些结果,并将它们与定义的良好状态进行比较。例如,如果结果良好,你可以说系统总是健康的。如果连续三次失败,它就会变得不健康。如果你这样做,你仍然会很快发现任何问题,你可以忽略假阳性,如网络侥幸的例子。还要确保您不仅有这些结果,而且还可以向客户展示一个易于理解的概述,比如每个人都可以访问的登录页面,每个服务器都有一个显示绿色或红色的红绿灯。同时也锁定结果进行长期分析,因为你想显示你的正常运行时间,例如,根据系统。另一个涉众将是团队领导或项目经理。所以他们也可能与服务有很多交互。例如,他们经常想知道我们的项目所消耗的资源,因为他们必须为此付费。他们有一个新项目,他们想要快速启动和运行。 They have to maintain the project, for example, check permissions or add new users. And they might be an innovation driver, because they want their project to succeed. And all these want to know if you provide new features.
在本例中,让我们讨论项目的创建和维护。因此,如果您想提供服务,就需要客户提供额外的信息。
所以你可以进行适当的服务交付,比如谁是存储库的所有者,谁将为它支付费用,在发生黑客攻击等问题时应该联系谁,谁被允许授予对项目资源的访问权限,我们是否有任何特殊的法律要求,我们必须涵盖可能是Xcode出口控制,可能是FDA批准,有很多。2022世界杯阿根廷预选赛赛程你必须与我们的客户合作才能获得这些信息,你自己不能提供这些信息。但如果你有这些信息,它可能是未来自动化和更容易的交互的基线。让我们讨论一种可能的设置,例如,如何实现自动项目创建和维护,因此一个好方法是为用户创建一个小的UI,用户可以在其中登录和进入并请求新项目,这样就不需要任何手动交互。在这种情况下,您应该收集所有的信息,您需要的所有信息总是有点依赖于您自己的设置,您应该将它们存储在一个单独的DB中。不要仅仅将它放入Artifactory中,因为您需要全局地使用它,而不仅仅是一个实例。如果你有了这些信息,你可以通过剩下的API自动创建所有的实例,所有的存储库,你可以自动添加复制。例如,你可以在你公司的Active Directory中创建一个Active Directory组,将组所有权移交给请求它的用户,这样他现在就可以维护所有的用户。它不是在你的中央服务器上维护的。在创建repo之后,还应该将它们添加到常规监视工作中,因为最终用户需要的只是存储库的使用模式或创建的成本等信息,或者想要向用户报告这些信息的公共匿名权等安全问题。
所以你也应该把它们加在这里。是的,在简短地介绍了10种可能的服务设置之后,我想现在交给Imre。你好,每个人。欢迎来到swampamp。我的名字是Imre Pem,正如Marija介绍的,我是西门子Artifactory服务的服务架构师。在接下来的五分钟里,我想向你们介绍一些我们经历过的成长的烦恼,以及我们想出的一些解决办法。在屏幕上你可以再次看到这张地图,我将展示我们服务器的另一种表示,这只是服务器的图片,以说明我们曾经遇到的问题。基本上,一些服务器几分钟或几十秒都没有响应,但奇怪的是,在我们的监控系统中,根本没有任何迹象表明可能是什么问题。所以很明显,我们的监控解决方案——像CPU等标准的东西,存储和其他类似的东西——是不够的。因此,我想向您展示我们安装了哪些其他监控解决方案来规避这个问题。
这里我们看到HTTP线程,访问线程,后台工作线程DB连接,JVM堆。这些都是建立在Java虚拟机上的数据。我们用JMS客户端阅读这些,这是针对我们的案例的——你看这里,但还有其他很棒的客户端可供你使用。正如你所看到的,我们现在可以监控它,我们可以设置警报。我们还有这个健康检查,这基本上是一个标准脚本,上传一些文件,下载一些文件,执行标准任务,并测量其时间。因此,这种监控对于我们这种规模的服务来说是非常重要的,因为没有它,我们就无法像你看到的那样工作,我们之前遇到过零星的问题,顺便说一下,JFrog花了几周的时间才发现Tomcat中启用的HTTP线程池正在运行。
在其他情况下,他们很好地使用了这些数据,在我们的一个集群中,有一段时间没有响应。有了这个HTTP线程数据,我们能够发现其中一个节点得到了所有真正的请求。正如您所看到的,对其他一些节点也有大量的请求,但它们是基于事件的复制威胁,由于负载平衡方案基于最低线程数,因此这是一个问题,当然,我们只是进行了负载平衡并解决了这个问题。但是这些体验是随着公司的发展而来的,有JFrog的支持是很棒的,而且如果没有这些基于Java和虚拟机的监控,我们就无法运行。这是我们必须克服的问题。我希望你们能从中得到一些启发我想给你们看一些其他的东西。
我们有这些服务器,它们像所有服务器一样一直生成日志。在许多应用程序中,这并不是什么大问题。对于其他许多人来说,他们可能每年只查看一些日志,或者只是将它们存档以进行可追溯性。但对我们来说,挖木头是我们的日常生活。我给你们举个例子。例如,一个用户对我们说,“嘿,我的文件没有复制到远程位置,这是怎么回事?”然后我们要查看日志,看看他是否真的上传了文件,也许只是他又犯了文件名错误。也许复制出现了错误而失败了。也许它还在运行,所以我们真的需要挖掘所有的日志和用户中心日志分析解决方案。再说一次,这没什么大不了的。 It’s not reinventing the wheel, but it’s something we couldn’t live without. And maybe your solutions will be interesting to you. We use Elastic Search, I know that there are great tools out there as well, like Splunk, like Sumo logic, but really, it enables us to function.
例如,我查看了最近15分钟的访问日志。让我们看看发生了什么。你可以看到我们同时看到所有的服务器。我们可以看到所有的动作当然我们可以跟踪所有的领域,我只是给你们看这个因为我可能不想给你们看一些机密数据。但是你可以过滤这些东西,你可以搜索这些东西,这真的让我们能够快速地挖掘日志。但它也带来了一些伟大的见解。例如,我们有一个仪表板,在这些日志的基础上,我们看到有趣的数据,也许是为了管理,但也是为了看到大局。比如四个系统总共有多少请求。
你可以看到周末没有工作日那么忙。您还可以看到服务器之间的负载分布和一些较大的数字。很高兴能看到大局。或者,我们有另一个工具另一个仪表板,我们可以跟踪服务器上每周的请求数量。这是一个很好的工具,可以查看我们系统的负载是否有很大的变化,比如某个服务器的负载越来越多,例如,出现在很多地方,比如屏幕服务器。在这种情况下,您可能会查看硬件,它是否足够?或者你需要增加一些东西。对我们来说另一个很大的好处是可以防止错误。我们在这里报告前五种错误,它真的可以帮助我们主动发现系统中的大问题。同样,如果没有这些解决方案,我们无法在这种规模上运作。 I hope it was useful for you. If you have any questions, feel free to contact me during the session or maybe later. I think my contacts are up there so thank you for watching and have a great time at SwampUp.