编者按:云计算时代出现了大量XaaS形式的概念,从IaaS、PaaS、SaaS 到容器云引领的CaaS,再到火热的微服务架构,它们都在试着将各种软、硬件资源等抽象为一种服务提供给开发者使用,让他们不再担心基础设施、资源需求、中间件等等,在减轻心智负担的同时更好地专注于业务。
无服务器架构(Serverless)和 Functions-as-a-Service(FaaS)是云计算的热点趋势。除了微软和亚马逊,还有许多其他供应商也提供 FaaS。已经有不少文章介绍了无服务器架构这项技术典型的应用场景是在流式任务处理,目前已经受到了越来越广泛的关注。本文将为大家介绍什么是无服务器架构会成为下一代IT基础架构。
去年秋天,由于大流量涌入,澳大利亚统计网在几个小时内便崩溃。 接下来的一个周末,两名大学生在一次黑客马拉松中搭建了一个非官方的澳洲统网,能够承受的流量是官方网站的四倍,而且这个非官方的网站成本只有约400美元,而澳大利亚政府在官方网站上却花了约1000万美元!
这里的重点不是关于政府的浪费,而是一个小团队、即使具备云方面的知识很少,只要提供了正确的基础设施技术,例如亚马逊的无服务器产品AWS Lambda。在短时间内就能完成较为复杂的网站。
随着软件蚕食着世界,我们经常陷入一种忘记企业的使命是向客户提供价值的陷阱。为客户提供的价值绝对不是软件,软件只是一种手段,我们应尽可能少地写软件。可悲的是我们经常忘记这一点。
幸运的是,软件开发业正在经历一些根本性的反思 ,大而全的应用,长时间的构建测试发布周期,以及无法快速整合用户反馈。以下几个趋势,推动了这种转变:
微服务迈向主流。曾经专属于具备网络规模的公司,微服务架构如今收到主要的开发商广泛采用。 由于能够带来更快的部署周期,微服务带来更高的资源利用率和更好的设计自主性,应用程序开发正在迅速从大容量转移到分布式、面向服务的结构体系。
开源的兴起。开源软件和共享代码存储库(如GitHub)的迅速普及已经将软件开发转变为一种社区活动。今天的开发人员广泛地利用开放源代码和第三方服务来整合一流的技术,并大大缩短产品推向市场的时间。
成功的产品需要快速迭代。与几年前不同,曾经的软件产品经过长达一年的设计,实施和测试周期而无需与用户发生联系,今天最好的产品建立在快速构建、了解用户反馈回路的基础之上。 对初创企业来说如此,也适用于大型企业。
当然,为了更好的利用上述趋势,需要恰当的基础设施。到目前为止,我们仍然受到基础设施IT堆栈的限制,在过去十几年中,我们非常努力地构建了应用程序,以适应基础设施,而不是基础设施来适应应用。虽然我们当然试图通过容器和DevOps等创新的形式来进行改进,但是这已经造成了更多的复杂性。如果未来我们有数十亿台设备需要进行实时或关闭的数据传输,需要进行分析和处理, 显然,我们现有的基础设施无法满足需求,我们需要的是一个根本上全新的基础设施堆栈,它应该是应用程序优先,让开发人员专注于提供业务价值。
无服务器架构(又称功能即服务或FaaS)正是我们需要的下一代基础架构。
无服务器架构允许开发人员运行后端代码,而无需管理自己的服务器系统或服务器端应用程序。 开发人员可以将他们自己的代码与其他最佳的服务相结合,创建应用程序,以便他们可以通过用户测试,进行快速发布和迭代。
无服务器架构有几个好处。 首先,不考虑基础设施可以减轻开发人员运行的应用程序的运行复杂性。 第二,横向扩展是完全自动化和具有弹性的。 第三,减少封装和部署复杂性使开发人员能够通过多个实现(implementation)来快速迭代。 第四,随着计算单位缩小到一个功能(与VM或容器相反),资源利用水平是前所未有的,允许用户为按照使用量准确付费。
因此,无服务器的普及程度的增长一直是很惊人的。 到目前为止的用例包括集成(将应用程序内的函数暴露给外部调用者)、事件驱动用例(根据事件触发从一个位置移动日志到另一个)、DevOps(CI / CD chron jobs)和数据处理。 但是,正如我们在虚拟机和容器中看到的(两者最初都被限制用于开发测试用例),我们预计无缝服务器将很快演变成更通用的工作负载。 事实上,顶级的公共云提供商估计,在3 到5年内,50-60%的云工作负载将无服务器。 三大云提供商之一已经在其无服务器工作量方面实现了100%以上的环比增长。 最后,Google趋势(一个很好指向标)显示,过去18个月内无服务器的搜索流行度增长了20倍!
尽管无服务器架构非常有前景,但无服务器是一种非常年轻的技术,离成为主流还有一段距离,认识到这一点非常重要。
无服务器架构有两个最突出的局限性。第一,到今天为止,无服务器功能都是无状态的(stateless )。 状态信息不能从一个函数的调用传递给下一个。这限制了在无服务器的基础架构上构建的各种应用程序。
第二,和任何新技术一样,无服务器缺少成熟的工具生态系统。由于高度分布式的架构监控和调试无服务器的应用程序真的很棘手,还有安全性。 另外,无服务器还具有一些独特的困难,例如发现可用的功能并将它们拼接在一起构建应用程序 ,这需要额外的编程来完成。
话虽如此,但考虑到用户对大型云服务提供商和小型创业公司感兴趣,以及相关领域越来越多的投资,我们仍然期望工具生态系统能够快速成熟,
基础设施抽象,自动扩展和更好的资源利用率应该使得无服务器取得成功。但仅仅认为无服务器只是下一代的基础设施是非常短视的,无服务器的真正机会要大得多。 实际上,无服务器可以从根本上重新定义企业软件如何分配,商品化和货币化。
今天,企业软件主要有两种类型:本地部署安装和SaaS。运行和管理相应基础设施的责任在于前者的软件消费者。相比之下,无需服务器的用户或提供商无需运行或管理任何基础架构。这是非常重大的,它开辟了通过市场分销和消费企业软件的新可能性。例如,安全供应商可以将其恶意软件检测软件作为无服务器平台的功能进行打包和部署,并将其销售给多个不同的消费者,如移动应用开发人员、IoT设备制造商和无人机操作公司。那些消费者可以只是调用这个功能,只支付他们使用的功能。类似地,可以以类似的方式打包和货币化其他专门服务(例如,机器学习,认证,支付处理等)。
此外,无服务器可以促进企业软件的分类定价,从而创造更大的获利机会。 例如,聊天操作的业务可以将其自然语言处理能力作为上述市场上的服务来实现,而不用担心管理基础设施的头麻烦。 如果发生这种情况,企业将能够以比以往任何时候更细致地的提供软件服务。
最后,正如我们之前所说,应用程序正在变形成为服务挂毯,应用逻辑将这些服务粘在一起。其中一些服务将在内部建立,有些将来自同一家公司的另一个团队,另外一些来自一个完全外部的第三方。此外,这些服务可以在一个或多个公有云上或者混合云组合的前提下运行。当这种情况发生时(已经发生),我们将需要一个基础架构框架,它们位于所有IaaS提供商(公共或私有)之上,以提供服务发现功能,呼叫路由和计费,而不管每个单独的服务是运行在哪个IaaS上,想象一下,运行在该框架上的应用程序,它来自GCP(来自AWS(或Azure)的数据库服务)和一组来自私有云的内部服务的GCP调用机器学习服务。当这种情况发生时,权力将开始从全天候的IaaS提供商转移到该框架。也就是说,无服务器最终真的会蚕食基础设施!
【编译组出品】编辑:杨志芳