了解云的门外汉指南

2020-08-16 21:13:38

在本期的《给门外汉》系列节目中,我要讨论的是什么是“云”。我们都听说过iCloud、AWS、云计算等,并理解它们无处不在的力量。让我们更多地了解一下云的历史和机制。

TL;DR-云是计算机的优步。它由数十万台计算机(又名服务器)组成,用户可以出租这些计算机来运行他们的软件,以换取固定的费用-主要是根据使用情况。云公司负责使用各种最佳实践来运行硬件,这样软件开发人员和软件开发公司就不必而且可以专注于他们的核心工作。

你有没有看过电影中那种高强度的手术场面,医生不停地对护士大喊“给我一个夹子”或“给我5cc的<;插入药名>;”?在很长一段时间里,软件开发都是一样的(只是在很大程度上没有那么高的风险)。程序员会写出令人惊叹的应用程序,它们可能会吞噬整个世界。但运行这些令人惊叹的应用程序需要大型计算机。因此,当程序员写完最后一行代码或润色完最后一段文档(哈哈哈)时,她会开始尖叫,“给我一台大电脑”。

多年来,这意味着出去买电脑,插上电源,在上面安装无数的东西,永远确保没有人会错误地拔出插头。我甚至不想参与采购电脑的官僚作风。随着公司开始大量生产越来越多的软件,这就成了一个真正的问题。随着云计算的兴起,今天的应用程序开发人员只需点击几下鼠标,就可以自己设置一台新计算机。一点也不大惊小怪。云已经将硬件和其周围的操作商品化。

为了理解云计算的兴起,让我们稍微回顾一下计算机及其使用的历史。

第一台可编程计算机(可以说)是艾伦·图灵的团队在布莱奇利公园开发的,作为二战情报收集盟军努力的一部分。“可编程计算机”是指这是一台可以安排做任何计算的机器。只要配置成一种方式,它就可以破解纳粹的谜团密码。设置另一种方式,它可以将PI的值计算到小数点后的第ump-umpth位。

这本身就很了不起,因为现在或以后的大多数机器只做一件事。一把螺丝刀,一台推土机,一架飞机,所有这些都只做一件事。即使是“瑞士刀”也是许多机器的集合,每一台机器都有一个目的。因此,这台“可编程计算机”本身就是一个突破,因为你可以通过不同的方式对它进行编程,让它做任何事情。

无论如何,随着硬件和计算机科学的一系列令人眼花缭乱的创新,计算机变得司空见惯。它们可以在人们的家中找到,我们今天所知的硅谷正开始成形。然而,以这场新的计算革命所希望的规模获得计算机仍然不容易。你可以很容易地为你的家庭或办公室买一台电脑,但买50台电脑仍然是一件痛苦的事。马克·兰道夫(Marc Randolph)在他的书中讲述了Netflix推出当天的故事,这本书永远不会奏效,讲述了他的团队是如何不断地冲出去从附近的一家商店购买更多电脑的,因为访问该网站的人数出人意料地多。

由于这种按需购买的模式效果不佳,软件公司开始购买计算机并将其放在办公室中(这种做法仍然很普遍,被称为内部部署/内部部署(On-Premise/On-Prem))。IT团队将在办公室的指定区域设置计算机、电源系统、空调、电缆布局、故障保险箱等。这意味着该公司手头总是有计算能力的缓冲库存。这样做的成本是所有服务器(无论是否使用)所占用的资金。

你知道那些鬼鬼祟祟的软件开发人员做了什么(从那以后一直在做什么吗)?他们发现买电脑不再那么麻烦了,所以他们开始大量生产更多的软件。太多了。轻松的供应进一步刺激了对计算资源的渴求。

公司面临的另一个问题是,现成的电脑有一定的特定尺寸。粗略地说,计算机由存储(硬盘)、计算能力(CPU核心)、内存(RAM)和网络(LAN/Internet)组成。但是在新的数字时代,各种各样的程序都在编写,这要求每一个程序都有不同的组合。有些公司想要大量的网络,但没有做太多的计算(Netflix,Zoom),有些公司存储了大量的数据,但不需要很快(数据备份系统),等等。

大多数公司都负担不起手头有这样的机器的所有组合。购买它太贵了,而且他们必须单独为这件事保留一支工程师团队。因此,IBM的一些聪明人,当时首屈一指的计算公司,提出了虚拟化的想法。虚拟化使我们能够将多台计算机及其所有资源隐藏在幕后,并根据它们的聚合资源进行思考。例如,10台具有8 GB RAM和256 GB存储空间的4核计算机变成了40核、80 GB RAM和2560 GB存储空间的集合,它们可以根据程序员的要求被分成“虚拟机”。例如,可以将上述所有资源组合成具有20个内核、40 GB RAM和1280 GB存储的2个巨型虚拟机(也称为VM)。自那以后,虚拟化的广泛采用使程序员看不到实际的计算机(也就是裸机)。

虽然虚拟化为组织在高效部署计算资源方面提供了巨大的回旋余地,但它也为他们正在运行的数百台、有时数千台计算机的复杂堆栈引入了一个巨大的“虚拟化层”。一些公司已经到了无法在办公室容纳所有服务器的阶段,不得不开放数据中心(存储和操作所有服务器的独立设施)。这显然是一笔巨大的资本投资,也让这些公司分心。他们不想从事经营硬件的生意,但他们别无选择。

在20世纪90年代互联网崩盘前后,一些公司(特别是亚马逊)拥有大量的电脑和操作这些电脑的专业知识,并希望从中赚取一些利润。他们意识到,由于互联网有可能将世界上所有的计算机相互连接起来,他们不仅可以将服务器出租给需要使用服务器的人,还可以将他们在可靠操作服务器方面的专业知识作为硬件的一项服务出售。这就是我们今天所知的云(或云计算或云服务)的起源。

云的用户(服务器的租用者)基本上可以伸手进入云,根据他们的计算需求接触到大多数虚拟机,而不必担心虚拟机存放在哪里、是什么品牌以及是否连接到电源。云公司,如AWS,Azure,GCP,Digital Ocean(本博客就是在这里托管的)负责所有这些,这样我们就可以专注于运行我们编写的很酷的Facemash应用程序。用户根据他们对这些机器的使用情况,按小时、按月或其他某种形式支付经常性费用。不再争先恐后地购买计算机、连接它们等。随着高度自动化,今天即使是单个开发人员也可以管理比不久前整个团队更多的计算能力。

在过去的十年中,这种云化过程已经超越了硬件,甚至进入了软件领域。大多数云提供商都有“托管服务”,在这些服务下,他们为已经运行的最常用软件提供良好的安装和维护。我们现在甚至不需要安装这个软件--我们只为自己的目的租了一个运行版本--就好像它是实体的东西一样。这对初创公司来说是一个巨大的福音,因为一些最常用的软件类型,如数据库、防火墙、缓存、消息队列,只需点击几下就可以使用,而且不需要安装和操作。随着越来越多的繁琐工作转移到云端,进入软件世界的门槛从未像现在这样低。

从我在上一篇文章中讨论的“分布式汽车”的角度来考虑云硬件和软件。发动机、轮子、燃油喷射系统等现在都在云中,你可以买多少就买多少。作为汽车制造商,你现在可以专注于你独特的附加值-品牌,内饰和真皮座椅,只有你拥有专利的新型电池,等等。

今天,云是互联网基础设施的一部分,就像现实世界的高速公路或学校一样。大多数人希望高速公路和学校作为达到目的的手段。他们不想自己建造它们。对于任何想要构建软件的人来说,云都扮演着同样的角色。结果-无处不在的软件和巨大的云提供商向🙂收费