【技术创作101训练营】Serverless,仅需几十秒上云的新体验

2021-01-20 15:14:36 浏览数 (1)

前言

在阅读《云 社区2020年度征文活动》的示例文章了解到了《技术创作101训练营》第一季的活动,遗憾当初并不知情于是找遍全网把录播给补完了

时隔几个月之后看到了这次第二季的活动,想着绝对不能错过,万万没想到的是偏偏那个周六还得上班(老社畜提前春节串假)

于是又变成只能去补回放的状况了(再放送),错过直播提问和好礼(血亏

虽然自认为第二季的作业难度要比第一季的大,演讲稿自己也从没写过,但是想着这是未来避免不了会经历的于是还是给写完了

希望“百万粉丝天团”各位大佬们阅读后能给出些许建议,也算是对这个作业的反馈了


作业:PPT

演讲稿.pptx

作业:演讲文稿

开场

各位,下午好。我是远哥制造,这个全网唯一 ID 是高中时创建的,并一直沿用至今。虽然那时候是做好了觉悟命名的,但是现在看起来确信是黑历史了

因此,可以通过搜索引擎在各个地方找到我,欢迎关注 一键三连

今天,给大家分享的内容是 Serverless 。从 19 年接触 Serverless 开始到现在,给 Serverless 中文社区投过两次稿件

对于 Serverless 自己也有了一定的认识,并实践过从零编写音游差分器应用并部署上云。演讲大约耗时半个小时,主要分为如下几个方面:

1, WHAT :什么是 Serverless

2, WHY :为什么要使用 Serverless

3, HOW :如何使用 Serverless

4,亲自实践使用的经历和感想

1, WHAT :什么是 Serverless

Serverless ,翻译为「无服务器架构」是一种软件系统设计架构思想,并不是一个开发框架或者工具

这个词大概最开始出现于 2012 年 Ken Fromm 的 Why The Future Of Software And Apps Is Serverless 文章之中

然后 2014 年 AWS Lambda 发布,之后就开始变得流行起来了……这里说的无“服务器”,并不是真的没有了它,而是使用者无需考虑它的相关内容

比如硬件 CPU 、 RAM 和 NET 等的挑选以及软件操作系统的安装升级备份等运维相关的事情

它的出现是为了让开发者更加关注业务的开发,并将繁杂的运维和部署交给云厂商

那么没有服务器,它是如何让应用程序运行起来的呢?—— Serverless 由 Faas (函数即服务, Function as a Service FaaS )和 Baas (后端即服务, Backend as a Service BaaS )组成

简单来讲, Faas 为开发者提供业务运算环境,然后与 Baas 提供的数据和存储服务进行交互

拿腾讯云的 Serverless Framework 来举例:

① FaaS ,对于具体的产品就是 SCF (云函数)了,是作为提供计算能力的组件,只需上传核心业务代码,就能在对应的运行时环境中跑起来了,至于触发运行、流量分发、伸缩扩容等能力全部由平台提供。它是一种对服务器计算资源的抽象化,是对计算资源形态的重定义,并降低了上云的门槛

② BaaS ,对于具体的产品就不像 FaaS 只有一种了, Backend 对应于各种云服务产品,不仅限于传统的 COS (对象存储), CMQ (消息队列), CDB (云数据库)、 CRedis (云缓存),也有针对于 Serverless 的 TDSQL-C (云数据库),并且各种以 API 形式提供的外部服务也应纳入在内,这些都是Serverless的一部分

2, WHY :为什么要使用 Serverless

这个问题可以用 Serverless 所具备的主要优势来回答

  1. 降低成本(部署运维成本 计算资源成本) AWS 制作的《 Serverless 之歌》神曲做了很好的诠释, I'm gonna reduce your ops ,它能大幅度减轻运维压力 开发者只需专注自身应用的开发和迭代,无需担心复杂繁琐的部署流程,可以更快地发布应用 举个例子,传统 Web 开发部署时如果是从购买服务器开始,到安装系统和应用软件,再到将函数代码传输上去,最后根据不用的语言启用不同的 Web 服务器常驻进程,并监听云主机相关接口以等待客户端的到来,这个过程的耗时是比较长的,并且后期运维时所花的时间会更长,这些都是运维成本 无论有没有客户端正在访问,应用程序始终要保持运行,这时候的计算资源就被大大浪费掉了 而 Serverless 将上述传统 Web 开发部署的流程最大化地简化掉了,如 Serverless Framework 只需 sls deploy 一个命令就完成整个部署流程 并且 Serverless ,是名副其实的按需计费, SCF 的计费方式,是通过函数的调用次数和执行时间来统计费用, SCF 只有在事件触发的时候才运行,不运行的时候自然也就不计费了,这是一种“绿色化”的体现,能更有效地利用计算资源 这一理念不仅限于 SCF ,因为服务器的计算资源抽象化成 SCF ,那其他资源也都是按量计费的,如提供存储的 COS 只存储 外网流量的费用等
  2. 弹性伸缩能力 传统 Web 应用程序在服务器 CPU 的使用率高于某个数值时就要考虑扩容来应对可能有的更多的外部请求,扩容的方法就是要部署更多的实例 而 Serverless 的弹性伸缩能力主要指的是 SCF ,平台会根据请求自动调整资源,遇到请求高峰时,会快速创建新的实例进行横向拓展

3, HOW :如何使用 Serverless

Serverless Framework 是基于 Node.js 的开源 CLI ,注意开发环境需 Node.js 10.0

全局安装:

代码语言:txt复制
npm install serverless -g

以 Python 的 Flask 框架举例,编写业务代码和传统开发几乎没有任何区别,只需要按照原有的方式正常编写即可

然后,配置 serverless.yml 申请需要用到的 Serverless Components (组件),最后就可以一个命令部署上云了

代码语言:txt复制
sls deploy

4,亲自实践使用的经历和感想

首先,给大家介绍一下maimai这款街机音游吧,maimai(日语:マイマイ),因为外观像滚筒洗衣机,所以昵称洗衣机,是一款由世嘉开发的街机音乐游戏,中文版于 2019 年 12 月 5 日开始铺货

在国内,只能从微信公众号中查看成绩(因为每次进页面都需要微信的授权登录

并且里面存储的记录有条数限制, 相册 只存最新十条, 游戏记录 只存最新五十条(就是一个队列,先进先出的那种

这就是本项目的初衷,自己打出来的每一次成绩都应该保存好

在去年 1024 程序员节的那一周,我编写了一个针对于 maimai DX 的查分器应用,使用了 Serverless Framework 快速部署

Serverless Components 使用的是 tencent-flask 这个适配好的框架,其他 BaaS 只用到了 CDB (云数据库)

一路下来,最大的感想主要体现在两个方面:

①免运维:再也不用折腾部署 Web 环境了,自己的精力只着力于业务代码,节省了宝贵的时间

②按需付费:只有请求到来的时候出发云函数运行才会计费,并且腾讯云针对于 SCF 是有免费额度的,相比租赁云主机省下了一笔费用

5,总结

以上就是我今天要给大家分享的全部内容了,在最后做一个简单的总结

  • Serverless 是未来的趋势,随着云计算的发展 Serverless 架构会越来越多地被各大厂商所使用
  • Serverless 会大幅度减轻运维压力并降低成本,同时具备弹性伸缩能力
  • 针对于小型应用,可以使用腾讯云 Serverless Framework 一站式开发,在免费额度内无需额外付费

0 人点赞