“云”这个词是IT人员在稳定信心时经常使用的万能词语。就像医生们在回答患者的提问时会不假思索地说出“休息”这个词一样。在过去的十年或更长的时间里,从实习生到首席信息官,IT部门的每个人似乎都知道,“云”适用于所有的问题。
不过,这个词也隐含着大量的复杂和混乱,因为多年来它们有着千差万别的含义。在云这个词流行起来之前,大型机公司就已经在销售分时系统。早期的主机托管公司会在Unix服务器上租用账户。像美国在线这样的公司一直在以娱乐为名,提供类似于云的存储和计算服务。
即便云计算被世界所熟知,这种发展仍然在继续。最早的产品只有几十个运行在胖服务器上的瘦虚拟机。即使实例只是机器的一小部分,用户也可以假装是root。FTP服务器则被重新包装为bucket和dropbox。从那时起,服务开始出现爆炸式增长,“XaaS”(X即服务)成了时髦的术语。
每一项新的发展成果都会促使云用户重新思考他们想要租什么,期望自己的钱能够买到什么。其中许多概念是重新拾起来的,但是经过了重新包装和炒作。许多都是为了解决上一代解决方案所产生的问题而推出的解决方案。所有这些都给了我们机会,看看我们正在建设什么,换句好听的说法就是“让它们焕然一新。”
以下是云创新和发展的七大重要方式。
更精细的计费单位
第一代无服务器计算带来了相对较大的计算单元。例如,AWS Lambda一开始就把所有的调用降低到了100毫秒为一计费单位,程序员很快就发现,他们花同样的钱能够实现快速且简单的计算,计算规模可以提高20、30甚至100倍。即便达不到宣传的效果,那也没关系,花的钱是一样的。
随着越来越多的无服务器平台加入竞争,最小计算粒度的大小也越来越小。AWS刚刚完成向100毫秒的调整,就开始以1毫秒为单位进行增量计费了。如果用户清理代码并注意改进那些低效代码,那么他们的账单无疑还将会降低。
对操作系统进行瘦身
现代操作系统极为复杂化,它们被设计用于处理打印任务、视频游戏、文档编辑和大量的其他任务。用户是否想过为什么自己要在云实例中启动所有的代码,为所有任务做好准备?
Unikernel为一种去除所有这些复杂性的方法。一旦代码运行,编译器将构建一个很小的包,其将位于标准管理程序之上。支持者指出,这不仅因省去了所有的额外库而变得效率更高,而且攻击面变得更小,更容易被保护。
为什么不直接从AWS或Google获得小型操作系统呢?Google的容器优化操作系统和Amazon的Bottlerocket将传统的虚拟化范例应用到了操作系统当中。它们的亮点是打包了微服务,不借助操作系统的大部分功能即可处理一些小型任务。
开源函数
另一种简化部署到云端的方法是让开发人员编写一个简单的函数,并将所有其他工作留给云本身。在过去的几年里,主要的云计算公司都推出了自己的工具,允许一小部分代码,一个单一的函数来做一些决定和处理一些数据。这些都是了不起的进步,尤其是对于那些需要把许多服务整合成一个大型产品的人员而言。
唯一的不利因素是供应商锁定。虽然函数可以用多种语言编写,但是与框架的交互是专有的。现在有许多开源项目,如OpenWhisk、OpenFaaS、Kubeless、Knative、Fission,可以将函数即服务变成了一种可供用户选择的选项。
ARM芯片
它们不仅仅是为Mac用户准备的。亚马逊的许多服务器都在使用ARM内核的Gravitron芯片,从而使得运行成本降低了40%。当然用户必须重新编译自己的可执行文件才能在ARM平台上运行,除非使用的是更高级的语言,比如Java、JavaScript(Node.js)或PHP(Drupal、WordPress等)。
这样是否会节约大量资金,在很大程度上取决于用户的计算和负载的性质。一些基准测试认为,Gravitron机器与基于Intel的机器相当。但是许多人认为基于ARM的实例在性能上稍弱一些,因此更适合运行轻代码的情况。由于这些代码运行时间不长因而可以节省成本。
决定是否换到ARM的唯一方法是在接近生产环境的环境中测试自己的工作负载,看看它们是否可以节省成本。
全能型数据库
很久以前,Fortran的程序员们就发现Fortran添加了许多令人兴奋的新功能,虽然这些程序员不知道未来的编程语言会是什么,但是他们将其称为“Fortran”。这与今天的数据库(原生微函数作为服务层)面临的情况相似。以前数据库只能存储矩形表。现在它们几乎无所不能。
开发者们开始注意到后台的数量。例如,PostgreSQL 11有自己用于编译查询的JIT,其嵌入式函数现在可以提交或回滚处理。由于数据库使用了JSON,因此在离开数据库的情况下构建完整的微服务比以往任何时候都要容易。
Azure Cosmos DB等数据库还整合了SQL、MongoDB、Cassandra和图形API。Google的Firebase等数据库也提供了存储数据以及通过复制将数据交付给客户端的功能。它们将分发和存储结合了起来。大量与此类似的新数据库为“数据库”这个术语带来了新的含义。
办公应用程序的新角色
充满数字、字母和公式的网格是bean计数器和管理器的通用语言,而不是编码器的通用语言,但是作为一种智能文件格式和向大众开放云的方式,它们正得到越来越多的重视。“无代码”运动将程序员从循环中剔除,并通过将电子表格转化为应用程序的工具直接接触宏。例如,谷歌宣称已有公司使用AppSheet“无代码技能”构建和部署了35个以上的业务应用程序。
不仅仅是电子表格。整个办公应用程序套件如今已经成为了越来越多的运行业务的定制应用程序的基础。一些编码器已经可以构建集成了文字处理器、幻灯片演示生成器以及由谷歌或微软开发的其他通用工具的综合性应用程序,而不再为单独的实例构建和部署应用程序。有了这些,大部分时间都花在处理文档和电子邮件的企业员工的工作将会变得更加轻松。
边缘计算
云计算正在将越来越多的计算能力转向网络边缘。像Cloudflare这样的公司现在也开始提供智能计算服务。Cloudflare Workers在他们的200多个数据中心中尽可能地选择一个最靠近用户的数据中心上运行JavaScript、Rust、C或C++。
亚马逊的AWS for the Edge服务也有类似功能,让用户的代码更靠近用户。那些使用亚马逊SageMaker机器学习服务的用户可以让自己从主要的数据中心向边缘转移。目前亚马逊正在将重点放在与新兴5G蜂窝网络的连接上。毫无疑问,消费者将不再偶尔通过移动设备使用昂贵的数据服务,移动设备变成他们浏览互联网内容的主力设备。
云功能的兴起导致相关的设备出现了爆炸式增长,这也是微软推出Azure IoT Edge的初衷。例如,Custom Vision服务为新兴的摄像头网络引入了边缘计算。
随着云计算的增长和逐步普及,相关的用例也越来越多。只要租用比自己动手搭建来得更加容易,那么任何需要电脑和数据存储来推动企业发展的人都会接受云计算。