关于降低复杂性的许多谎言第2部分:云

2021-01-11 11:26:20

世界变得越来越复杂,大多数人都同意这一点。不断增加的复杂性的一个主要因素是我们人类不断增加的庞大的机器逻辑。逻辑本身及其所能实现的—认为贸易和通讯的全球化—都使我们的大多数生活变得越来越复杂。尽管它给我们带来了很多好处,但它也有许多有害的副作用。

我们遇到了每天处理这种复杂性的能力的界限。大型IT项目总是会迟到,花费太多,甚至直接失败。或者,我们如何在充满逻辑脆弱性和人类弱点的数字世界中努力保持安全。

[注1:本文旨在使非专家可以理解(稍作努力)。其中有很多术语,但是我会尽力解释所有这些术语,包括下表,其中对一些关键术语进行了详尽的解释。如果我不解释一个术语,则可以安全地忽略它,如果您不知道它是什么(例如,当我提到“ tomcat服务器”作为示例)时,它对知道但不是真正的人很有帮助有必要知道跟进故事是什么]

因此,在IT领域,过去十年来一直在不断努力以降低复杂性就不足为奇了。 “降低复杂性”的销售。由于复杂性通常是他们最大的麻烦,因此IT经理尤其对此敏感。因此,在IT领域,人们一直在努力使复杂性可以承受。十年来流行的一种方法是对我们使用的数字工具进行标准化和合理化,这是一个基本的“让我们尽量减少使用的应用程序数量”。这实际上是该故事的第1部分:应用程序合理化的故事(不是)。从2015年开始的故事解释了部分合理化工作的部分谎言。 (并且,当我们在使用它时:请享受其中引用的Dilbert卡通。)大多数时候,多个应用程序被一个平台取代(简而言之:一个平台是可以运行其他软件的软件),并且这些应用程序必须被“重写”以在该平台“内部”工作。因此,您最终获得了一个额外的平台,相同数量的应用程序以及通常针对该平台的几种新的“编程”方式。这并不意味着一切都是谎言。新平台通常专用于某种类型的应用程序,这使得对这些应用程序的编程更加简单。但是这种情况并不像平台供应商所说的那么简单。正如弗雷德里克·布鲁克斯(Frederick Brooks)早在1986年告诉我们的那样:“没有银弹”。

另一个驱动力是封装(隐藏)复杂性并通过更简单的接口访问它。第三是使IT本身自动化,从而创建复杂的“管理IT”。当我们开始将IT外包给Microsoft Azure或AWS之类的云服务时,这三者都发挥了作用。

[注2:本文已失控。完全。我很久没做题了-经常这样做。但是,通过不向您展示隐藏的复杂性是无法完成的。不了解实际的IT世界有多复杂会导致不良结果。当支持Covid-19疫苗接种运动的软件由于尚未完成测试而推迟了几周(!)时,我读到一个领先的政客国家,例如“来吧,做一点测试,这有多难? ?”。这是不了解IT的复杂程度的勉强表现。这就是我写这篇文章的部分原因。因为直到我们的领导人真正开始了解这一点,他们才会因无知而造成越来越多的灾难。回到故事。

对于非技术人员,这是上图中和正文中使用的术语的基本说明。

Warning: Can only detect less than 5000 characters

如您所见,使用“基础架构即服务”或IAAS,实际上并没有什么要摆脱的。除了硬件和虚拟化之外,您还需要为其他所有工作做这些工作。这就是为什么所谓的“提升和转移”操作(将您的基础设施移至云中)大部分失败的原因。您要做的工作几乎没有收益-这是您的大部分成本-并且持续使用的云资源比您自己的昂贵得多,也就是说,如果您自己有一点可扩展性。因此,对“云优先”策略的过度热情很快就让位给巨大的头痛。特别是财务方面的。

平台即服务或PAAS确实带来了很多优势。平台是其他软件运行所必需的软件。云平台可以完全(OS)进行管理,也可以进行很大程度上(例如tomcat之类的“应用程序服务器”)进行管理,而您要做的事情就少得多。对它们进行了修补,并对其进行了生命周期管理。它们具有基本配置,并提供了一些用于调整细节的方法。仍然可以进行一些工作,但是远远少于安装平台本身的时间。

IAAS中还存在一个重要的误导性因素,该因素不在图中。如果您在云中执行IAAS,最终将不仅获得一个空的虚拟机,还将获得一个其上带有操作系统(OS)的虚拟机(VM)。设置虚拟机时,您必须告诉云提供商将哪个“图像”(文件)用于放置在虚拟机上。该映像表示您在其顶部安装了操作系统。您可以提供自己的映像,但云提供程序也可以提供一些映像。这给人一种错觉,认为正在运行的操作系统是IAAS的一部分,但事实并非如此。当您查看许可证(您必须提供自己的许可证)之类的东西,并且最重要的是维护/操作时,这变得很清楚。您对操作系统完全负责。对于其生命周期管理,安全修补,日志记录,监视,身份和访问管理以及一般的配置。基本上,他们提供的OS映像只是隐藏了您自己提供的(通过复制它们)。而且,这也使人们忘记了初始安装仅是使用OS意味着最小的一部分。

此图显示了您在使用IT时要负责的更多事情(如今,谁不负责?)。从下至上:

实际的“铁”,即真正的机器(与下面的虚拟机相对)。这些可能是专用设备,已通过专用硬件和软件(网络,存储)针对特定任务进行了优化,或者它们可能是更通用的计算机,是家用PC的强大版本。这些包含构成IT核心的要素:机器逻辑的执行。例如。 CPU(处理器)和RAM(工作内存)。

硬件与这些分离,所有软件的实际管理就是盒子所代表的意思。值得一提的是,存在各种(超)融合解决方案,可在一台设备中提供计算,存储和网络的组合。

通常被忽略。但是在庞大而复杂的基础架构世界中,您需要一个设置来维护基本信息,所有组件都可以使用彼此的信息来访问它们。示例:要存储身份,身份组和凭据,并赋予这些身份和组访问权限(毕竟,我们希望这是安全的,对吗?),我们需要某种方式来存储和访问该信息。

用于设置网络寻址,路由,交换,防火墙的功能,换句话说,您需要安排系统实际上可以互相复制数据的所有内容。在专用硬件上运行的专用软件,例如带有用于网络电缆的插座或用于无线通信的天线。

提供“原始”存储的功能。例如。如果您的系统使用共享的网络驱动器,则该存储驱动器位于其下的某个位置。而且该虚拟机也使用此存储。通常在专用硬件(例如,具有大量磁盘)上运行的软件。

提供通用虚拟机(VM)的功能。上面提到的通用硬件运行“虚拟化软件”或“管理程序”(IBM在1960年代就已经创造了这个名词,因为操作系统(以下)是“管理程序”)。机器(真实或虚拟)需要操作系统(例如Windows或家庭macOS)才能执行某些操作。

可以运行其他软件的软件。实际上,理论上是无止境的堆栈,有时甚至是网络(请参见下文)。

最低的平台级别。它部署在(虚拟或真实)计算机上。根据定义,它在云中部署在虚拟机上。仅具有操作系统而没有其他任何内容的VM是PAAS的“最精简”版本。如果您使用PAAS(或使用SAAS),则该操作系统完全由PAAS提供商管理。由于这些系统非常复杂,因此很难很好地操作并保持良好状态。例如。要确保此类系统的安全和运行,需要引起注意。没有操作系统,即“操作”计算机的软件,任何计算机都无法运行。

一般复杂的“平台”。可能是数据存储和处理的组合,例如Oracle,SQLServer,EnterpriseDB,CognosDB,MongoDB等数据库(请注意:对于数据库,有时将DBAAS用作术语:数据库即服务)或企业服务总线(通信集线器,例如Tibco)或API平台(通信集线器,例如Mule)。中间件通常会嵌入运行时(例如,中间件可能会嵌入运行时以运行PLSQL,Java和Javascript(所有编程语言)程序)。中间件也可以在运行时本身上运行(例如,如果系统本身是用Java编写的),请参见下文。

其他系统可以使用的机器逻辑功能的集合(因此不需要提供自身)。 .Net,Java,macOS上的Objective-C是需要执行时才能执行的计算机语言。此定义中的运行时没有独立的存在(它们仅在运行应用程序时运行),而中间件通常即使没有部署任何其他系统也可以运行。

另外:“运行”。除了提供它的人和其他所有突然发现需要它的人以外,几乎所有人都几乎忽略了它。因为所有IT都需要某种操作。例如注意到和解决问题。因为IT没有它们?因此,其中包括“日志记录”,“监视”,“事件管理”,“事件管理”等。例如:假设PAAS服务出现问题并且无法运行。有人应该找出解决办法,而不是在网上商店关闭10个小时后才去做。另外:灾难管理(备份,恢复)或“连续性”。本身需要整个堆栈(应用程序,平台)。

大多数人只想到的功能。无论是购买还是建造,机器逻辑都可以利用下面提供的所有功能。

另外:“更改”。必须先在平台上部署应用程序,然后才能使用它们。如果您自己构建,则将进行开发和部署。其中一部分是例如测试以及从测试到生产的升级。开发可能包括各种源代码控制和开发环境。需要本身的整个堆栈(应用程序,平台)。

逻辑和数据“安全”是至关重要的,也就是说,机密性(仅应由应有此权限的人员访问),完整性(仅应更改数据才更改)和可用性(您不希望紧急服务由于某些服务器崩溃而无法使用)。管理身份和访问权限是机密性和完整性的重要方面。通常,使用目录(上方)进行存储。

永远独一无二。即使在SAAS中,您将信息作为信息放入系统中并从中获取信息,这也是为什么要首先使用它的原因。这是SAAS通常稍微复杂一点的一个方面,因为将SAAS系统与您的所有其他系统集成可能会涉及到复杂的设置。

相信迁移到云上会减轻您的工作量,这仅适用于SAAS。在所有其他情况下,这种信念是数据中心近视的一种形式,它还基于忽略了使该单个位(应用程序)正常工作所涉及的大量IT难题。在某种程度上,我们让数学家们开始了IT(并引入了误导性的“非功能性”概念),以对此表示感谢。

顺便说一句,真正困扰我的是这三层(下面将对它们进行更详细的说明):

这是从生活变得简单得多的时代开始的,即使那时事实并非如此。它提供了一种简单但错误的理解方式。实际上,也存在以下模式:

实际上,从理论上讲,我们在其他平台中运行的平台数量不限。在实践中,性能损失往往会限制深度级别。不仅如此,有些系统实际上是应用程序和平台的混合体,我称之为复杂应用程序堆栈。例如SAS,Tibco或其他许多产品。它们由用于部署您自己的“代码”的平台和用于管理和使用它们的应用程序组成。我是否已经提到现实比简单图片所暗示的要复杂得多?因此,现实更像是这样:

因此,在许多董事会会议室流行的第一张图片具有误导性。说谎这是因为您忽略了现实,即您仍然要为图片上的大部分内容负责。它在于将几乎所有移到云中的事物都遗漏了。因此,它以一种不切实际的方式构架了问题。和框架作品。拿这两个与这个故事无关的图表:

两者都显示完全相同的东西。但是在左边,由于在y尺度上遗漏了很多东西,因此增长似乎比右边要大得多。原始的IAAS-PAAS-SAAS画面恰好相反:通过省略所有保持不变的内容,它暗示了实际上并没有的简化。

所有这些都是IT中许多共同点的一种形式:简化建议很容易。现实是,复杂性不断提高

......