【51CTO.com快译】无服务器计算(通常简称为无服务器)是一种极具潜力的云端技术模型。近年来,它经常出现在应用程序的开发,以及软件体系架构中。为了让无服务器框架发挥巨大的潜力,诸如Google、Microsoft、IBM和Amazon之类的软件巨头,已经开始向客户提供了能够将本地所有运营业务,迁移并托管到他们的旗舰无服务器平台(如:AWS Lambda和Azure Functions)上的方法与工具。
简而言之,无服务器架构是一种事件和请求驱动的技术解决方案。它允许应用开发人员在云端创建可操作的工作环境。该环境提供了实现编码流能够顺畅运行的所有必要的计算资源。该框架在时间紧、且任务相当耗费资源的情况下,显得非常实用。
此外,在选择无服务器服务,以简化应用开发流程的同时,您也可以用它来大幅改善诸如DevOps和敏捷实践等其他业务优化计划。
无服务器和微服务模型的区别?
总的说来,这两种架构的相似之处在于:它们都能够最大程度地降低运营的成本,缩短应用部署的周期,满足不断变化的开发需求,以及优化那些对于时间和资源敏感的日常任务。那么,微服务和无服务器模型之间的不同之处在哪里呢?
首先,微服务属于一种小型的SOA(面向服务的体系架构)技术解决方案。它可以为程序员提供对于托管在云服务器上相关库的完全访问权限,并允许他们部署各种功能模块,以及诸如JSON、RESTful、AMQP、SOAP等多种协议和API。
通常,微服务体系架构是通过诸如Docker之类的可执行程序包,来实现数据的容器化,并在开发人员访问某些给定的API时,按需解压缩所有的必要数据。因此,多个微服务模型可以确保运维人员通过在云平台上的各项操作,来持续部署应用程序。
不过,由于企业配置的那些闲置的微服务也会处于活动状态,因此,用户必须持续按照每个服务每天的标准为占用的容量和资源支付费用。显然这会让企业深感微服务架构价格不菲。
而无服务器的各项功能函数仅在满足了既定事件时,才会被触发。而在完成操作后,功能函数将根据用户输入的命令,执行一系列操作。也就是说,无服务器平台运用一组预处理的算法和规则,来处理计算,并得出相应的结果。可见,这会让应用程序开发人员觉得无服务器架构更有吸引力。毕竟,它是按需提供的云端执行环境的。
通过对比,我们不难发现,微服务更适合于电子商务网站等用例,它们需要优先考虑各种大型数据集的容器化。在优化开发成本和时间方面,无服务器则展示了其巨大的潜力。
此外,如果您的业务流程是基于事件的,而且您不想一直运行某些操作任务的话,那么您最好选择便是无服务器架构。它对于那些时常触发各类警报与通知的物联网驱动型应用来说尤为适用。下面,我们将进一步讨论无服务器的工作原理和各种特性。
无服务器的工作原理
作为由预配置事件驱动的开发模型,无服务器利用多种基于云端的分布式服务,来简化软件部署的工作流。通常,它能够提供如下两种互补的服务模型:
后端即服务(Backend as a Service,BaaS)
服务即服务(Function as a Service,FaaS)
其中,BaaS就是利用第三方多租户架构的功能,来增强用户应用的部署和交付效率。此类通用功能通常是以SDK或API网关的形式被提供出来,并且所有的必需操作都仅能在云中执行。因此,它为传统的本地部署架构有效地提供了代码数据。同时,此方案享有真正快速的开发周期。它能够将全部软件和基础架构的维护责任,移交给BaaS的服务提供商。此外,应用开发人员还可以随时扩展其部署的流程。
而诸如AWS Lambda之类的FaaS平台则属于事件驱动开发架构的类型。它可以通过按使用付费的模型方式,提供强大的托管服务,而且仅在预定的功能或事件被满足的情况下被触发。因此,此类激活FaaS功能的常见触发器包括:各种预定的事件、文件的上载、对存储库新的提交、电子邮件、数据库的更新、以及HTTP API的调用等。
无服务器通过将BaaS和FaaS模型相结合,帮助开发人员处理复杂的资源密集型任务,其中包括:各种托管数据、基础架构、以及业务逻辑元素等广泛的功能。
使用无服务器的好处
可设计出自动扩展的服务。通过自带的灵活性,无服务器方案可以按需扩展其计算资源和功能。相反,在访问高峰时段结束后,其支撑的云端工作环境能够针对较少的负载处理需求,进行自动收缩。
改进了部署。借助无服务器功能,程序员对于应用的开发和部署,会变得非常容易和便捷。他们不再需要考虑诸如:基础架构的维护、以及数据及时同步之类的附加方面。可见,无服务器架构的灵活性,能够使得大多数工作流程得以顺利地自动化推进。
稳定性。无服务器架构会将企业的大部分数据和基础架构管理职责转移给了云服务提供商。它释放了您团队的大量工作时间,使您不必像过去在传统的本地软件平台上那样,去关注基础设施的简化,编排和分配代码数据,以及处理停机问题。
成本效益。实际上,成本最小化才是真正能够使无服务器,在众多基于云端的解决方案中脱颖而出的原因。正如我们在前面比较过的,按使用付费的方法,有助于企业避免产生不必要的应用开发和部署费用。只有在那些预先设定的事件引发了云端相应的操作时,企业才需要为服务器的运行时间付费。
减少延迟。由于企业的所有数据资产,都被托管在基于云端的服务器上,因此无服务器能够让企业将资源分配到,最接近最终用户的那台服务器上。据此,数据的顺畅连接和互操作性,不但得到了保障,而且大幅减少了那些时间紧迫的故障和系统停机时间。
综上所述,您是不是会认为无服务架构就绝对比位服务架构好呢?不一定。在实践中,您还是需要根据自己手头业务的实际需求,通过综合比较,再做出恰当的选择。
原文标题:Serverless vs. Microservices Architecture: Is This the Future of Business Computing?,作者:Dana Kozubska
【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】