FaaS
FaaS
FaaS 的理念是,诸如亚马逊之类的云提供商甚至是诸如 Fission.io 或 funktion 之类的本地软件都可以提供服务,其中用户可以请求远程运行的功能以执行非常特定的任务。功能结束后,这些结果将返回给用户。不维护任何服务或有状态数据,并且用户将功能代码提供给运行该功能的服务。
无服务器架构的优势在于,不需要配置虚拟机和/或容器来构建利用 FaaS 的应用程序部分。一旦它们的功能结束,运行这些功能的计算实例从用户的角度来看就不再存在。此外,需要由用户监控和维护的微服务和/或容器的数量减少,节省了成本、时间和精力。
无服务器架构为软件工程师和架构师提供了另一种功能强大的软件构建工具,可用于设计灵活且可扩展的软件。已知的 FaaS 有 Amazon 的 AWS Lambda、Microsoft 的 Azure Functions、Google 的 Cloud Functions 等。
缺陷
与微服务和云原生应用程序类似,无服务器架构并不适用于所有场景。FaaS 提供的功能本身并不保持状态,这意味着在编写功能代码时需要特别注意。这与全微服务不同——开发人员可以完全控制状态。尽管有这种限制,但在 FaaS 的情况下保持状态的一种方法是将状态传播到数据库或像 Redis 这样的内存缓存。
这些功能的启动时间并不总是很快,因为要有时间分配给 FaaS 服务提供商发送请求,然后在某些情况下启动运行该功能的计算实例也需要时间。在设计无服务器应用程序时必须考虑这些延迟。FaaS 不像微服务那样持续运行,这使得它们不适合任何需要持续运行软件的任务。
无服务器应用程序具有与其他云原生应用程序相同的限制,其中应用程序从一个云提供商到另一个云提供商,或从云到本地环境的可移植性因供应商锁定而变得具有挑战性。