无服务器体系结构的缺点


无服务器架构指的是非常依赖于第三方服务(称为后端即服务或“BaaS”)或运行在临时容器中的定制代码(功能即服务或“FaaS”)的应用程序,目前最著名的供应商主机是AWS Lambda。

尽管名称如此,但实际上并不涉及在没有服务器的情况下运行代码。之所以使用“无服务器计算”这个名称,是因为拥有系统的企业或个人不必购买,租用或提供服务器或虚拟机以供后端代码在其上运行。

博客中解释的无服务器解决方案"The Comprehensive Guide to Serverless Architecture"包括API网关,FaaS层(AWS Lambda),对象存储(S3),用户身份验证和数据库。

serverless App
















无服务器代码可以与以传统服务器风格编写的代码(如微服务)结合使用。例如,web应用程序的一部分可以编写为微服务,而另一部分可以编写为无服务器代码。或者,可以编写一个完全不使用任何配置服务器的应用程序,这是完全无服务器的。

FaaS提供了一个平台,允许开发人员执行代码以响应事件,而无需构建和维护基础设施的复杂性。第三方应用程序或服务将管理服务器端逻辑和状态。

无服务器计算的缺点

1.由于第三方API系统造成的问题

供应商控制,多租户问题,供应商锁定和安全问题是由于使用第三方API而引起的一些问题。在实现API时放弃系统控制可能导致系统停机,强制API升级,功能丢失,意外限制和成本更改。在其他云计算框架中也可以看到多租户问题。由于其多租户云结构,Salesforce(PaaS)施加了调控器限制,开发人员在使用Salesforce时必须避免一些错误。多租户解决方案可能存在安全性,健壮性和性能方面的问题。

2.缺乏操作工具

开发人员依赖于供应商提供调试和监视工具。调试分布式系统很困难,通常需要访问大量的相关度量来识别根本原因。

3.架构复杂性

决定功能应该是多小(粒度),需要时间来评估,实现和测试。应用程序调用函数的数量应该保持平衡。管理太多的函数会变得很麻烦,忽略粒度将最终导致创建小型整体。

目前,AWS Lambda限制您可以对所有Lambda运行多少个并发执行。这里的问题是,这个限制横跨您的整个AWS帐户。一些组织使用相同的AWS帐户进行生产和测试。这意味着,如果组织中的某个人做了一个新类型的负载测试,并开始尝试执行1,000个并发Lambda函数,您将意外地拒绝服务(DoS)您的生产应用程序。

4.执行方面的缺陷

无服务器应用程序的集成测试非常困难。与无服务器FaaS的集成单元(即每个功能)比与其他体系结构的集成单元小得多,因此,与使用其他体系结构样式相比,我们更依赖于集成测试。与部署,版本控制和打包相关的问题也存在。您可能需要为整个逻辑应用程序中的每个功能单独部署一个FaaS工件。这还意味着您不能原子式地部署一组函数,并且没有版本化应用程序的概念,因此原子回滚不是一个选项。您可能需要关闭触发函数的任何事件源,部署整个组,然后重新打开事件源。