云”这个词是一个模糊不清的词,即使人们长期坚定地使用它。这种情况就好像,当政治家们陷入困境时,他喜欢说解决问题的办法常常是通过“教育”一样。在过去的十年或更长的时间里,从实习生到首席信息官,IT部门的每个人都知道,不管是什么问题,正确答案都是通过“云”来解决的。
不过,由于多年来“云”这个词隐藏了许多复杂性和不确定性的东西,因此它的含义千差万别。在这个流行词被采用之前,大型机公司就开始销售分时度假系统。最早的托管公司就是在Unix服务器上租用帐户。像美国这样的公司以娱乐为幌子,在线提供类似云的存储和计算服务。
直到现在,这种演变还在一直持续。初始阶段,云计算产品只是在服务器上运行的几十个虚拟机。即使用户实例只是机器的一小部分,也可以假装是root用户。从而FTP服务器被重新命名为bucket和dropbox,服务也开始出现爆炸式增长,“aas”成为首字母缩写词创作者最喜欢的后缀。
这种演变仍在继续,每一项新的发展都会促使云计算用户重新思考他们想要租什么,以及他们期望用自己的钱得到什么。其中许多是重新发现和重新包装的想法,还有许多是通过解决上一代解决方案产生的问题的更好的解决方案。所以这些给了人们提供了一个机会,那就是通过重构云计算技术,使其焕然一新。
以下是云计算创新和发展的七种重要方式。
1、减小计算粒度节省成本
第一代无服务器计算具有相对较大的计算单元。例如,AWS Lambda一开始就将所有的计算粒度四舍五入调用为100毫秒,程序员很快就发现,他们花同样的钱可以实现一个更快速、更简单的计算,或者可能是一个20倍、30倍甚至100倍大的计算。如果他们不那么细心或者利用率不高,也没影响,实际支付的账单是一样的。
随着越来越多的无服务器平台竞争,最小计算粒度的大小也越来越小。AWS停止了100毫秒取整,开始以1毫秒为增量计费。
2、简化操作系统
现代化的操作系统是一台极好的复杂机器,设计用于处理打印作业、视频游戏、文档编辑和大量其他任务。您是否曾经想过为什么要在启动云实例时准备好所有代码来处理这些任务?
Unikernels是消除所有复杂性的一种方法。一旦代码运行,编译器将构建一个更小的程序包,该程序包将位于标准虚拟机管理程序之上。支持者指出,这样不仅效率提高了,攻击面还要小得多,从而更易于保护。
为什么不直接从AWS或Google获得你的最小操作系统呢?Google的Container-Optimized OS和Amazon的Bottlerocket将传统的虚拟化范例应用到操作系统中,其中容器是虚拟操作系统,而最小的Linux则扮演着虚拟机管理程序的角色。它们在包装只做一件小事的微服务方面十分出色,而不依赖于操作系统的大部分功能。
3、开源功能
另一种简化部署到云平台工作的方法是让开发人员编写一个简单的功能,并将所有其他工作留给云平台本身。在过去几年中,所有的主要云计算供应商都展示了自己的工具,这些工具允许一个小片段代码、一个功能来做出一些决定,并处理一些数据。这些都是很好的进步,特别是对于将许多服务组合成一个产品的开发者来说。
唯一的缺点是云计算供应商锁定的情况。虽然这些功能可以用多种语言编写,但与框架的交互是专有的。现在,有许多有趣的开源项目(openwhsk、OpenFaaS、Kubeless、Knative、Fission)提供“功能即服务”。
4、Arm芯片
Arm芯片不仅仅是给Mac爱好者设计的。AWS有一系列服务器运的带有Arm内核的Graviron芯片,保证运行成本降低40%。当然有一些警告。必须重新编译可执行文件以在Arm平台上运行,除非使用的是Java、JavaScript(Node.js)或PHP(Drupal、WordPress等)等更高级别的语言。
能否实现大的节省在很大程度上取决于计算和负载的性质。一些基准测试将Gravitron机器与基于Intel的原始机器放在通用范围内。其他人则认为基于Arm的实例的性能稍差一些,因此更适合于运行低代码,这些代码可以在不延长运行时间的情况下节省成本。
是否要更换这种呢?找到答案的唯一方法是在生产环境附近测试自己的工作负载,看看它们可不可以节省成本。
5、万能数据库
很久以前,Fortran程序员看到Fortran添加了一些令人兴奋的新特性,并打趣说,不知道未来的编程语言会是什么,但还是将它称为“Fortran”。今天,对于数据库(作为服务层的原始微功能)来说,可能也是这样的。很久以前,数据库只能存储矩形表,如今,几乎可以做任何事情。
开发者开始注意到有多少功能。例如,Postgresql11有自己的JIT,用于编译查询并且其嵌入式函数可以提交或回滚事务。此数据库使用JSON,因此在不超出数据库容量的情况下构建完整的微服务比以往任何时候都要容易。
其他数据库,如Azure Cosmos DB 结合了SQL、MongoDB、Cassandra和Graph APIi。还有一些像Google的Firebase提供了存储数据和通过复制将数据传递给客户端的功能,实现了将分发和存储结合起来。
6、办公室应用程序的新角色
充满数字、字母和公式的网格是Bean计算人员和管理人员的通用语言,而不是编码人员的通用语言,但作为一种智能文件格式和向大众开放云的方式,它们正得到更多的尊重。“无代码”理念将程序员从循环中摆脱出来,并通过将电子表格转化为应用程序的工具直接接触宏程序。例如,谷歌(Google)宣称,一家公司使用AppSheet构建和部署了超过35个“无编码技能”的商业应用程序。
不仅仅是电子表格,办公应用程序套件现在是越来越多的运行业务的定制应用程序。一些编码人员并不是在独立实例中构建和部署应用程序,而是在构建与文字处理器、幻灯片演示生成器以及Google或Microsoft universe中的其他通用工具集成的应用程序。从而使得,企业中每个员工更轻松地处理文档和电子邮件。
7、边缘计算
云计算通过将越来越多的计算能力推向网络边缘。像Cloudflare这样的公司现在提供智能计算服务。Cloudflare Workers将在其200多个数据中心尽可能靠近用户的位置运行JavaScript、Rust、C或C ++代码。
Amazon的AWS for the Edge服务提供了类似的机会,让代码更接近用户。那些使用Amazon SageMaker机器学习服务的人可以把他们从主要数据中心推向网络边缘。亚马逊公司目前强调与新兴5G蜂窝网络的连接,毫无疑问,消费者将越来越多地采用移动设备浏览互联网。
微软的Azure IoT Edge旨在依赖云计算的功能实现设备爆炸式增长。
例如,Custom Vision服务将边缘计算引入所有新兴的摄像机网络。
随着云计算的增长和使用,大量的例子也正在开发中。云计算曾经仅限于可租用实例的集中式数据中心,但现在正在迁移到网络中。那么之后会是什么呢?物联网?智能烤箱?还是智能汽车设备?
只要租赁比构建更加经济有效,那么云计算就将被任何需要电脑和数据存储来推动业务发展的人员所接受。