软件交付和Rube Goldberg Machine @ Meetup Madness Australia (DevOps, SRE和Kubernetes)

2022年9月19日

< 1

软件交付和鲁宾·戈德堡机器:我们试图解决的问题是什么?

软件交付生命周期可能很复杂。根据您的体系结构和特定的部署环境,您的团队可能会发现自己拼凑了许多不同的工具和框架。每个工具都有自己的历史,旨在解决问题的子集。有时团队会找到创造性的方法来使用超出其原始目的的工具。最终目标是简化流程、保护、交付、监视、反映、更改和重复。这是一个不断改进的循环。本次会议将讨论团队在开发和交付过程中面临的一些常见问题,以及组织如何联合起来解决这些问题。离开时,你会被赋予权力,并呼吁采取行动,成为解决方案的一部分。

演讲者

梅丽莎·麦凯

    梅丽莎·麦凯

    Melissa是一名长期从事开发/软件工程师工作的国际演说家,目前是JFrog开发人员关系团队的开发人员倡导者,致力于用DevOps方法改善开发人员的体验。作为一名软件工程师,她的背景和经验涵盖了企业产品和服务开发和运营中使用的大量语言、技术和工具。hth华体会最新官方网站她是一位母亲,Java拥护者,Docker船长,即将出版的《DevOps Tools for Java Developers》一书的合著者,UNconferences的忠实粉丝,并且总是在寻找成长和学习的方法。她曾在Kubecon, DockerCon, CodeOne, JFokus, Java Dev Day Mexico, Great International Developer Summit上发表演讲,并且是JCrete和JAlba UNconference团队的一员。鉴于她对教学、分享和激励同行的热情,你可能会在会议上与她相遇——无论是在线的还是离线的!

    视频记录

    首先是这个演讲的名字软件交付和Rube Goldberg机器我们的问题是什么
    试图解决这个问题我第一次听到这个短语你真正想解决的是什么时候
    我是一个刚从学校出来的实习生,我是一个全新的大三学生
    一个团队的开发人员,我们有很多奇妙的想法
    如何做事情,如何编写我们想要做的代码以及添加功能等等,但最终我们必须这样做
    总是回答这个问题我们想要解决的问题是什么意思是我们必须保持专注,不能走神
    所有这些切线我们都需要关注实际问题
    先简单介绍一下我和我的背景,最重要的是
    我是一名开发人员,20多年来一直是一名实习生吗
    到首席工程师,在那段时间里,我开始说话
    几年前,我才能够定期参加,你知道,你可以从家人那里得到
    义务或工作义务,但最终这是我想做更多的事情,我是
    在一个叫做unconference的会议上认识了一些了不起的人
    我不知道你们是否都熟悉unconferences是什么
    它们和正式的会议不一样,通常会有
    一小群人会议的议程并不是事先决定的而是在你
    每天都在那里,这取决于你知道谁在那里谁是来过的专家
    大家最感兴趣讨论的话题是什么呢
    在那些会议上有一些关于如何演讲如何公开演讲如何提交的课程
    会议之类的事情,这是我非常兴奋的事情,所以我继续去jfrog,这是我的第三次会议
    作为一名开发者倡导者,我们在jfrog做了很多事情,就是向像你们这样的群体发表很多演讲
    嗯,我还是会写一些代码,比如把演示放在一起
    资源项目之类的东西,但它并没有那么多,嗯,你知道,对我来说,这是过去
    直接参与生产代码,但这些年我学到了
    现在是时候让我来分享和传承我们需要让下一代起来让他们起来
    为了加快我们做事的速度,以及如何成功地做事,我是Java冠军
    嗯,我的主要背景是Java服务器端编码,但很明显,你知道我
    很少遇到除了Java之外不做其他事情的Java开发人员
    你知道有很多python shell脚本,JavaScript等等
    在我的历史中,我非常幸运
    在一家服务公司实习了很长一段时间,这是我的第一次,我的第一次
    专业职位,所以我们我们做任何进来的工作这给了我很多
    你知道,在不同类型的项目中有广泛的经验,我也是一个码头船长,我是付钱的
    关注这个行业现在的动态,尤其是自从
    容器在生产环境中越来越广泛地应用于许多云原生环境
    正在开发的应用程序,我喜欢关注这一点,既关注码头方面,也关注
    你知道开放集装箱倡议,呃,这些都是可以替代的
    Docker以及容器的整个概念对我来说都很有趣
    我的推特账号在这里,我的领英账号在这里,我可以稍后再分享
    如果你想联系或关注,那就太棒了
    好了,关于这次演讲的题目,让我们开始吧,这是其中之一
    在我的简短演讲中,它将更多的是高层次的概念驱动,我希望它能产生一些
    讨论一些日常的问题,我们很多人都有特别是那些涉及和
    整个交付软件的管道这是最重要的事情之一
    这也包括开发者,我喜欢从
    这个观点是我最好的观点所以我们也会听到很多关于这方面的观点
    如果我要做这样的类比,我忍不住要分享一点
    关于鲁宾·戈德堡机器的琐事显然这是一个非常简单的互联网搜索,他们非常
    很流行,但对于不熟悉它的人来说,鲁宾·戈德堡机器是一个非常复杂的机器
    而效率低下的机器通常由大量的运动部件组成
    开始实现一个简单的目标我在使用它们之前就见过它们了在它们变得有趣之前
    我想我在我去过的几个机场见过他们
    看着这些东西和它们是如何工作的,你几乎会被催眠,但有些新东西是我不知道的,鲁比
    戈德堡是普利策奖得主,发明家,创新者,漫画家,还有
    他通过他的漫画和另一个让这些同名的机器流行起来
    这里显示的是餐巾上的自我操作你可以看到所有必要的步骤都被标记了很明显这是a
    这不是一个真正的机器,我不知道Rube Goldberg机器是这样开始的
    另一个有趣的事实是,鲁布·戈德堡是唯一一个
    在韦氏词典中是作为形容词出现的,但这很有趣,所以呢
    如果你想出名,那就像他一样把你的名字写进字典吧
    另一件事是我在做一些关于Rube Goldberg机器的研究时发现
    实际上每年都会举办一场比赛让参与者创作这些作品你可以去rubegoldberg。org找到
    每年都有一个主题,今年的主题是扫盲和创造的挑战
    其中一台机器可以帮你打开一本书,那是
    我觉得今年很聪明,你可以在那个网站上找到前十名的视频,他们非常棒
    真可爱,有很多聪明的孩子在做这个
    所以你当然可以自己做关于鲁布·戈德堡的研究,但我们还是谈谈吧
    关于软件,这就是我们在这里的目的,我在说什么,我在做的类比是什么
    软件交付管道和Rube Goldberg机器,我想详细说明
    再讲一下这个类比鲁布有三个特点
    Goldberg机器,我认为它非常适用于今天的软件交付管道
    第一个是有很多活动的部分我记得当我
    一开始我更多的是在运维方面,实际上我成为了开发团队的一员
    所以有很多新材料需要我去吸收,我只记得当时我非常不知所措
    在整个过程中涉及到多少不同的工具,我有很多东西要学
    第二个是效率低下的鲁宾·戈德堡机器是出了名的
    故意的低效有时候我们的软件交付管道也是如此
    关于目的和第三种倾向
    不可靠和不安全的东西如果你看一些更多的鲁伯
    戈德堡漫画,你会看到一些非常有趣的,你绝对不想把你知道
    让他们变得真实,因为他们非常不安全,有人很容易受伤
    我们的管道我们的软件交付管道有时也不可靠
    同样不安全的是,我们稍后会多讲一点
    我们来看看我想强调的第一个特点
    知道我在这里的意图并不是要做出不尊重或做出一些广泛的判断,所有的软件
    修炼者的行为是一种荒谬或不明智的方式,这不是我所说的,但我认为
    我完全理解软件开发和交付不是
    这是一个很容易解决的问题,特别是如果您刚刚接触今天的环境以及所有这些组件和工具链
    哪些人可能会参与到你的交付流程中,当我参与合著时,这一点对我来说变得非常明显
    这本书是我和几个同事在今年早些时候出版的,名为面向Java开发人员的devops工具
    我和我的合著者我们聚在一起的目的就是把
    为读者提供有效开发和交付软件所需的大量知识和背景
    高效和安全,我在这里列出了很多话题
    在这本书中探讨了devops方法论的基础,源代码控制
    当然容器微服务持续集成非常重要
    保护二进制文件和部署的包管理
    我们也会讨论一些东西这里的材料会给你们一个很好的概念
    毫无疑问,你会对这些主题进行更深入的研究,以培养你的兴趣
    我们确实讨论了一些最常见的开发和交付管道
    行业中使用的工具我们甚至在kubernetes上触及了一点,但是
    这里变得非常清楚的是,整个过程可能是相当压倒性的和显著的
    在云原生环境中更是如此
    我在谷歌上搜索了一下最大的Rube Goldberg机器,结果是这样的
    发生在2021年12月10日,有一个视频发布,这是一个鲁伯
    Goldberg机器有427个台阶这些孩子们做了
    吉尼斯世界纪录,非常不可思议,我就是喜欢这样
    他们最后很兴奋,因为它成功了,我想知道这个从头到尾录制了多少次
    大约4分26秒很明显我不会把整个视频都放出来你们可以去查一下
    你自己,但是最后的部分是很令人兴奋的,他们很高兴能完成这个
    关于这一点,你们很多人可能已经看到了这是CNCF
    云原生计算基础云原生景观图
    我不指望你能看到这里的任何标志,它是巨大的,这里有很多只是
    突出其中一个较小的部分,称为编排和管理,它被细分为其他几个类别
    有20个工具正在进行调度和编排
    协调和服务发现组还有7个远程程序组有10个
    调用部分,服务代理下有21个API网关下有19个,还有一个
    17在服务网格下,我认为这很有趣,我之前做过关于服务网格的演讲
    所以我发现很有趣的是现在有很多工具可以做到这一点
    我不知道你们中有多少人喜欢拼图游戏,这是我最喜欢做的事情之一
    嗯,我想当我退休的时候,我可能会一个接一个地做,它们真的很有趣,我有很多
    嗯,我喜欢重复做,我不太擅长把它们粘在一起,我喜欢做它们,然后拿走
    把它们分开,然后以不同的方式组合在一起,我就是喜欢拼图游戏,所以cncf的景观变成了
    几年前,它的一个早期版本在推特上流传开来
    千块拼图,我觉得很搞笑,我去搜索看看是否有人真的做了一个
    像这样的拼图,我很高兴看到它在Etsy上可以买到,但在卖出42个之后
    现在已经卖完了,嗯,上面有一条评论我觉得很可爱
    总有一天,也许我会得到一个cncf
    景观拼图国外
    因为有很多活动的部分事实上有很多活动的部分
    这本身并不一定是件坏事,真的,只是你
    选择为您的特定用例使用,以及如何使用它们可以离开
    来衡量效率低下,这是我们要讲的第二个特征
    如果你是第一次来这里
    你需要一段时间才能找到自己的位置我们完全有理由相信这需要一个专业的
    整个团队从开发到运营,尽管有些已经
    从头到尾的全面参与通常需要多年的经验才能做到
    让一个人知道所有的事情是很困难的,而这就是其中之一
    我一直遇到的关于devops方法论的最大误解是,a
    一个人应该深入了解管道的所有阶段,意识到这一点很重要,是的,但是
    同时,拥有一个在各自专业领域内一起工作和沟通的团队也会更有效
    就像你知道的,我不会期望可能有人在行动和部署方面的专业知识是我不会期望的
    比如我们的Java代码,然后尝试修复
    里面有虫子,同样的犹豫,我是否会进入你知道的东西
    部署配置,开始搞乱那些
    没有团队间沟通的恋人
    所以你不需要知道所有的东西只要知道不同的部分就行了
    你的软件在做什么,但只要深入到每件事
    留在你的专业领域对你更有利
    最重要的是,你知道你会犯错误,尤其是你知道
    快速部署会有问题,但会成功
    团队会在问题出现时处理好这些问题你会遇到一些流失,重要的是
    不断地学习,评估你的解决方案,再试一次
    我不知道在座有多少人记得打字机,或者曾经用过打字机
    第一,这会让我老一点,但我确实记得用打字机
    孩子,其实是我妈妈,她有一台机械打字机,我还记得纠错带用完了
    这是另一台Rube Goldberg机器,它用钻头来按打字机上的空格键,这个让我想起了
    尤其是软件交付管道
    一个更有趣的现象是,一些软件或工具的使用方式与以前不同
    意想不到的,通常是创作者和设计师意想不到的
    这可能是由很多因素造成的其中一些可能是缺乏
    当评估一个工具的使用或仅仅是对爱人的依恋时,要尽职尽责
    工具和愿望,使它成为一站式的商店,我肯定去过那里
    在我大三的时候,你会学到一些东西,你会适应它,你只想让它适用于所有事情
    另一个是开发管道,这意味着缺乏
    在团队和利益相关者之间就需要采取什么行动以及在哪里采取行动进行计划或达成协议
    导致使用几个不同的工具,这些工具重叠并且是不必要的
    冗余的外部可能是不可用的
    特定的必要功能,或者因为团队不知道从哪里寻找,或者
    由于许可或其他公司限制,不允许使用可用的解决方案
    这些都是常见的原因,但不管怎样,这可能会导致各种各样的问题,其中一个最大的问题是
    粘合代码这可能是维护的噩梦,粘合代码的一个例子
    提供两种不同工具之间的兼容性,这在当时可能是有意义的,但随后会对其中任何一种进行更新
    每边的工具可以打破胶码
    另一种观点是,项目是最初具有特定焦点的工具
    意大利面条式代码难以管理和臃肿,这只是由于试图
    响应社区对其关注范围之外的功能的请求,这可能是一个不同的工具
    总的来说是合适的,那里有很多东西要打开,尤其是当它
    要想有效地满足社区和开源项目的需求,始终是一个挑战
    推迟那些对特定用例完全有意义但对整个项目没有意义的事情
    所以我列出的所有这些事情都可能导致你的管道效率严重低下
    我知道我个人有一个例子那是一个开发团队
    几年前开始工作,这是一个全新的项目
    从建立这个初始项目的第三方那里引入
    我们的想法是,我们想把它引入内部,让一个开发团队维护它,增加一些功能
    问题是我们没有开发一个管道我是你
    我知道我是团队中的一名独立开发者,这是一个非常小的团队,就像我说的一个小项目,所以风险并不高
    但是我发现在过去这个项目是
    手动部署,使用脚本部署,这个脚本是
    位于不同的机器上,甚至在您所知道的生产服务器上
    这样你就可以在不同的地方有不同的版本
    要回滚或部署一个新项目,你永远不知道你做的是否正确,所以很明显这是一件事
    我们首先要做的是协调所有这些,确保我们的
    知道部署和我们的环境和细节都是你知道的
    源代码控制对我来说是一个非常有趣的经历一个真的
    强调了和我这样的Ops沟通的必要性
    我们说这是一个全新的开发团队,所以我们还处于起步阶段
    我还想说的一件事是在开发团队中
    有一种观点认为,也许开发人员不需要如此参与部署
    但我之所以说了解发生了什么很重要
    管道和你的软件是如何部署的,我的意思是,这是你知道的微服务的全部原因之一
    我的意思是,当你了解你的软件是如何部署的时候,你可能会做出完全不同的设计
    这些决定可以一直追溯到项目的开始,您可能会选择编写您的软件
    以这样一种方式,你的应用程序以这样一种方式,它可以被分解并以不同的方式扩展,特别是如果
    它是为云原生环境设计的,所以对开发人员来说很重要
    理解他们也需要理解你知道什么是可变的
    据我所知,像端口这样简单的东西需要有所不同,这取决于是否
    你要部署到一个开发环境一个登台环境或生产环境,所以这些是
    你需要建立这些杠杆这样操作才能做什么
    需要做得很好,我们还有一件事要做,这件事很严重
    对管道来说,这种趋势是不可靠和不安全的
    对不起,这是我经常看到的一张幻灯片
    我们在jfrog的公司平台详细介绍了
    软件开发生命周期,这真的很忙,但我喜欢它,因为它做了很好的突出显示工作
    当你在生态系统中面对所有这些东西时,开发人员会有多大的压力
    很容易迷失在混乱中,但整个过程都是在试图回答我如何构建一切的问题
    测试所有的东西,部署所有的依赖关系,我怎么做
    确保一切安全,我如何包括自动化来帮助提高效率
    减少人为错误,正如预期的那样,有相当多的项目,产品和解决方案hth华体会最新官方网站
    这里处理工件管理和存储分布安全扫描
    这个设置与其他组件和
    你可能已经熟悉并在使用的框架,比如各种build和
    持续集成服务器上的依赖管理器,比如Maven和npm
    CI Jenkins,然后像chef和puppet这样的配置工具,但这是什么
    有一张幻灯片没有讲到部署之后需要做什么这些都是工具
    监控和排除生产问题是另一回事
    开发过程中有时会被忽略的一面,这是其中之一
    最重要的是,即使你已经部署到生产环境中,你还没有完成,总会有改进
    监控,观察你的客户行为
    如果你的应用是你知道SAS之类的你想要观察你的客户是如何使用的
    你的产品,然后所有的反馈都会回到
    在循环的开始,我们重新开始,我们添加功能,修复bug,诸如此类
    即使您已经设法将所有这些部件拼凑在一起
    这里可能有一些点包含我说过的粘合代码
    以前处理不同工具之间的各种集成,这可以
    导致不可靠性的测量,作为一个开发人员,我听过一个可怕的说法
    通常是快乐路径编码或快乐路径编程
    就像快乐路径编码一样你很容易得到快乐路径
    管道中所有的东西都需要在
    一定的方式才能获得成功的最终结果和可靠的管道多
    通常都是通过大量的尝试和错误,就像我想象的鲁布·戈德堡一样
    机器会记得第一个最大的Rube Goldberg机器
    他们花了三个月的时间来建造,还记得他们当时有多兴奋
    我记得我第一次建造管道并顺利完成的时候,我很漂亮
    我也很兴奋,它能在任何地方都能粘合代码
    这张幻灯片上有一条绿色的连接线这是开始寻找弱点并认真对待的地方
    当其中一个连接中断时该怎么做,这是整个的结果
    管道中断,或者你应该采取什么措施来处理不愉快的路径
    实际上,把整个管道组合在一起有很多事情要做,如果我
    如果不解决这个问题,没有提到非常不安全的部分
    这个图表来自salsa。dev它代表供应的首字母缩写
    软件构件的链级,实际上是一个安全框架
    它是一份标准清单,可以帮助您防止管道被破坏
    以确保您的包和基础结构的安全
    尽量在您的源代码和交付之间
    你的产品或你的表面部署有一些地方你需要额外的注意来保护你的供应
    链,你看到的每一个红色三角形都代表一个
    作为一名开发人员,我非常关注构建
    部件,以便持续集成和初始开发构建
    在我的很多演讲中,我关注的是依赖性,尤其是所有的
    代码所依赖的库和其他构件的片段和部分
    当您开始将所有这些东西打包到容器中时,这一点变得更加重要
    需要加强的最关键领域之一是持续集成期间的构建过程
    您必须确保导入的依赖项完全是您所需要的
    期望它们是例如,它们需要是软件的预期版本
    您还必须验证使用的是受信任的依赖项,而不是恶意的依赖项
    包的名字很相似所以要注意所有这些
    重要的是,这张幻灯片直接来自另一张
    事实上,自从,这是来自
    你知道容器和使用负责任地使用Docker容器
    我不会在这里讲太多细节,只是因为使用Docker文件是很常见的
    就依赖关系而言有很多要讨论的这张a的图
    我相信你们已经一次又一次地看到它被过度使用了,但是软件的概念是潜在的
    由大量的组件组成,开发人员可能没有第一手的知识,不能低估这些
    如今构建的应用程序和服务比以往任何时候都更加复杂,开发人员通常不希望这样做
    如果没有必要的话,重新创造轮子。我们在努力提高工作效率和速度
    容器尤其有这个问题,因为我们不仅要包装
    我们已经完成了软件,并把它放在容器中,但是我们经常用容器映像来构建这些容器映像
    有一个父图像或基本图像这些是从哪里来的
    作为开发人员,你应该知道在管道开始的时候你应该知道在哪里
    您的基础和父图像来自,只是为了好玩,让我们走一遍
    Docker文件的例子,我想其中的一些对你来说会更清楚,因为构建是如此重要,让我们来谈谈
    关于如何构建容器映像,这只是一个人为的例子
    在你自己的Docker文件中强调一些需要注意的地方,如果你有的话,第一行就是
    父图像或基图像,它被称为不可信父图像显然它们
    我不打算给它命名,所以不太容易辨认,但是关于它有几点需要注意
    上面没有标签,也没有Shaw标识符,我们也不知道父母在哪里
    图片来自,如果你还记得太阳风
    那是在2019年9月,那是一次非常严重的袭击
    实际上是在二进制转换的时候完成的
    下公司后在CI系统中持续集成系统
    这是特别令人讨厌的,因为二进制是有符号的
    建议可能有一些你们知道的进入持续集成系统本身的途径这是一个
    好主意,你知道,确保你知道在哪里
    你的依赖关系来自于,就像我说的,在这个特殊的例子中,它甚至被签名了,也许这样会更好
    用Shaw确认正确的镜头在2号线到4号线移动我们已经
    有一些额外的问题,没有指定软件包的版本,而不是
    如果你还记得7月份发生的Equifax数据泄露事件的话,那就跟上最新的消息
    2017股。最近的一个是Shell攻击的日志
    你知道Equifax数据泄露只是因为有一个
    脆弱的脆弱的软件包就像第4行一样,但是
    它没有及时更新,不管什么原因
    事情就是这样,最后的结果让他们很尴尬
    壳牌的博客就是一个很好的例子漏洞被发现后很快就有了
    许多公司采取了行动,他们吸取了教训并更新了这些东西
    你知道这对我来说是一个很大的问题,尤其是作为一个Java开发人员,使用log4j是很常见的,所以使用
    这些库它们涉及到所有的东西,即使你不直接使用它幸运的是有一个依赖
    那是被拉进来的,那是在使用它所以这是一个相当大的项目有很多努力,很多
    我们投入了大量资金以确保游戏能够快速更新
    第六行,这可能是效率和性能问题
    我想说的一点是你们知道那条复制线点
    基本上就是复制本地机器上的所有东西然后放到你的上下文中的所有东西
    你已经发送并移动到容器中,嗯,最好使用DOT
    Docker忽略文件,它很像git忽略文件,用它来确保
    你只是在复制你不想复制的东西你不想复制的秘密
    也许你知道你的机器的配置,也许你不想
    把你的git目录拷贝到那边有很多东西
    我不想直接扔进容器里,好吧,第7行,我明白了
    我经常看到你知道curl语句wget语句和Docker
    这些文件指向外部资源,这本身并不是一件坏事,除非你无法控制2022世界杯阿根廷预选赛赛程
    我有一个例子,有一次我看到一个Docker文件,它实际上是
    这是一个合理的理由,它使用的是一个专有产品的安装脚本
    另一家公司使用他们的安装脚本将他们的产品安装到
    这样它就可以在容器中使用了问题是
    知道他们总有一天会改变也许剧本会变成
    完全不同的位置可能会一起被删除也可能会不断更新
    与您当前的设置不兼容
    如果你有这样的东西,最好把这个脚本放在内部,这样你就可以自己管理它了
    如果你把它更新到你的日程表上,而不是别人的日程表上
    9号是根状的
    启动的Shell脚本你知道当你启动容器时它是以root身份运行的确保你
    使用主体租赁特权提供用户和组,这样您就不会以
    当你不需要的时候这些只是一些问题,我有其他关于这个的讨论
    深入了解这些项目的细节,但我遇到了这些漂亮的
    在Docker文件中,这肯定不是一个详尽的列表,但它确实是一个很好的开始
    一定要专注于你的身材
    好的,我认为我们满足了这三个特征,即许多活动部件
    是的,效率低下,是的,倾向于不可靠和不安全,是的
    我们在整个演讲中抱怨了很多,但你可能
    现在想知道这些问题是否有真正的解决方案,有大量的工具可供探索
    这将帮助您了解实际情况,并且至少与CNCF场景一样势不可当
    在分类中列出一些对你有帮助的工具,现在需要进行相当多的研究来审查和
    最困难的部分就是让所有的部分都适合这个行业
    解决基本问题的全面解决方案已经成熟
    不断地交付和更新软件,并在软件发布后进行监控和故障排除
    在生产中,这说起来很简单,但是有很多一次性的工具都是在非常具体的情况下发展起来的
    工程问题就是所有这些都涉及到的问题
    您知道,一个组试图使所有这些部分适合他们特定的用例场景
    我们现在真正需要的是业界就最佳实践达成一致
    各组织正在共同努力解决这些问题其中一个重要的例子是
    jfrog和nginx之间的努力将加强和改进mara
    项目Mara是现代应用程序参考体系结构的缩写
    是在去年nginx的Sprint 2.0上宣布的,它基本上是一个框架
    对于以可靠和可重复的方式部署任何容器化应用程序,它是完全开源的,但是
    我确实发现了一些我们可以改进的方法
    让它对更多的工程团队更有用这只是组织的一个例子
    共同努力生产每个人都可以使用的开源产品并加以推广
    但我也想提一下现在正在进行的持续的努力
    交付基金会和他们
    还有很多其他的项目都是这样的
    基金会正在开始他们的被采用的旅程,他们也在试图解决很多这样的问题
    CD基金会持续交付基金会是cncf的姐妹组织它也有一个景观图
    有了一些相关的工具,它就不会像CNCF那样势不可当了
    主要是因为它对持续交付的关注有限
    特别是现在是一个很好的时机去看看他们在互操作性方面做了些什么
    列出最佳实践有很多组织都参与其中
    围绕这些主题的会议是对公众开放的这只是
    去他们的网站,注册邮件列表,加入slack频道
    并开始参加这些会议,我是互操作性会议的主席,联合主席
    你知道我们最近有我们现在有一个项目清单
    来做演讲了解他们的工作原理是很有趣的他们做了什么
    他们的目的是要解决什么问题,并确保
    它们出现在正确的地方,并且它们与我们都需要使用的许多其他工具可互操作
    我们的管道,一个有趣的项目来自于CD基金会
    嗯,它被称为CD事件,看看它是从
    互操作性特别兴趣小组最初是这样开始的
    从各种工具接收和发出事件的规范
    更好地支持互操作性,而不是紧密集成,后者可能很困难
    要保持对外考虑看一看的是波斯
    这基本上是一个去中心化的包注册表,它提供了一种信任的度量
    得到你认为你得到了你想要得到的包基本上它要求包是
    从源头建立,需要有一个网络共识,也就是法定人数
    受信任的注册中心和节点同意此版本是正确的
    自从它从源头出来就没有被任何方式干扰过
    国外给你留下了一些链接
    当然我们有我给你们看的景观地图这些都是很好的起点还有一个社区页面
    在CD Foundation页面上,jfrog也有一个社区页面,里面有很多不同的
    你知道信息,谈话,研讨会等等,然后
    当然,如果你对马拉项目感兴趣或者有兴趣的话有一个博客
    在nginx网站上发布参考架构
    这就是我要和你分享的
    今天有什么问题吗?我们还有几分钟时间
    嘿,梅丽莎,这真的很有趣说实话,这是我刚刚
    我有个问题,你知道,作为一个
    我要滥用我的权力,在看问题部分之前问问题,所以我
    喜欢青蛙周围的视觉效果你给我们展示了生态系统
    你有不同的阶段,所有的东西都在那个管道里
    管道的各个阶段,你可以说这是最重要的,你必须做的,或者这就是它的方式
    是否有一个重要的让我回到这个问题上来,因为我认为
    我也喜欢这张幻灯片,我在很多地方都用过
    哦,我应该走得太远吗?我走得太远了,我就在旁边
    哦,好了,你可以看到这个
    这一直贯穿于整个开发过程中,你知道怎么做
    依赖性是为开发人员和CI服务器之类的东西解决的显然这里有很多
    还有一些我们已经讨论过的缺失监测和之后需要发生的事情
    生产,但我认为交付管道中最重要的部分是
    从一开始就计划好找出最简单的东西
    让你的团队团结在一起,让你的流水线白化,这意味着每一个步骤都需要考虑在内
    为了让每个人都明白为什么,发生了什么,然后当你
    选择你将要使用的工具,要非常清楚并理解原因
    比如你需要这个工具为你做什么,为什么你选择了它——意味着你
    这一点非常重要,我看到有很多文档解释了如何做
    事情和如何实现一些东西,但他们忘记了你为什么要这么做
    这样下去,下一个加入团队的人就会想要改变它
    下一个加入团队的人想要再次改变你知道,然后你可能会陷入
    这种情况下你只是在几个不同的工具之间来回切换来解释为什么,并真正缩小范围
    确保每个人都明白这很好,有I吗
    我的意思是,我马上就会看问题部分,就在这个问题之后,但是有没有
    从这整个工具链中你会推荐给那些想要提高自己的人的特定工具
    知道管道或者你知道做得好做得更好是的,我喜欢这个问题,因为它
    比如问我学什么语言最好(笑),我肯定有一些个人问题
    关于我喜欢用什么东西的意见,但是我想说的是每一个
    工具有自己的优点和缺点,这取决于你的情况,例如你是否使用
    使用开源工具还是使用现成的工具完全取决于组织的规则
    这可能取决于你是否知道你需要在防火墙后面
    不管你是否能上网不管你是否在为
    政府或私人机构会有所作为,不管你是否有资金和资源来维持2022世界杯阿根廷预选赛赛程
    没有任何支持合同的工具
    所以这不仅仅是工具本身的问题而是你知道谁会使用
    管理这个工具谁来保持它的更新诸如此类的事情都是需要考虑的,也是最重要的
    重要的是要理解每个工具当你做研究和评估一个工具时确保你
    了解它从何而来,他们试图解决什么问题,这样你就可以避免重蹈覆辙
    做一些不该做的事你知道哦,太棒了
    我喜欢这个答案,因为这正是我使用的,当人们问我是否应该使用kubernetes时,我就会回去
    第一原则:问问你自己,你在努力做什么
    如果你不介意的话,我想问几个问题,可能留两三个,巴黎是一个区块链网络
    阿姆里塔的问题
    只是为了记录上传到系统的内容
    所以我认为这是一个很好的用途,它利用了你知道的记录
    很好,很好,我希望有答案,如果它不能让我们知道,还有一些问题在聊天中
    让大家把问题加到问题栏里,但我会逐个提问
    所以问题是CD事件和供应商之间的互操作性会对这些问题产生影响吗
    当然,当然,即使现在我也知道一些项目
    让他们自己的CD事件兼容,这样你就知道他们没有落后
    一个例子是,如果它是相当新的,它实际上是你知道的,尝试
    成为CD基金会的一部分,它被称为J释放器,这是他们所做的一步
    与CD事件兼容的特殊工具如果我们看到越来越多这样的工具
    我们将会有更多的公司参与并支持这个项目
    所以我们可能会开始看到一些现成的产品一些商业产品开始支持hth华体会最新官方网站
    这个也是,朝着那个方向发展这样做对每个人都有好处如果你看很多
    从事特别工作的人
    在CD基金会下运作的利益集团你会看到很多
    各种各样的公司都参与其中,人们参加并分享他们的经验
    你知道,给予他们的意见是非常重要的,非常棒
    这是Amrita bandui的后续研究这是从足蒂开始的
    问题是,记录什么语言绑定及其对jfrog数据库的依赖关系之前也有
    你能详细说明一下它是如何在jfrog内部使用的吗?我不知道
    也许这个问题是有道理的嗯,我是说平台
    它本身是用Java编写的,但它支持
    除了为您做的事情之外,它还意味着管理您的所有包和所有内容
    你在代码库中使用的二进制文件可以是我们支持的任何东西
    很多不同的语言,比如《30》和《数数》之类的
    甚至是rust和Docker容器现在在npm Maven Gradle中
    当然,我们会支持所有Java的东西,python, JavaScript, Ruby
    这些东西,我希望我回答了你的问题但是就管理包和
    jfrog平台所做的事情,我认为问题在于
    所有这些数据都在G4数据库中,比如代码依赖关系等等
    从。有一个内部数据库
    例如,当你把包上传到不同的存储库时
    它存储这些包的方式是取那个Shaw,然后说这个Shaw
    属于这个存储库,如果你移动东西或复制东西到其他存储库,它会使用Shaw和
    使用那个数据库是为了防止你知道有相同东西的多个副本所以数据库本身会
    帮你管理这个我真的不知道是哪个数据库
    我知道这是你可以自己设置的你可以选择吗
    数据库我知道postgres是支持的,但我知道其他人都支持
    好吧,如果你选择用一些不同的酷的东西
    嗯,好吧,另一个来自Amrita vandu的问题,忙着问区块链是如何用来记录青蛙在哪里做的
    你在jfrog里面看到一个用例,我想它已经死了,波斯是一个开源的
    项目,它由jfrog支持,但它不是jfrog平台的一部分
    嗯,它意味着像开源项目,能够从源代码构建
    有一些与可信注册中心的协议,比如Maven
    Central和Docker Hub来处理一些你无法得到的情况
    就像你所能做的一样,从源头精确地构建
    在其他项目中,比如go,但区块链本身只是被使用
    为了验证,嗯,有历史记录系统中有什么,什么是
    我希望这能回答你的问题
    如果没有,你有问这些问题的细节,你知道我们有资料
    接下来,特别是在kubecon,接下来我们会有
    嗯,你知道更多关于波斯的信息,这是我们的一个项目,你知道对我们来说很重要
    我们会有关于这方面的研讨会,还有虎园之类的
    我们以前做过这样的事情,所以要关注波斯,我想是波斯。io
    是的,不,很聪明,跟着梅丽莎,嗯,是的,你得谢谢你
    梅丽莎,你能不能把你的领英网址贴在聊天区,这样人们
    我可以把你也加进去如果你们还有什么问题要问梅丽莎请随时联系我
    我们不会留梅丽莎太久,因为我相信我就是她,她
    她住在科罗拉多州丹佛市,所以她需要睡一觉,伙计们,梅丽莎会发帖吗
    她已经发布了她的推特账号如果你也想发布你的领英账号,梅丽莎,这样人们
    我可以把你们加进去如果你们还有什么问题要问Melissa请不要犹豫
    联系她,如果他们有活动,你可以给她几毫秒的时间
    如果你想在LinkedIn或其他网站上发布更多信息
    你的社交媒体账号在聊天区,这样人们就可以联系到你,但是谢谢你
    梅丽莎,谢谢你,阿里,谢谢你谢谢大家好了,我有好了,这是最后一个
    我想我们还是继续吧
    问题,阿姆鲁塔的问题,实际上这不是一个问题
    它更常见,但是,请继续,不,它只是,它可以被整合,我认为它
    更多的是感谢,是的,更多的是感谢,但是,不,这很好,我认为我们可以
    把它包在这里,梅丽莎真的非常感谢你,抱歉我不知道你在军队,我知道
    你当时在丹佛,但我正准备继续提问有趣的对话