管理混乱——去中心化世界中的软件交付

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

视频记录

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

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

试试JFrog免费!