营销谎言:微信小程序目前并不是Serverless!

在InfoQ中文网站看到 Serverless 最佳实践:如何在两周内开发出用户量过亿的微信小程序 ,这篇营销文章很显然认为Serverless=BaaS+FaaS,BaaS是后端即服务,根据Martin Fowler网站 无服务器架构定 义:

  1. BaaS:无服务器首先用于描述显着或完全包含第三方云托管应用程序和服务的应用程序,以管理服务器端逻辑和状态。这些通常是“富客户端”应用程序 - 认为单页网络应用程序或移动应用程序 - 使用庞大的云可访问数据库生态系统(例如,Parse,Firebase),身份验证服务(例如,Auth0,AWS Cognito),以及等等。这些类型的服务以前被描述为“  后端即服务  ”,我在本文的其余部分使用  “BaaS” 作为速记。
  2. FaaS:无服务器也可以指服务器端逻辑仍然由应用程序开发人员编写的应用程序,但是,与传统体系结构不同,它在无状态计算容器中运行, 这些容器是事件触发的短暂的(可能只持续一次调用) ,并且完全由第三方。想到这一点的一种方法是“作为服务的功能”或  “FaaS” 。(注意:此名称的 原始来源  - @ marak的推文 - 不再公开。)  AWS Lambda 是目前功能即服务平台最受欢迎的实现之一,但还有很多其他也是。

关键问题是在FaaS,FaaS不同于普通API,更不同于服务或微服务,在 服务、微服务与无服务器之函数的区别? 一文中就提到,服务是一直驻留运行的,因为一直在运行,所以你要给云厂商付费,不管在运行时空闲情况如何,或者说只有一两次调用;而FaaS的函数是只在请求调用运行时付费。因此为了做到这点,这个函数是即用即加载的,有所谓热启动的问题,用完就退出内存,不再消耗云计算平台资源,这样才能实现即用即付钱;云平台厂商为了实现即用即加载,一般使用容器Docker之类加载你的函数代码,由你的客户端通过事件触发这些函数的调用。

所以,无服务器架构不只是Paas云平台,不只是BaaS,也不只是FaaS,特别是FaaS,不是普通的API的Http调用,如果真是这样,其实没有必要无服务器,现在云平台PaaS+BaaS就能实现没有后端服务器管理的美好愿望。

根据MF网站的 无服务器架构定 义,FaaS是:

  1. 从根本上说,FaaS是关于运行后端代码而无需管理自己的服务器系统或您自己的长期驻留 long-lived的 服务器应用程序。 与容器和PaaS(平台即服务)等其他现代架构趋势进行比较时,第二个子句 - 长期驻留(long-lived)的服务器应用程序是一个关键的区别 。( FaaS不是长期驻留的普通API
  2. FaaS产品不需要对特定框架或库进行编码。FaaS函数是语言和环境的常规应用程序。例如,AWS Lambda函数可以在Javascript,Python,Go,任何JVM语言(Java,Clojure,Scala等)或任何.NET语言中实现“第一类”。但是,您的Lambda函数还可以执行与其部署工件捆绑在一起的另一个进程,因此您实际上可以使用任何可以编译为Unix进程的语言(请参阅本文后面的Apex)。
  3. 部署与传统系统有很大不同,因为我们没有自己运行的服务器应用程序。在FaaS环境中,我们将功能的代码上传到FaaS提供商,提供商执行配置资源,实例化VM,管理流程等所需的一切。
  4. 水平扩展是完全自动的,弹性的,并由提供者管理。如果您的系统需要并行处理100个请求,则提供商将处理该请求而无需您进行任何额外配置。执行功能的“计算容器”是短暂的,FaaS提供者创建和销毁它们完全由运行时需求驱动。最重要的是,使用FaaS  ,供应商可以处理所有底层资源配置和分配  - 用户根本不需要集群或VM管理。
  5. FaaS中的函数通常由提供程序定义的 事件类型触发 。使用Amazon AWS,此类刺激包括S3(文件/对象)更新,时间(计划任务)以及添加到消息总线(例如, Kinesis )的消息。
  6. 大多数提供程序还允许触发函数作为对入站HTTP请求的响应; 在AWS中,通常通过使用API​​网关来实现这一点。我们在Pet Store示例中使用API​​网关进行“搜索”和“购买”功能。函数也可以通过平台提供的API直接调用,无论是在外部还是在同一个云环境中,但这是一种相对不常见的用法。
我来评几句
登录后评论

已发表评论数()

相关站点

+订阅
热门文章