赞
踩
serverless是一种云原生开发模式,它允许开发人员构建和运行应用程序,而无需管理服务器。
serverless中仍有服务器,但是它们从应用开发中被抽离出来了。云供应商(cloud provider)负责处理服务器基础设施的配置、维护和扩展等日常工作。开发者可以简单地将他们的代码打包到容器中进行部署。
一旦部署,serverless应用程序就会响应需求,并根据需要自动扩大和缩小。公共云供应商提供的serverless产品通常是通过事件驱动的执行模式按需计量的。因此,当serverless功能处于闲置状态时,它不会产生任何费用。
serverless与其他云计算模式的不同之处在于,云提供商负责管理云基础设施和应用程序的扩展。serverless应用程序被部署在容器中,在被调用时自动按需启动。
在标准的**基础设施即服务(IaaS)**云计算模式下,用户预先购买容量单位,这意味着你要向公共云供应商为永远在线的服务器组件进行支付,以运行你的应用程序。用户有责任在需求旺盛的时候扩大服务器容量,并在不再需要该容量的时候进行缩减。即使在应用程序不被使用时,运行一个应用程序所需的云基础设施也是活跃的。
相比之下,在serverless架构下,应用程序只在需要时才会启动。当一个事件触发应用程序的代码运行时,公共云供应商就会为该代码动态地分配资源。当代码执行完毕后,用户就不再付费。除了成本和效率方面的优势外,serverless还将开发者从与应用扩展和服务器配置相关的常规琐碎的任务中解放出来。
有了serverless,诸如管理操作系统和文件系统、安全补丁、负载均衡、容量管理、扩展、日志和监控等常规任务都被云服务供应商负责。
我们有可能建立一个完全serverless的应用,或者一个由部分serverless和部分传统微服务组件组成的应用。
在serverless模式下,云服务供应商运行物理服务器,并代表用户动态地分配其资源,用户可以直接将代码部署到生产中。
serverless计算产品通常分为两类:后端即服务(BaaS)和函数即服务(FaaS)。
BaaS使开发者能够访问各种第三方服务和应用程序。例如,云供应商可以提供认证服务、额外的加密、云端可访问的数据库和高保真的使用数据。通过BaaS,serverless函数通常是通过应用编程接口(API)调用的。
更常见的是,当开发者提到serverless时,他们谈论的是FaaS模式。在FaaS模式下,开发者仍然编写自定义的服务端逻辑,但它是在由云服务供应商完全管理的容器中运行的。
主要的公共云供应商都有一个或多个FaaS产品。它们包括拥有AWS Lambda的亚马逊网络服务,拥有Azure Functions的微软Azure,拥有多种产品的谷歌云,以及拥有IBM Cloud Functions的IBM云,等等。
一些组织选择使用开源的serverless平台来运营自己的FaaS环境,包括红帽的OpenShift Serverless——建立在Knative项目上的Kubernetes。
函数即服务(FaaS)是一种事件驱动(event-driven)的计算执行模式,开发者编写的逻辑被部署在由平台完全管理的容器中,然后按需执行。
与BaaS相比,FaaS为开发者提供了更大程度的控制权,他们创建定制的应用程序,而不是依赖预先编写的服务库。
代码被部署到由云供应商管理的容器中。具体来说,这些容器具有以下特点:
使用FaaS,开发者可以通过API调用serverless应用,FaaS提供商通过API网关处理这些应用。
serverless架构对可以即时启动的异步、无状态应用来说,是一个理想选择。同样地,serverless也很适合那些需求不频繁、不可预测的激增的用例。
想想看,像批量处理传入的图像文件这样的任务,可能不经常运行,但也必须在大批量图像一次性传入时做好准备。
serverless应用程序也很适合涉及传入数据流、聊天机器人、计划任务或业务逻辑的用例。
其他一些常见的serverless用例是后端API和Web应用、业务流程自动化、serverless网站以及跨多个系统的整合。
作为一种在自动化基础设施上运行容器化应用的方式,Kubernetes容器编排平台是运行serverless环境的热门选择,这并不奇怪。但Kubernetes本身并没有准备好运行serverless应用程序。
Knative是一个开源社区项目,它增加了在Kubernetes上部署、运行和管理serverless应用程序的组件。
Knative serverless环境让你可以将代码部署到Kubernetes平台,如红帽OpenShift。通过Knative,你可以把你的代码打包成一个容器镜像,并把它交给系统,从而创建一个服务。你的代码只在需要的时候运行,Knative会自动启动和停止实例。
Knative由3个主要部分组成。
与早期的serverless框架不同,Knative是为部署任何现代应用工作负载而设计的——从单体应用到微服务和微小功能,无所不包。
作为一个由单一服务提供商控制的FaaS解决方案的替代方案,Knative可以在任何运行Kubernetes的云平台上运行。这可以包括在企业内部的数据中心中运行。这让企业在运行serverless工作负载时有了更多的敏捷性和灵活性。
serverless架构和FaaS的概念已经与容器和按需供应云产品的普及同步发展。451研究公司与红帽公司合作完成的一份报告,将serverless的发展分为三个阶段
serverless的 "1.0 "阶段伴随着一些限制,使其在一般计算中不太理想serverless1.0的特点是:
Kubernetes的出现迎来了 serverless 1.5 时代,许多serverless框架开始自动扩展容器。serverless 1.5 的特点是:
如今,随着集成(integration)和状态(state)的加入,serverless 2.0 时代正在出现。供应商已经开始添加缺失的部分,使serverless适用于通用的业务工作负载。serverless 2.0的特点是
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。