在传统的客户端-服务器应用程序中,所有基于数据的API和端点都需要开发人员实现。无服务器架构(serverless)是指依赖第三方服务运行而不是使用本地架构的企业IT基础架构。但这并不意味着不需要服务器,只是企业不需要购买、租用或配置物理服务器来运行代码而无需预先配置或管理服务器(服务提供商提供基础设施)。无服务器基础设施不必独立于基于服务器的基础设施运行,一些代码可以在服务器上运行。一个很好的例子是结合微服务和无服务器代码以使其运行的Web应用程序。后端即服务(BaaS)和功能即服务(FaaS)无服务器基础设施可以分为两个独立的类别:后端即服务(BaaS)和功能即服务(FaaS)。BaaS最初是一种移动架构(移动后端即服务或MBaaS),但已经发展到支持桌面程序,而不仅仅是移动应用程序。BaaS提供完整的在线服务,管理代码的每个部分。通常,代码会在被触发后持续运行,从而向提供商支付订阅费用。BaaS使用相同的后端服务在各种应用程序的共享基础设施上运行。提供BaaS基础架构的供应商示例包括Parse、Kinvey、Buddy、Appcelerator和StackMob。FaaS不同于BaaS,因为它只提供执行开发者设计的代码的工具。FaaS通过按需触发代码来工作,例如当某个事件发生时。这意味着您不必担心管理操作,因为它们都是自动发生的,而且运行成本非常低,只需为触发时消耗的内容付费,在几分之一秒内测量内存和CPU使用率。FaaS基础设施的示例包括AWSLambda、AzureFunctions、IBMOpenWhisk和GoogleCloudFunctions。它们都支持大多数编程语言和运行时,包括Node.js、Python、.NETCore和Java。无服务器架构实施示例无服务器基础架构并不适合所有应用程序或服务,尤其是FaaS设置的情况。因为它是为快速查询而设计的,所以它最适合实时应用程序,例如数据分析、推送通知(例如游戏应用程序、传输更新应用程序以及社交网络或消息传递程序),以及其他不经常运行的应用程序,但在事件驱动的时间间隔内,例如数据库清理。由于无服务器基础设施可以与微服务一起使用,因此还有其他应用程序可以使用此功能,包括API引导的SaaS应用程序或依赖第三方来源数据的应用程序。无服务器架构的优势除了降低前期成本和通常基于消费的支付模式外,无服务器基础设施还更易于维护,供应商管理的维护可确保它们按需启动和运行。这意味着您不必聘请工程师来管理服务器,开发人员可以专注于编写代码和创新。这也意味着企业可以更好地响应不断变化的市场条件,调整代码,而不管代码位于何处。FaaS特别提供了更多好处。例如,用户不必等待HTTP请求或API调用,因为代码仅在需要时执行。提供程序管理包括扩展在内的所有其他内容,使其成为管理资源的更简单方法。任务执行后,容器将由提供商停止服务,因此您无需为休眠容器付费。无服务器架构的缺点由于基础设施的管理依赖于提供商而不是开发人员,因此存在一些缺点。最大的问题之一是开发人员或程序员对应用程序的可见性与他们管理基础设施时的可见性不同。因此,如果代码出现中断或问题,他们可能无法立即修复。供应商锁定也是一大挑战。如果您在一项服务上设置所有内容,那么在提供商之间切换是很棘手的,有时实施的复杂性可能意味着提供支持和切换在经济上不可行。无服务器架构的其他局限性在于,由于它使用共享基础架构,因此在初始服务器请求期间可能存在一定程度的延迟,这会使应用程序显得迟缓。无服务器函数是无状态的,状态信息不能从一个函数调用传递到下一个函数调用。有些应用程序不适合Serverless架构,比如长时间运行的进程,因为FaaS的设计目的是在代码启动后销毁容器。Serverless平台虽然可以轻松满足初始部署和扩展等需求,但仍不能完全省略基础设施运维
