大家好,我的名字是Marija Kuester,我是西门子的IT服务经理,今天我和我的同事们想给你们一些关于动机和挑战的概述,我们设置JFrog Artifactory作为我们公司的IT服务。所以,三年前,我们有以下情况:有很多开发团队使用不同的开发平台,使用各种分散的解决方案来托管他们的二进制文件。我们有团队在TFS平台上托管二进制文件,TFS平台原则上不是为二进制文件托管而设计的,我们有团队在明确的情况下托管他们的二进制文件。有些团队使用不同的份额将他们的二进制文件放在那里。
有些团队在本地机器上托管二进制文件,有些团队找到了一些构建影子it的开放解决方案。所有这些解决方案都必须满足一些重要的公司需求,比如如何保持二进制文件的安全性,如何与其他项目共享二进制文件,如何满足法律要求,如何降低管理成本,或者如何使所有内容对开发人员更具性能和可用性。因此,我们公司有必要为二进制文件托管建立一个统一的中央管理平台,以满足开发人员的所有功能和性能需求,满足管理人员的所有安全和法律需求,并降低管理成本。今天,我们在西门子内部提供全球服务,为我们公司的开发团队提供Artifactory。我们有一个专门的团队管理全球范围内的所有Artifactory资产,支持开发团队将Artifactory集成到他们的开发管道中,关注所有安全和法律方面,以便以适当的方式管理二进制文件,并与JFrog保持联系,从他们那里获得支持。这是我们的服务数字。我们在全球三大洲的15个地点有活动集群。
我们在后台托管了43台服务器,有一个团队负责整个服务设置,我们有一个供应商:JFrog。我们支持超过250个软件项目,为大约6000名开发人员提供服务。我们的系统每月在全球有1.5亿次访问。那么,将Artifactory设置为IT服务的优势是什么呢?我们将Artifactory设置为公司中的单个二进制文件中心。我们使用Artifactory将西门子建立为内部资源中心。我们对公司中使用的第三方二进制文件有一个很好的概述。扫描它们的安全和许可证漏洞,我们减少了影子it,因为我们有许多项目使用的一个中央服务,我们涵盖了二进制文件托管的所有法律要求,我们涵盖了二进制文件托管的所有安全要求,我们使用集中式解决方案降低了成本。这些都是我们将Jfrog产品作为IT服务的优势。hth华体会最新官方网站我的同事,我们的创新人员Andreas Mirring和我们的服务架构师Imre Pe,将更多地谈论我们在公司中将Artifactory作为IT服务运行所面临的挑战,以及我们已经实施或即将实施的解决方案,以保持我们的服务可用性、高性能、可预测性和安全性。
谢谢大家,现在轮到你们了。在介绍了我们的服务,以及它的样子之后,我想给你一些提示,告诉你如何设置你自己的服务器,以及你可以使用哪些支持技术。为此,我首先想谈谈应用程序和服务体验之间的区别。应用程序体验是你们都知道的Artifactory这基本上是为使用而创建的应用程序,对用户有好处。它由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.
所以人们总是会认为,如果某件事不起作用,那是你的错。所以收集指标和数据,提供一个清晰的画面,一切是否都在运行,一切都在正常工作。你必须证明这一点。这是你的责任。另外,定义术语“运行系统”。所以这只是机器上的ping信号吗?这对你的顾客来说足够了吗?它是在主页上的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.
然后测量所有这些结果,并将它们与定义的良好状态进行比较。例如,如果结果很好,你可以说系统总是健康的。如果你连续三次失败,它就会变得不健康。如果你这样做,你仍然会很快发现任何问题,你可以忽略误报,如网络侥幸的例子。还要确保你不仅有这些结果,还可以向客户展示一个易于理解的概述,比如每个人都可以访问的登陆页面,每个服务器都有一个显示绿色或红色的红绿灯。还要锁定结果,以便长期分析,因为你想显示你的正常运行时间,例如,根据系统,99.9%。另一个干系人可能是团队领导或项目经理。所以他们可能与服务有很多交互。例如,他们经常想知道我们项目的资源消耗,因为他们必须为此付费。如果有新项目,他们有一个项目启动,他们想要快速启动并运行。 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自动创建所有的实例,所有的存储库,你可以自动添加复制。例如,你可以在你的企业活动目录中创建一个活动目录组,把组的所有权交给请求它的用户,这样他现在就可以维护所有的用户。它不在你的中央服务器上维护。在创建了仓库之后,还应该将它们添加到常规监视作业中,因为最终用户需要的只是存储库的使用模式或创建成本之类的信息,或者需要向用户报告这些信息的公共匿名权限之类的安全问题。
所以你也应该把它们加在这里。是的,在这10种可能的服务设置的简短概述之后,我想把现在交给Imre。你好,每个人。欢迎来到SwampUp。我的名字是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.