目录

什么是serverless

在国内,serverless 通常被称呼为「无服务计算」,其实我们了解完serverless后,并不会认为这个翻译足够准确。serverless 不是一种具体的框架、代码库或者工具集,serverless是一个为了减轻开发者的服务运营与运维成本而提出来的一套理论思想

通俗点片面点,我们可以认为serverless就是让开发者只关心业务编码,并把代码放到serverless空间上,配置下即可运行,不需要关心服务器、系统、软件服务编译安装配置、负载均衡、缓存等等运维方面的事,serverless负责提供代码运行环境,开发者负责业务编码即可。

为了进一步更本质更简洁的理解,业界对 serverless 有一种结合云计算行业的定义方式:

serverless = FaaS + BaaS

BaaS: Backend as a Service, 后端即服务。比如我们常用的阿里云、腾讯云上的消息队列服务、缓存服务、数据库服务、存储服务等。

FaaS:Function as a Service,函数即服务。FaaS是最近几年推出的一个新的更新粒度的服务,比如最早AWS提出的Lambda,后来google的Clound Functions,腾讯云的SCF(serverless clound function)

serverless的好处

  • 低成本

    运营成本,serverless将用户的服务器,数据库,中间件委托于BaaS/FaaS,用户将不再参与基础设施及软件的维护,尤其在大规模的集群运营上成本大幅度降低。开发成本,对比IaaS或者PaaS平台的服务器或者操作系统,serverless的架构中,用户操作的是服务化的组件比如存储服务,授权服务等,可以缩短开发周期,降低开发难度。

  • 按需计费

    serverless/FaaS区别于IaaS/PaaS预先分配计算资源的计费方式,其计费方式通常是按请求次数及运行时间,一方面可以最大程度利用资源,另一方面真正的按需计费可以降低用户的资源成本。

  • 高扩展

    serverless架构一个显而易见的优点即:横向扩展是完全自动的、有弹性的、且由服务提供者所管理。

  • 绿色计算

    商业和企业数据中心的典型服务器仅提供不到一半的平均最大处理能力的输出,本质上这是对社会资源的一种浪费。而在serverless架构下,提供商将提供更细粒度的计算能力,最大限度满足实时需求,资源利用率将大幅度提升,可以认为相对IaaS与PaaS serverless/FaaS是一种 “绿色” 计算。

  • NoOps

    运维的发展经历了人工运维,自动化运维,DevOps,而serverless带来一种新的运维模式,这种模式下用户需要管理的只有代码,不用太关心运维上的管理。

什么是云开发

目前国内讲的云开发,大多是腾讯云的云开发,看看腾讯云如何定义云开发的:

云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为开发者提供高可用、自动弹性扩缩的后端云服务,包含计算、存储、托管等 serverless 化能力,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用、Flutter 客户端等),帮助开发者统一构建和管理后端服务和云资源,避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。

基于云开发的能力,开发者只需要关注自己的核心业务逻辑,后台服务的可用性、可靠性、故障处理恢复等其它分布式难题全部交给云开发来应对。

云开发涉及微信生态的登录授权、数据库服务、云存储、云函数、静态网站托管、短信服务、风控监控等。

支持小程序开发、web应用托管、后端服务托管等

云开发的好处

  • 从微信生态出发的开发方式

    微信生态覆盖广泛的用户群体,任何团队都不轻易忽视的生态圈。微信生态包含的产品种类很多,有微信公众号、朋友圈、小程序、企业微信、微信支付、视频号、小游戏、电商等,而云开发就是从微信生态出发,也就是云开发是为微信生态而生的一种开发模式。

    微信生态的产品有统一的账号登录体系,而云开发除了在打通微信身份认证体系做足了功课外,还内置了微信生态下的大部分开放服务接口,比如客服消息、动态消息、订阅消息、微信支付、内容安全、物流助手等等。这让用云开发来实现小程序、微信公众号的消息推送、公众号H5页面、微信支付等变得更加简洁轻便。

  • 不只是微信生态,还支持跨端统一开发

    云开发提供各类前端应用的SDK以及多种编程语言的SDK,支持小程序、Web、Flutter等多个平台,能够让开发者轻松开发多端应用。

    我们可以使用云函数来运行所有终端的后端代码,而使用各类前端应用的SDK在调用数据库、云函数以及云调用的拓展能力等时,具有一致性的API,因此进行多端开发,功能依然强大,而学习成本更低。

  • 开发与使用成本相对更低

    从开发成本角度看,在使用云开发中,开发者不用关心后端服务的搭建与运维,只专注于业务编码,效率更高,对于中小团队来说可以快速验证产品的可行性,以及快速迭代。

    从使用成本角度看说,serverless服务支持弹性扩缩容,可以从容应对突发流量,不再惧怕高并发问题,而在项目开发、测试与发布的初期又可以把使用成本降到最低,做到真正的按需付费。云开发在资源使用上,采用的是按量计费,相比于传统服务器、云服务,云开发的付费粒度更小、更精确。

serverless和云开发有什么区别

首先我们要清楚serverless是个理念,云开发是个开发模式,云开发可以说是serverless的一种开发模式。什么是云开发

serverless有哪些不好的地方

  • serverless服务商初期存在试验性
  • 相关开发IDE或插件等还在完善中
  • 需要重新学习不同serverless服务商的serverless服务开发、管理
  • serverless开发流程、协同不够成熟
  • 对原有团队资源与开发方式是一种挑战
  • 公司隐私与数据安全
  • 容易局限于某个服务商
  • 担心serverless管理后台是否稳定可靠

云函数是什么

云函数在腾讯云叫SCF,serverless clound function。阿里云有相似的云函数叫FC(函数计算),function compute。

腾讯云云函数(serverless Cloud Function,SCF)是腾讯云为企业和开发者们提供的无服务器执行环境,帮助您在无需购买和管理服务器的情况下运行代码, 是实时文件处理和数据处理等场景下理想的计算平台。 您只需使用 SCF 平台支持的语言编写核心代码并设置代码运行的条件,即可在腾讯云基础设施上弹性、安全地运行代码。云函数 产品概述 - 产品简介 - 文档中心 - 腾讯云

阿里云函数计算(Function Compute)是一个事件驱动的全托管 serverless 计算服务,您无需管理服务器等基础设施,只需编写代码并上传,函数计算会为您准备好计算资源,并以弹性、可靠的方式运行您的代码。函数计算FC_无服务器计算_serverless_容器与中间件-阿里云

通过腾讯云的SCF和阿里云的FC介绍,我们大概知道云函数就是一个可执行的代码片段,就可以直接在云函数服务商平台上直接运行,开发者不用关心运行环境,甚至不关心相关计算资源,开发者只关心这个函数是否可以正确执行。

BaaS与FaaS是什么

前面我们说serverless可以定义为:serverless = FaaS + BaaS

那更BaaS与FaaS是如何发展而来的?

云计算的发展从IaaS,PaaS,SaaS,到最新的BaaS,FasS,在这个趋势中serverless越来越明显,Serveless的完善将会给云计算带来天翻地覆的变化。

让更多人可以参与到计算开发中,让更多传统企业能更高效更及时地智能化,让更多云计算成为未来工作、生活必不可少的基本。

  • IaaS

    IaaS(Infrastructure as a Service) 基础设施即服务,IaaS服务商提供底层/物理层基础设施资源(服务器,数据中心,环境控制,电源,服务器机房),用户需要通过IaaS提供的服务平台购买虚拟资源,选择操作系统,安装软件,部署程序,监控应用。

  • PaaS

    Platform as a Service平台即服务,服务商提供基础设施底层服务,提供操作系统(Windows,Linux)、数据库服务器、Web服务器、负载均衡器和其他中间件,相对于IaaS客户仅仅需要自己控制上层的应用程序部署与应用托管的环境。

  • SaaS

    Software as a Service软件即服务, 服务商提供基于软件的解决方案,如OA、CRM、MIS、ERP、HRM、CM、Office 365、iCloud等,客户不需考虑任何形式的专业技术知识,只需要通过服务商平台注册或购买,获取软件服务并使用。

  • BaaS

    Backend as a Service后端即服务,服务商为客户(开发者)提供整合云后端的服务,如提供文件存储、数据存储、推送服务、缓存服务、消息队列服务等功能,以帮助开发者快速开发应用。开发者甚至都不关心这些服务背后的操作系统、软件、中间件、环境等。

  • FaaS

    Function as a Service函数即服务,服务商提供一个平台,允许客户开发、运行和管理应用程序功能,而无需构建和维护基础环境。 可以看成FaaS结合BaaS实现serverless服务思想,FaaS实现业务逻辑调度,BaaS完成数据存储、服务计算等数据处理服务。

总之Faas+BaaS进一步的解放团队,降本提效。

这里有感于科技的进步,到底有利于谁了?AI客服为公司降本提效,让人工客服岗位大幅度减少;AI监控为公司降本提效,让保安岗位减少;智能停车场为公司降本提效,让看门大爷回家了;自动化机械及AI机器,让工厂降本提效,减少了工人岗位;机器深度学习,让数据分析更加高效准确,让数据分析岗位减少;serverless优于AI Ops,让公司降本提效,让人工运维岗位减少;未来的低代码,进一步减少人工编码岗位。

按理说社会进步,社会分工会越来越细,科技进步竟然减少了岗位,甚至会消灭部分社会分工。

李开复老师在《AI未来》里提到,AI不会代替人类,AI应该代替人类的工种岗位,解放全人类,让人类拥有更多资源和时间去爱与享受爱,但大部分人通过AI获得了更多资源和时间了吗?是谁获得了更多资源和时间?

云开发可以代替后端吗

前面我们已经介绍了什么是云开发。很明确的结论:云开发不是用来代替后端开发的。

云开发模式可以让后端开发够简单,比如腾讯云与微信生态的合作,完全不需要像传统开发方式,经过第三方服务器做验证,可以直接与微信服务进行交互,开发更简单,服务更高效。

这里说代替,有点牵强,因为云开发本身也是有后端服务的,比如云函数,这些也大多是我们常说的后端服务,只是这些后端服务,现在我们可以叫做远端服务计算,终端可以像调用本地函数方法一样调用远端服务计算,而有了云开发与云函数,开发者以前的后端服务实现,可以通过云函数来实现,而云函数,支持各种语言,有nodejs、php、java、go、Dart等。

不说代替,应该说换个方式实现后端服务。如果说后端还包含运维的话(看看小团队的技术领导们,经常是开发、管理,兼职运维),那就算是代替吧。

serverless服务商

  • AWS
  • Google Clound
  • Azure
  • IBM
  • 腾讯云
  • 阿里云

最后

云开发,让开发者所有代码都在本地编写,不论是终端编码还是服务端编码,甚至以后都不叫终端代码和服务端代码,换个叫法,调用方代码与服务计算代码(云函数之类),云开发服务商会为开发者上传、保存并部署服务计算代码,开发者在终端(调用方)编码过程中,调用服务计算时,并不关心,调用哪里的服务计算,采用什么方式调用远程云函数,采用什么协议等,开发者像调用本地函数一样调用服务计算(云函数),剩下的比如云函数如何执行生效,性能、安全、并发等都是云函数服务商的事。

目前在个人使用腾讯云开发管理后台的感受就是:功能都有,就是总感觉磕磕碰碰。不知道是云开发控制后台前端js的问题,还是云开发底层逻辑问题?