它可以使开发者在构建和运行应用的时候不用关心服务器等基础设施,降低构建应用的成本,其部署和运行的基本单位是函数。
用户只需要为自己实际使用的资源买单,这些代码完全是 事件驱动,平台根据请求来平行调整服务资源,拥有近乎无限的扩容能力, 空闲时没有资源在运行,代码运行无状态,可以让应用快速迭代,极速部署。
其最终目标就是让开发者更加关注其业务代码本身,无需浪费太多时间在其他地方。
定义无服务器Serverless的基本原则:
-
只关注自己的代码,无需重复构建服务器.,环境等基础设施。
-
支持云端调用,无状态计算,时间驱动,API调用,开放源代码。
-
保持代码轻量,简洁。
-
没有实例,服务器,或者容器概念。
-
将客户满意作为开发工程的重中之重。
-
提供最大限度的服务选择自由。
-
关注产品目标和技术可复用。
-
在编写代码之前进行必要的配置。
-
拥有构建架构的完整生命周期。
-
全新的应用部署。
应用场景
1.具有自动伸缩扩容能力,serverless的网站和应用程序无需构建基础环境,可直接编写和部署。其后端会根据需求自动扩容,不用担心流量激增带来的服务器崩溃。
2.可以pub/sub topics或事件日志触发ServerLess函数计算,从而提供灵活可扩展的事件,无需维护复杂的集群。这些事件流可以为你提供更加完善的分析策略。 包括数据存储和缓存监视系统。
3.图像和视频处理
3.1——serverless可以架构应用程序的图像和视频服务。可以使用serverless服务来执行动态调整图像大小或更改不同目标设备的视频转码等操作。
3.2——借助Serverless,您可以使用腾讯云银行卡识别的OCR API或慧眼的活体检测。可以自动处理和重新格式化用户上传的图像, 或者将它们调整为特定的缩略图尺寸。
4.事件处理和SAAS平台:如今应用程序具有很强的模块化,他们利用了大量的第三方SaaS提供商(GitHub等)的软件来交付功能。serverless允许为 这些事件做订阅,不管他们在哪个平台托管,使用webHook检测功能来自动化GitHub工作流。
5.多语言应用,serverless允许通过不同语言来进行应用部署,新语言可以应用于新服务,同时也可以跟旧服务进行数据回调。
6.持续集成和持续部署(CI\CD) 快速迭代对于软件来说是很重要的,CI/CD允许每天上传错误修复和其他更新。代码上传完成后,serverless会自动进行重新构建和部署,将很多这种过程自动化。
Docker
Docker将软件打包到标准的Docker中,以便管理应用的依赖性和避免环境冲突,他是一个服务器的完整体系结构,可以在其中运行VM实例集群,并且具有类似的
服务器成本。
Serverless相当于临时的容器,部署在上面的应用程序实际是零管理的,可根据需求自动扩展。Serverless以代码为中心,并且具有其他计算方式不具备
的优势,例如按量计费。
Zappa、Claudia.js
Python web应用部署服务的框架Zappa和Node web应用部署服务的框架Claudia.js都可以针对其特定的用例来部署Serverless服务的应用程序。
Serverless框架是用来部署和管理无服务器应用的更通用工具,不仅可以部署python和node web应用,还可以配置应用程序所需要的基础结构,
如数据库、队列和对象存储等,还可以构建多种类型的应用程序,如事件流和图像处理等。
总结一下Serverless的四个特征:
1.零管理:极速部署,没有过多的前置准备工作,没有集群、实例甚至操作系统的概念
2.自动扩缩容,根据访问请求流量自动调整服务器资源。
3。按使用计费:没有运行时不消耗资源,通过函数来执行服务,可以更大程度利用资源,避免不必要的消耗。
4.敏捷开发,缩短应用部署和维护周期,减小除业务代码外的运维成本。
具体实例
npm i -g serverless
npm update -g serverless
安装完毕后直接通过serverless命令创建一个新的serverless服务。
Serverless Components
是支持多个云资源编排和组织的场景化解决方案,主要基于客户的具体场景,如 Express 框架支持、网站部署等。 Serverless Components 可以有效简化云资源的配置和管理,将网关、COS 和 CAM 等产品联动起来,让客户更多关注场景和业务。
serverless components具有以下优势特性:
快速部署 - Components 支持极速部署 Serverless 架构和应用
全面覆盖 - 既能支持基础设施的 Components,也可以支持更高维度的,场景级别的 Components。
轻松复用 - 你构建的每个 Component 都可复用,并且对外发布后,也可以支持他人使用。
灵活组合 - 可以通过 YAML 或者 Javascript 灵活组合不同的 Components
# serverless.yml
name: website
website:
component: '@serverless/tencent-website'
inputs:
code:
src: ./src
# hook: npm run build
# domain: www.serverlesscomponents.com
快速构建 REST API
通过 Serverless SCF 组件快速构建一个 REST API 应用,实现 GET/PUT 操作。
serverless create --template-url https://github.com/serverless/components/tree/v1/templates/tencent-python-rest-api
部署 Serverless 全栈 WEB 应用(Vue.js)
本示例以 Vue 为前端,Express 框架作为后端,通过多个 Serverless Components 部署 Serverless 全栈应用程序。
serverless create --template-url https://github.com/serverless/components/tree/v1/templates/tencent-fullstack-vue-application
通过多个Serverless components部署serverless全栈应用,利用后端Api和前端vue.js结合。
项目主要包括:
serverless REST API:由SCF和腾讯API gateway提供相关能力,帮助开发者构建自己的结构和路由。
serverless Vue.js:由腾讯云对象云存储(COS,Cloud Object Storage)提供相关存储能力,通过api传递至前端,vue.js渲染
应用结构图:

serverless create --template-url https://github.com/serverless/components/tree/v1/templates/tencent-fullstack-vue-application
cd template
cd dashboard
npm i
cd api
npm i
cd ..
serverless
期间可能需要扫描命令行中的二维码进行腾讯云的登录
部署完毕后,可以访问命令行中dashboard对应的url查看应用。
初次部署完成后,可通过cd dashboard & npm run start在本地运行服务,并与后端腾讯云服务进行通讯。