“函数云”即将崛起?
工具始终为其用途所塑造。当云计算首次出现时,是一种虚拟化托管的形式,其目标是看起来和裸机服务器一样。
基础架构即服务(IaaS)形成了最早的云服务,它仍然主导公共云以及私有云软件市场。 即使如此,这并不意味着它会成为未来云机会的源泉。
云提供商一直在为未来做准备,他们的规划显示了某个重要的,已经在进行中的转变。 每个主要公共云提供商都添加了处理事件的服务。 特别值得注意的是,提供商正在添加功能来帮助开发人员构建物联网(IoT)的应用程序。 这些可能就是自互联网以来最具变革性应用的基础吧?
IAAS与IoT不合
传统应用程序遵循几十年的模式:负载来自于它所支持的应用程序。在传统云计算中,用户支付他们使用的处理资源。这些术语不同,但实际上是租赁虚拟基础设施。这是数据中心所发生一切的直接反映 —— 服务器中加载应用程序与事务,并将其路由到正确服务器资源池中。这种方法在负载持续存在时非常好,如零售银行处理相关应用程序持续运行的情况。
IoT和其他基于事件的应用程序改变了这个关键的持久性概念。随时随地都可以弹出一个事件。将IaaS实例用于等待事件将导致浪费,甚至是大量的浪费。或者事件发生的地方与实例可能相差半个地球的距离。如果所有可能的事件源要与传统云端主机分布相匹配,多数情况下大部分资源都会闲置,很少开销,但却花费不少成本。
有个很简单的、判断特定对错处理事务的方法:延迟。大多数事件具有特定的响应时间期望。想象一下当物品通过传感器时触发喷漆的机器。描绘一台接近不断变化的交通灯的自驾车。
事件和收到适当响应之间的信息流被称为控制循环。大多数事件需要简短的控制循环,这意味着它们的处理需要靠近事件点。这就是控制循环问题,这些控制循环迫使事件处理过程分散到云边缘,并以指数级增加。
很容易看出,定点的事件稀缺性会影响传统云计算效率和定价问题。也可能存在非常多的事件。云可以根据需要,通过爆发或扩展容量来获得多个应用程序组件副本,但并不容易。
重新思考应用程序与运营
很少开发为在裸机服务器上运行的应用程序可以无缝地缩放或替换失败实例。这些云功能在传统应用程序运行数据中心中并不常见。将应用程序移动到云中也不会增加支持扩展应用程序所需的功能。
应用程序组件的多个副本要求负载均衡,而许多应用程序并没有被设计为允许任何副本来处理任何事件或请求。某些应用程序依赖于一系列上下文,无法处理其他副本应用程序留下的业务。我们如何使IoT应用程序具有可伸缩性和弹性?必须重写。
开发人员正在做这些事,大型云提供商也在响应。特别是他们都看到了IoT与事件对云未来的影响。他们一直在不断增强云计算,为未来作好准备。云巨头不仅提供特别的Web服务来管理IoT设备和连接,而且他们现在提供工具来支持IoT将要进行的编程。
函数或λ风格编程不允许应用程序或组件在使用之间存储数据。因此,组件的所有实例都可以处理事件。云提供商现在提供函数性或微服务支持,而不再简单地提供基础设施、平台或软件即服务,因为函数云是非常不同的。
要托管在哪个函数云?
遍布各地。无处不在。函数在被需要的地方和时刻激活——而你只需支付使用时产生的费用。函数云对于IoT或者任何类型的事件处理,显示了极致的灵活性与敏捷性。
函数云同时还要求制定关于用户愿意支付多少函数托管费用的策略,这是根据成本与麻烦的控制回路长度组合而做出的决定。
函数云的崛起
亚马逊甚至允许IoT将云应用程序迁移到云外部要求。亚马逊网络服务(AWS)Greengrass平台是一种软件和中间件框架,可让用户在自己的硬件上执行AWS兼容功能。
此功能将使IoT用户对事件进行一系列本地处理,以使这些控制回路保持短距,但仍然在AWS云中托管更深层次,更少时间敏感的功能。
旧的云模型让你为托管实例付费。在函数云中,不需要通常的实例托管方式。可以根据需要即时执行函数。这是什么导致了函数云的按执行支付或无服务器的描述,但这还不完整。你可以根据使用情况为任何云计算服务,任何运行的应用程序支付费用,但这并不能使云服务可扩展或轻松优化。没有这些功能,无服务器只是一个定价策略。
开发人员必须对应用程序进行更改以适应物联网和函数云。几乎每个新程序或服务都存储信息,这使得它难以扩展。函数编程的规则是无状态,这意味着从进程获取的输出仅基于您提供的输入。甚至有编程语言旨在强化对开发人员的无状态行为;这并不是老习惯。
函数云的概念可能会加速已开始的趋势,以应对移动设备使用和BYOD策略的实施。
公司发现,他们正在创建旨在为移动设备格式化信息的应用程序组件,与为各种移动平台编写的应用程序进行对接,并提供通常在数据中心运行的后端应用程序的一致支持。
这些力量结合起来创建了某个应用程序的两层模型。设备处理前端位于云并利用云在全球范围内分发应用程序的能力。然后,云部分将为核心业务应用程序创建传统交易,无论它们在哪里。
IoT比移动负载更加分散,一些IoT事件需要短控制回路。因此,应用程序前端部分的云托管可能会爆炸式增长。这给两层应用程序结构的偏离带来压力,因为许多事件可能会产生许多事务。这些交易可以压垮核心业务应用程序。云提供商也在努力。例如,Microsoft拥有通常用于为业务应用程序提供工作的服务总线的云分布版本。
鉴于IoT处于起步阶段,而云IoT更加年轻——很容易想知道云供应商为什么已经提供IoT功能。三个原因。
首先,物联网可以大大增加IT支出,云提供商希望将其中一些作为潜在的新收入。
第二,物联网不是唯一产生事件的事情。例如,很多移动工作负载的互动看起来像事件处理。
最后,推广函受各种处理所推崇的数编程技术。物联网需要他们。开发人员工具和会议已经描述了函数编程技术如何使程序更好,更可维护。
函数云的需求
AMAZON WEB SERVICES的Lambda是第一个基于事件的计算服务,但有几个其他云提供商也快速跟进。
微软的Azure功能去年11月份推出,IBM的Apache OpenWhisk在下个月推出。
Google于四月份将其云函数服务移至测试阶段,Pivotal预计将于2017年年中开放业务。
如果由于任何原因编写函数,是不是使用功能云不可避免?