管理混乱——分散世界中的软件交付

软件交付管道变得越来越复杂。出现了新的部署格式和系统。遗留下来的问题仍然存在,而且会无限期地存在下去。边缘计算、区块链、机器学习——都带来了新的挑战和机遇。让我们看看如何适应这些变化,并在整个交付链中提供真正的透明度和可度量性。

视频记录

大家好,欢迎来到swampUP首先,让我们把管理方面的东西从我们的桌子上拿开,这是一段录音,这意味着我可以在会话聊天中回答你们的问题,当我说话的时候,你们可以把问题发给我,我真的很期待你们的问题。现在,我们可以开始讨论去中心化世界中的软件交付。但首先,让我问你一个简单的问题家里有DevOps吗?家里有开发运维人员吗?不,说真的,你们中有人的工作头衔中有DevOps吗?如果你是DevOps工程师、DevOps经理或DevOps架构师,请在会话聊天中添加“+”。现在,如果你认为DevOps作为一种职业在2020年仍然是一种反模式,请在会话聊天中发送一个“-”。

看看会发生什么会很有趣,对吧?现在,我们中的一些人,也许是我们中的许多人,仍然认为这是一种反模式,但这与我们的想法无关,因为当我们认为行业正在愉快地向前推进DevOps的号角时,实际上有一种新的运动正在进行。在座有谁听说过DevDevOps?这是开发者和DevOps共同承担责任的模式,现在我们有了一个新的竖井,我们有DevOps,我们需要能够与他们合作,所以,根据Twitter的说法,这是一个在过去四五年里越来越受欢迎的新趋势。但这很有趣,但怀疑者永远不会满意,他们说这种Devs和Ops的二元模型不够包容,它没有描绘出全貌,所以他们开始在秘密实验室里培育各种怪物突变带来各种东西,培育DevTestOps和GitOps, Git和Ops之间的合作,有人吗?DevSecOps, BizDevOps, ProdOps,还有另外一个,我最近才听说,是BizDevDesSecOps。这就是我们解决问题的方式,对吧?所以,我们的软件交付是不正常的,我们不能按时按预算交付我们的最终用户不满意,我们如何解决所有这些问题?对吧?我们发明一个新词,以Ops结尾我们所有的问题都解决了。
但是,当我们提醒自己我们在这里要做什么时,所有这些工作实际上都消失了。我们所要做的就是让IT交付尽可能地无痛、无压力、高效,不是吗?对吧?这就把我们带回了常青原则,心流,合作,还有系统思考。现在,如果我们说系统思考,我们必须提醒自己什么是系统。根据已故的Russell Ackoff博士一个系统就是一个整体,由部分组成这给了系统一个有趣的性质系统的行为依赖于它的部分的行为,但更多。系统的每个部分的行为也依赖于该系统的其他部分的行为,这意味着系统的各个部分是相互依赖的。并且,这种相互依赖,最终将系统的行为定义为一个整体,这意味着组件越多,系统拥有的部件越多,就越难以甚至不可能理解或预测系统的行为。
现在,还有一个有趣的特征。你看,一个系统的任何一部分都不能做一个系统作为一个整体所能做的事情,这很容易证明,正如罗素·阿科夫博士曾经说过的,你们中的一些人会编码,对吧?如果你是那些还在写代码的人,在会话聊天中发送一个“C”,现在你作为一个系统作为一个人,你是一个可以编码的系统,但你的手能从系统代码中分离出来吗?你们有些人会说,不是我的手,是我的大脑在编码。大脑,大脑是一台宏伟的机器,我们几乎不了解它的工作原理的5%它能独立于你的身体系统编写代码吗?不,它不能。
这很容易证明,把你的大脑从你的头骨里拿出来,把它放在笔记本电脑前,让它写一些简单的东西,用Python写“HELLO WORLD”。它不可能。但这里有一个悖论——有些人显然没有使用大脑就成功地编写了代码,只是通过肌肉记忆去堆栈溢出,复制粘贴,它工作了。在我的职业生涯中,我自己写过几百次这样的代码。同样的道理,我也从Russell Ackoff博士那里抄了这个例子我衷心推荐你们去听听他的。去看看他的书,他在YouTube上的演讲他对系统思考的解释比我好得多现在,一个系统拥有的组件越多,预测它的行为就越复杂因为即使是最微小的变化,系统初始条件中看不出来的变化,都可能导致完全分散,最终的结果截然不同。
这种对系统初始条件的依赖是由这个人首先发现并描述的,他就是埃德·洛伦兹当时他试图分析和预测天气演变模式所以他发现了这一点,并对其进行了描述,这后来被称为蝴蝶效应,你知道,俗话说,巴西的蝴蝶扇动翅膀会引起上海的龙卷风"或者与今天更相关,在亚洲某个动物市场,一只不健康的蝙蝠可能会引发一场我们不知道如何摆脱的全球金融危机,随着时间的推移,蝴蝶效应已经发展成为世界科学思维的一个全新方向,现在被称为混沌理论,被认为是上个世纪三大主要科学范式转变之一,另外两个是相对论和量子物理学。
现在,研究混沌理论的人有时称他们自己为混沌学家,而这次演讲的原因实际上是,当我与大型信息系统和大型国际IT组织一起工作时,在某种程度上,我意识到我就是这样。一个混沌学家,这是“我不知道我到底在这里做什么”的一种奇特的说法。对吧?我们,混沌学家,研究的系统被称为非线性动态系统,或者还有一个我更喜欢的名字,复杂适应系统。这里的适应性是指系统作为一个整体及其组成部分它们适应,改变它们适应系统内外发生的事件或一系列事件通过自组织协作的方式。
对吧?所以自组织是这些系统的另一个重要特性。现在,这种自组织协作是通过这些系统非常强的去中心化来实现的因为在中心化的系统中,自组织协作是不可能真正发生的,它不可能像需要的那样具有适应性最后,适应性,自组织,去中心化,所有这些都赋予了系统一个特性这对我们这些大型信息系统的建造者来说应该是非常有趣的,那就是这些系统是无标度的,这意味着它们的秩序和可变性的水平秩序和人类是一样的,不管我们在什么尺度上观察它们,所以它们可以按比例上下调整并保持在相同的混乱水平上。我为什么要讲这些呢?为什么我要谈论系统和混乱,去中心化?这是因为这些模式,这些属性在我们所建立的系统中无处不在在我们所处的系统中,在我们所处的社会系统中实际上,所有这些都可以被视为一个大的社会技术系统,对吧?公司和社会所处的系统以及我们正在建立的技术系统。
让我们看看这些模式,当然,我们将从微服务开始。顺便说一下,如果你想知道这些蜜蜂是哪种蜜蜂,你可以把你的答案发送到聊天工具,我会告诉你这些蜜蜂是否是你认为的那种蜜蜂。但让我们来谈谈微服务,为了让我们的系统更敏捷,更容易部署,更容易扩展,我们开始减少,对吧?这是一个简化的方法,我们减少了足迹,我们减少了每个服务的代码量,我们减少了每个服务分配的资源量,我们使用了每个服务的停留时间,什么总是上升的?2022世界杯阿根廷预选赛赛程当然是相互作用的复杂性。所以,当我有一个全新的过剩一个全新的生态系统的工具和过程,我们必须采用,以使这些互动更简单,我们会讨论这个之后。
但是微服务已经过时了,不是吗?我们现在有了一种新的模式,它被认为是解决微服务带来的操作复杂性的灵丹妙药,我们有无服务器,对吧?我们不需要更多的服务器,我们不需要更多的操作系统,我们只需要原始的,干净的,可执行的代码,一切都是事件驱动的,没有事件,没有什么被触发,对于没有人触发的功能一定很难过,但它甚至不可能难过——它不存在。什么变得复杂了?交互,与函数的交互,我们如何调试它们?我们需要能够回放所有的事件来理解为什么函数会这样或那样,不同的函数是如何相互作用的?谁在哪里有权限?我们如何跟踪经过所有不同功能的事务?所有这些仍然有很多未解之谜。但是微服务和无服务器都是我们这些技术潮人们称之为什么的一部分? Right, cloud native. Now, the cloud with all of its grandiosity has one, inhered weakness.
你看,我们习惯于认为云是分布式的,但事实是,与流行的观点相反,云提供商的服务器并不驻留在云中。他们坐在哪里?在数据中心,云计算本质上是数据集中的。为了使用云计算,我们需要能够将大量数据传输到云中,然后再传输回来,这就限制了它的可扩展性,这就产生了我们现在所说的边缘计算,或者有另一个名字,雾计算。你看,如果云是那些大块的水,蒸汽,冰,沙——不管云是由什么构成的,雾就是那些分散在我们周围空气中的小水滴,这些是将运行互联网的设备,根据最保守的预测在未来5到10年,我们将有数十亿的设备连接到互联网,每滴的水能够自行处理数据或更有趣的,与其他设备自组织协作,与其他的水滴是一个崭新的世界,一个新的信息系统一个新的生态系统,我们需要考虑,我们需要考虑如何交付,如何构建这些系统,最后,一个人不能谈论分布,de-centralization没有提及区块链,我敢肯定你们中的很多人都盼望着这一天。所以,不管怀疑论者会说什么,不管你会说什么,你会说区块链是一个分布式的、实现得很差的分布式数据库,你可能会说区块链今天没有现实生活中的用例,甚至把淘金热放在一边,区块链提供了一个承诺。
一个全球范围内完全分布式信任的承诺,我们可以信任的不是一个可能被破坏的中央实体,而是一种智能技术,这就是为什么,世界上越来越多的人开发这些分布式应用程序,这就是为什么像IBM这样的大公司,他们的项目标志,超级账本,你可以在屏幕上看到开发这些系统,并为未来的使用建立它们,我们可能还没有看到。对吧?和怀疑论者可能会说,“没有现实生活用例区块链”以同样的方式,他们说这对电约150年前没有现实生活的用例电和在某种程度上,他们是对18世纪的现实是如此不同于今天的现实生活中,我们的系统建设和那些我们越来越多的分布式的一部分,分散、混乱的问题——如何管理混乱?就像我们之前说的,复杂的自适应系统的行为依赖于其组成部分之间的相互作用,对吧?这使我们得出两个结论,首先,我们不能通过简化其部分来简化和管理这样一个系统。我们在微服务上尝试过,但并不奏效。简化系统的唯一方法就是简化各部分之间的相互作用这正是产生协议系统的原因我马上就会讲到在我们互动的时候,我们的互动有时非常丰富,这是件好事我们的语言是一个复杂的,适应性强的,紧急的系统但为了管理这些互动,我们需要建立协议,对吧?使交互易于管理、易于理解和更简单的符号和过程子集。
这就是为什么,为了构建那些混乱、复杂的系统,我们需要一个新的协议家族,我把它们统称为分布式系统集成协议,下面就是我所说的。首先是开放度量,我们越来越多地构建越来越多的软件组件,我们与越来越多的第三方组件集成,有时甚至比我们自己构建的组件更关心第三方组件的性能,这需要一个单一的,可理解的,通用的协议,如果我们谈论系统性能,这就是开放度量项目所关心的,由Prometheus, InfluxDB,Google和SolarWinds已经有两年了,他们有GitHub存储库如果系统性能在你感兴趣的领域,去看看这个,这是一个非常重要的倡议。
接下来,当我们有很多组件相互通信,一个事务可以扩展很多组件时,我们需要能够跟踪事务,以了解是否有任何东西卡在那里,是否有任何东西从该事务发出,确切地说,我们需要能够进行分布式跟踪,开放跟踪是关于创建一个协议,用于跨各种软件组件的分布式跟踪。
同样重要的是,Jagger和Zipkin以及其他不同的追踪和观察工具都在使用它。然后,Open Policy Agent,一旦我们允许系统进行交互,我们就需要能够定义有关这些交互的策略。哪些互动是可以的?哪个不太好?谁可以和谁说话?谁可以对谁说什么?这就是开放策略代理允许我们做的开发一种单一语言来谈论系统策略我们之前在无服务器的背景下谈论事件驱动但它不仅仅是无服务器,在任何分布式分散系统中,如果你想允许大规模集成,大规模协作,我们需要能够允许一些通信是异步的,这就需要事件驱动的协作模式,这需要通用的事件发送和接收基础设施,如果我们谈论的是高级的话,这需要一种通用的语言,这样我们就知道我们可以期待哪些事件以及如何处理它们,这就是云事件项目所致力于的。
然后,我们的软件交付管道变得越来越复杂,因为我们要交付的世界是混乱和复杂的,而JFrog和Google大约两年前发起的一个名为Grafeas的项目正是这样做的,它提供了一个统一的元数据API和协议,用于讨论软件工件和我们应用于它们的更改。去检查一下,把它集成到你的系统中最后,当我们的每个组件都一直在与其他组件交谈,它们都相互作用,它们都需要能够以自主的方式自组织和协作我们需要为每个组件提供一个身份,这是一个系统,一个软件身份,对吧?这不是一个身份,一个人,你和我,这是一个身份的软件组件和相关项目叫做SPIFFE到底,等系统已经使用Istio HashiCorp控制台和特使背后的网络代理这两个如此,如果你需要提供身份服务,去看看SPIFFE这些都是开源项目,所以我们的时间参加他们开发这些协议构建的系统明天现在,当然,谈论混沌就不能不提混沌工程。这个概念最初来自Netflix,对吧?他们以建立猿猴军团而闻名,这是一个工具家族,用来测试和验证他们自己系统的弹性和可靠性,然后将其发布给社区,其中Chaos Monkey是这个家族中最著名的一个,但工具比它们定义的原则更重要这些原则可以在这里找到,整个宣言叫做混沌工程的原则,在principlesofchaos.org如果你今天正在构建信息系统,你需要意识到这一点,去读这篇文章,去理解宣言所谈论的原则,最后,我在这里谈论了很多关于去中心化的问题,为什么去中心化很重要?因为正如我们所说,中心化系统中的TVT和自组织是非常有限的,因为它非常依赖于中央实体,如果中央实体试图收回控制权,那么自组织就会消失。
以同样的方式,我们看到互联网最初的设计是分散的,我们开始看到它变得越来越集中,因为商业实体和政府正在提取数据,正在努力尝试使用我们的数据管理数据在他们的兴趣,我们看到很多的丑闻在Facebook例如去年因为他们滥用我们的数据现在有一个整体运动叫做re-decentralize呼吁互联网的re-decentralization因为集中式模型没有规模,当我们说,我们应该进入,因为这确实是指向的方向,我们的系统和我们的社会。当然,去中心化、复杂性和我们所处的系统的混乱,要求我们对共识和信任等问题有一个新的理解,英国作家雷切尔·博茨曼写了一本很棒的书,叫做《你能信任谁?》它讲的是人类社会信任的演变基本上瑞秋说的是很久很久以前我们的信任模式是地方性的,我们信任我们的部落成员或村里的邻居,然后在历史上很长一段时间里我们开始信任其他人基于一些中央集权的实体,对吧?所以我们信任别人是因为我们的政府说可以信任他们,我们信任别人是因为银行说可以信任他们,或者任何商业结构因为Facebook说可以信任他们,但是现在,再次感谢科技,我们的信任模式变得越来越分散,我们开始信任一些人,世界另一端的一些企业因为我们从未见过的一些人为该企业或个人提供了良好的评论这是一个更加分布式的模型,没有任何中央实体,可能有一些中央基础设施但我们不相信中央实体的代码这与我们正在构建的系统的运作方式完全一致,事实上这是康韦斯定律,对吧?所以我们正在建立的系统反映了我们所处的系统的变化然后它们允许我们所处的系统的变化发生雷切尔·博茨曼将信任定义为与未知的自信关系,一个现实生活的定义因为如果你仔细想想,这就是混沌学的内容。与未知建立自信的关系。
现在,所有这一切,再次要求我们重新审视我们合作的方式,正如我们所说的,我们正在构建的系统将反映我们所处的系统中的协作模式,这就是为什么一个真正的现代DevOps组织,可以构建那些复杂的分布式分散系统,它也必须是……看起来一样,它必须是分散的,建立在多个轻量级的半自治单元之上,每个人都把他们的服务从摇篮到坟墓从开始到用户以一种没有领导的方式合作,他们的合作基于一种同步的通信模式,尤其是今天,当我们突然,相当出乎意料地,我们中的许多人发现我们在家里工作每个人都在自己的卧室里,所以,这就是为什么我们迫切需要完全透明的信息,完全分享知识,以完全相同的方式,软件交付模式进入混乱,分布式的,去中心化的世界必须是去中心化的,它们需要以拉为基础,因为我们已经发现,基于拉的流是基于拉的协作是在复杂系统中建立流的唯一方式,它们需要事件驱动,我们讨论过,它们需要基于共享,紧急,协议,这里有一个警告。
你看,当我们开始处理、理解和接近那些混乱、复杂的系统时,我们的本能反应是试图控制它们。而不是聪明地管理他们,你知道吗?简化我们可以简化和管理的东西,但要真正控制他们的行为我们现在越来越多地看到当我们突然不得不切换到一种新的,更分散的工作模式时我们花在缩放屏幕前的时间当我们花在笔记本电脑屏幕前的时间是5到8个小时,这对我们的心理健康有什么影响?所有这些都会导致倦怠,因为当我们试图控制我们无法真正控制的事情时,就会出现倦怠。这就是我给你们的信息不要试图控制我们无法控制的事情,不要耗尽精力当专业人员耗尽精力时,当整个组织耗尽精力时,那是一场灾难。我们不想,没有没有用的,这里我们大多数人不是拯救世界,让我们成为真实,但我们能做的就是我们可以建立我们的系统弹性,我们可以构建他们聪明、可控的方式拥抱事实他们混乱的拥抱,分散和提供他们所需要的礼仪,为了在这个自组织弹性,拥护中央集权的方式,我们一直在讨论今天的生活,我们的生活是混乱的,我们的世界是混乱的,这正是它美丽的原因,正如阿尔伯特·爱因斯坦曾经说过的,你可以一生都认为这个世界没有奇迹,这个世界上没有奇迹,或者你可以花一生的时间认为整个生命是一个大奇迹,我当然相信第二种方式,我认为我们今天谈论的一切都告诉我们这是唯一的方式来对待我们的系统,我们的社会和我们是那些建立这些系统的人,这些系统让这个世界变得更加分散,所以让我们保持健康,让我们远离倦怠,继续建立这些美妙的、混乱的、复杂的、美丽的系统。谢谢你!

免费试用JFrog !