什么是serverless?

一、概述

serverless是一种云原生开发模式,它允许开发人员构建和运行应用程序,而无需管理服务器。

serverless中仍有服务器,但是它们从应用开发中被抽离出来了。云供应商(cloud provider)负责处理服务器基础设施的配置、维护和扩展等日常工作。开发者可以简单地将他们的代码打包到容器中进行部署。

一旦部署,serverless应用程序就会响应需求,并根据需要自动扩大和缩小。公共云供应商提供的serverless产品通常是通过事件驱动的执行模式按需计量的。因此,当serverless功能处于闲置状态时,它不会产生任何费用。

二、serverless架构概述

serverless与其他云计算模式的不同之处在于,云提供商负责管理云基础设施和应用程序的扩展。serverless应用程序被部署在容器中,在被调用时自动按需启动。

在标准的**基础设施即服务(IaaS)**云计算模式下,用户预先购买容量单位,这意味着你要向公共云供应商为永远在线的服务器组件进行支付,以运行你的应用程序。用户有责任在需求旺盛的时候扩大服务器容量,并在不再需要该容量的时候进行缩减。即使在应用程序不被使用时,运行一个应用程序所需的云基础设施也是活跃的。

相比之下,在serverless架构下,应用程序只在需要时才会启动。当一个事件触发应用程序的代码运行时,公共云供应商就会为该代码动态地分配资源。当代码执行完毕后,用户就不再付费。除了成本和效率方面的优势外,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)

函数即服务(FaaS)是一种事件驱动(event-driven)的计算执行模式,开发者编写的逻辑被部署在由平台完全管理的容器中,然后按需执行。

与BaaS相比,FaaS为开发者提供了更大程度的控制权,他们创建定制的应用程序,而不是依赖预先编写的服务库。

代码被部署到由云供应商管理的容器中。具体来说,这些容器具有以下特点:

  • 无状态,使数据整合更简单。
  • 短暂的,允许它们在很短的时间内运行。
  • 事件触发的,所以它们可以在需要时自动运行。
  • 完全由云供应商管理,因此你只需为需要的东西付费,而不是为永远在线的应用程序和服务器付费。

使用FaaS,开发者可以通过API调用serverless应用,FaaS提供商通过API网关处理这些应用。

五、serverless使用案例

serverless架构对可以即时启动的异步、无状态应用来说,是一个理想选择。同样地,serverless也很适合那些需求不频繁、不可预测的激增的用例

想想看,像批量处理传入的图像文件这样的任务,可能不经常运行,但也必须在大批量图像一次性传入时做好准备。

serverless应用程序也很适合涉及传入数据流、聊天机器人、计划任务或业务逻辑的用例。

其他一些常见的serverless用例是后端API和Web应用、业务流程自动化、serverless网站以及跨多个系统的整合。

六、Knative与serverless Kubernetes

作为一种在自动化基础设施上运行容器化应用的方式,Kubernetes容器编排平台是运行serverless环境的热门选择,这并不奇怪。但Kubernetes本身并没有准备好运行serverless应用程序。

Knative是一个开源社区项目,它增加了在Kubernetes上部署、运行和管理serverless应用程序的组件。

Knative serverless环境让你可以将代码部署到Kubernetes平台,如红帽OpenShift。通过Knative,你可以把你的代码打包成一个容器镜像,并把它交给系统,从而创建一个服务。你的代码只在需要的时候运行,Knative会自动启动和停止实例

Knative由3个主要部分组成。

  • Build —— 一种将源代码构建到容器中的灵活方法。
  • Serving —— 通过一个基于需求的工作负载服务的请求驱动模型,实现容器的快速部署和自动扩展。
  • Eventing —— 一个用于消费和生产事件以刺激应用程序的基础设施。应用程序可以由各种来源触发,例如来自你自己的应用程序、来自多个供应商的云服务、软件即服务(SaaS)系统和红帽AMQ流的事件。

与早期的serverless框架不同,Knative是为部署任何现代应用工作负载而设计的——从单体应用到微服务和微小功能,无所不包。

作为一个由单一服务提供商控制的FaaS解决方案的替代方案,Knative可以在任何运行Kubernetes的云平台上运行。这可以包括在企业内部的数据中心中运行。这让企业在运行serverless工作负载时有了更多的敏捷性和灵活性。

七、serverless计算的优缺点

优点

  • serverless计算可以提高开发人员的工作效率,降低运营成本。通过将配置和管理服务器的常规任务交给云供应商,开发人员有更多时间专注于他们的应用程序。
  • serverless计算有助于实现DevOps的采用
  • 通过纳入第三方BaaS产品的整个组件,可以进一步简化应用开发
  • 在serverless模式下,运营成本会降低,因为你可以在需要时为基于云的计算时间付费,而不是一直运行和管理自己的服务器。

缺点

  • 不运行自己的服务器或控制自己的服务器端逻辑会存在缺陷。
  • 云供应商可能对其组件的交互方式有严格的限制,这反过来又影响了你自己的系统的灵活性和定制化程度。在BaaS环境的情况下,开发者可能会受制于那些代码不受他们控制的服务。
  • 放弃对IT堆栈的这些方面的控制也会使您陷入被厂商锁定的境地。决定更换供应商还可能带来升级系统以符合新供应商规范的成本。

八、serverless的演变

serverless架构和FaaS的概念已经与容器和按需供应云产品的普及同步发展。451研究公司与红帽公司合作完成的一份报告,将serverless的发展分为三个阶段

serverless的 "1.0 "阶段伴随着一些限制,使其在一般计算中不太理想serverless1.0的特点是:

  • HTTP和少数其他资源
  • 只提供函数
  • 执行时间有限(5-10分钟)
  • 没有协调性
  • 本地开发经验有限

Kubernetes的出现迎来了 serverless 1.5 时代,许多serverless框架开始自动扩展容器。serverless 1.5 的特点是:

  • Knative
  • 基于Kubernetes的自动扩容
  • 微服务和函数
  • 易于在本地进行调试和测试
  • 多语言和可移植性

如今,随着集成(integration)和状态(state)的加入,serverless 2.0 时代正在出现。供应商已经开始添加缺失的部分,使serverless适用于通用的业务工作负载。serverless 2.0的特点是

  • 基本的状态处理
  • 使用企业集成模式
  • 先进的消息传递能力
  • 与企业PaaS相融合
  • 企业就绪的事件源
  • 状态和集成

什么是serverless?相关推荐

  1. 一键部署dns服务_OpenShift : 通往云原生、DevOps、微服务和Serverless的大门

    新书速递 查尔斯·狄更斯的<双城记>中有句耳熟能详的名言:"这是一个最好的时代,也是一个最坏的时代."作为技术从业者,在这个数字化浪潮和技术变革接连发生的时代,我对这句 ...

  2. 二:serverless网站数据库操作

    操作数据库API文档 第一篇,搭建一套免费的serverless网站 一,创建集合,进入控制台 登录腾讯云后台 打开云开发控制台 可以新建集合,新建集合后点击集合名称即可批量导入导出数据库集合的数据, ...

  3. 一:搭建一套免费的serverless网站

    因为公司需求,需要快速搭建一个公司内部能够访问的资源查看管理的 PC网站,因为没有服务器,没有后端开发,又要快速上线使用,那么 serverless 就成了我的首选方案,下面从零开始搭建. 步骤一. ...

  4. 现在,Serverless 真的已经成熟了吗?

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 作者 | Justin Etheredge 策划 | Ti ...

  5. 图解 Serverless!秒懂!

    作者 | 江昱(阿里云 Serverless 产品经理) 抛砖引玉:从云计算到 Serverless 2009 年,UC Berkeley发表了:Above the Clouds: A Berkele ...

  6. Serverless 下的微服务实践

    作者 | 弈川 微服务架构介绍 微服务架构诞生背景 在互联网早期即 Web 1.0 的时代,当时流行的是单体应用,研发团队比较小,主要是外部网页,然后新闻门户等:到了新世纪的互联网时期 Web 2.0 ...

  7. Serverless 在大厂都怎么用?

    点击可观看精彩演讲视频 主持嘉宾: 中国信息通信研究院 云计算部副主任.腾讯云TVP,陈屹力 圆桌嘉宾: - Amazon Web Services 首席开发者布道师,费良宏 - 阿里集团 Serve ...

  8. Serverless:微服务架构的终极模式(文末赠书)

    微服务的生态和实践已经比较成熟,其设计方法.开发框架.CI/CD工具.基础设施管理工具等,都可以帮助企业顺利实施微服务.然而,微服务远没有达到完美,它在架构.开发.基础设施方面仍然面临新的挑战. 微服 ...

  9. 微服务和 Serverless 如何强强联合?

    导语 |  微服务与 Serverless 被不少开发者称为"天作之合",在当前的微服务体系中,Serverless 的定位是什么?Serverless 在微服务分布式应用中又是如 ...

  10. Serverless 时代下大规模微服务应用运维的最佳实践

    微服务架构的优点和痛点 Aliware 1 微服务架构的诞生背景 回到互联网早期时代,也就是web1.0时代,当时主要是一些门户网站,单体应用是当时的主流应用,研发团队相对较小,这时候的挑战在于技术的 ...

最新文章

  1. 2018.9.8-9.8 统计学课程笔记(2)-参数统计
  2. 趋势修改服务器地址,趋势客户端修改连接服务器
  3. 外部电源、锂电池供电自动切换并自动给电池充电的电路
  4. 软件java技术论文_java技术论文
  5. php软件开发--redis操作
  6. 基于JAVA+Swing+MYSQL的宿舍管理系统
  7. 数据/方法论固然重要,但人为分析更有价值!
  8. 阶段1 语言基础+高级_1-3-Java语言高级_07-网络编程_第3节 综合案例_文件上传_4_综合案例_文件上传案例阻塞问题...
  9. linux下的rpm命令详解,RPM包命令详解
  10. 95后大厂程序员删库被判刑,只因项目被接手对领导心生不满
  11. IconFont使用方式简介
  12. GeoServer中使用SLD样式
  13. Python爬取哔哩哔哩实时直播弹幕
  14. 【外文翻译】外国友人写得很不错的Java Lambda表达式入门教程,我终于翻译好给大家啦!!!...
  15. 景深与图像清晰的关系
  16. Python+阿里云DNS 搭建DDNS动态域名解析
  17. 2.6 修饰符的位置
  18. 大数据之路—— 事实表设计
  19. CSS餐厅小游戏练习1~32关(附答案和链接)
  20. cfa的pv怎么用计算机算,CFA一级考试标配计算器使用功能详解

热门文章

  1. collapse在PHP中是什么意思,在PHP中全面禁止SQL注进式攻击之二
  2. Pytorch使用CRNN CTCLoss实现OCR系统
  3. 提高监测精度轧钢测径仪
  4. pdfFactory怎么合并PDF
  5. 第三天:基础入门-抓包封包协议APP小程序PC应用WEB应用
  6. IDEA TOMCAT设置UTF-8编码
  7. 超级计算机通信工程研发相关高校,美国留学签证十大常见拒签理由
  8. 果园机器人作文开头_果园机器人作文200
  9. 黑莓手机的一些小技巧
  10. 我们常用的图片格式到底有什么区别?