开发者学堂课程【深入浅出白话 Serverless-1024程序员节创造营公益课:课程1:零基础入门 】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/890/detail/14262
课程1:零基础入门
目录
一、从云计算到云原生再到 Serverless 架构
二、什么是 Serverless 架构
三、Serverless 架构的优势
四、应用场景
五、Serverless 工具链
一、从云计算到云原生再到 Serverless 架构
云计算-->云原生计算
云计算是什么
Cloud Computing refers to both the applications delivered as services over the lnternet and the hardware and systems software in the datacenters that provide those services.
云原生计算是什么
因云而生的软件、硬件、架构,就是真正的云原生;应云而生的技术,就是云原生技术。
二、什么是 Serverless 架构
MARTIN FOWLER 在 SERVERLESS ARCHITECTURES 一文中认为 SERVERLESS 实际上是 BAAS 与 FAAS 的组合
·SERVERLESS 最早用于描述那些大部分或者完全依赖于第三方(云端)应用或服务来管理服务器端逻辑和状态的应用,这些应用通常是富客户端应用(单页应用或者移动端 APP ),建立在云服务生态之上,包括数据库( PARSE 、 FIREBASE )、账号系统( AUTH、AWS COGNITO )等。这些服务最早被称为“(MOBILE)BACKEND AS A SERVICE ”,下文将对此简称为“ BAAS ”。
·SERVERLESS 还可以指这种情况:应用的一部分是服务端逻辑依然由开发者完成,但是和传统架构不同,它运行在一个无状态的计算容器中,由事件驱动,生命周期短(甚至只有一次调用)、完全由第三方管理。
这种情况称为 FUNCTIONS AS A SERVICE/FASS.AWS LAMBDA 是目前的热门 FAAS 实现之一。
2019年 UC Berkeley 的文章 Cloud Programming Simplified:A Berkeley View on Serverless Computing 中也肯定了这一描述:简单地说,Serverless=FaaS+BaaS。在对于被认为是 Serverless 的服务,它必须具备弹性伸缩和按量付费的特点。
(Put simply,serverless computing=FaaS+BaaS.in our definition,for a service to be considered serverless.it must scale automatically with no need for explicit provisioning,and be billed based on usage.)
Cloud Programming Simplified:A Berkeley View on Serverless Computing
·新的 BssS 存储服务会被发现,以扩展 Serverless 计算上能够运行更加适配的应用程序类型。这样的存储能够与本地块存储的性能相匹配,而且具有临时和持久可供选择。
·比现有的 x86 微处理器更多的异构计算机
·更加安全、易用的编程,不仅具有更高的高级语言的抽象能力,还有很好的细粒度的隔离性。
·基于 Serverless 计算的价格将低于 Serverful 计算,至少不会高于 Serverful 计算。
·Serverless 将会接入更多的后台支撑服务,如 OLTP 数据库、消息队列服务等。
·Serverless 计算一旦取得技术上的突破,将会导致 Serverful 服务的下滑。
·Serverless 将会成为云时代默认的计算范式,将会取代 Serverful 计算,因此也意味着服务器-客户端模式的终结。
Serverless Computing:One Step Forward,Two Steps Back
One Step Forward :通过提供自动缩放功能,今天的 FaaS 产品在云编程方面迈出了一大步,它提供了一种实际上可管理的,看似无限的计算平台。
Two Steps Back :首先,他们忽略了高效数据处理的重要性;其次。他们阻碍了分布式系统的开发。
2009年:
Above the Clouds:A Berkeley View of Cloud Computing
2019年:
Cloud Programming Simplified:A Berkeley View on Serverless Computing
NoServer
NOSERVER 并不是没有服务器,而是一种不需要关注服务器的心智
当开发者想要开发一个项目的时候,通常只需要根据FaaS提供商所提供的 Runtime ,选择一个所熟悉的编程语言,然后进行项目开发、测试(图中步骤1);
完成之后将代码上传到 FaaS 平台(图中步骤2);
上传完成后,只需要通过 API/SDK(图中步骤3)或者一些云端的事件源(图中步骤3)触发上传到 FaaS 平台的函数,FaaS平台就会根据触发的并发度等弹性执行对应的函数(图中步骤4),
最后用户可以根据实际资源使用量进行按量付费(图中步骤5)
三、Serverless 架构的优势
快速交付-容器、事件驱动、集成
毫秒级弹性-调度、弹性、突发流量
更低成本- Zero-Ops 、按需付费
四、应用场景
应用场景:实时文件处理
视频应用、社交应用等场景下,用户上传的图片、音视频往往总量大、频率高,对处理系统的实时性和并发能力都有较高的要求。
例如:对于用户上传的图片,可以使用多个函数对其分别处理,包括图片的压缩、格式转换、鉴黄监恐等,以满足不同场景下的需求。
应用场景:数据 ETL 处理
通常要对大数据进行处理,需要搭建 Hadoop 或者 Spark 等相关大数据的框架,同时要有一个处理数据的集群。
通过 Serverless 技术,只需要将获得到的数据不断的存储到对象存储,并且通过对象存储相关触发器触发数据拆分函数进行相关数据或者任务的拆分,然后在调用相关处理函数,处理完成之后,存储到云数据库中。
应用场景:实时数据处理
通过 Serverless 框架所支持的丰富的事件源,通过事件触发机制,可以通过几行代码和简单的配置对数据进行实时处理,例如:对对象存储压缩包进行解压、对日志或数据库中的数据进行清洗、对 MNS 消息进行自定义消费等。
应用场景:机器学习( AI 推理预测)
在 AI 模型完成训练后,对外提供推理服务时,可以使用 Serverless 框架,通过将数据模型包装在调用函数中,在实际用户请求到达时再运行代码。
相对于传统的推理预测,这样做的好处是无论是函数模块还是后端的 GPU 服务器,以及对接的其他相关的机器学习服务,都是可以进行按量付费以及自动伸缩,从而保证性能的,同时也确保了服务的稳定。
应用场景:WEB 应用/移动后端
Serverless 框架和云厂商所提供的其他云产品进行结合,开发者能够构建可弹性扩展的移动或 Web 应用程序-轻松创建丰富的无服务器后端,而且这些程序可在多个数据中心高可用运行,无需在可扩展性、备份冗余方面执行任何管理工作。
应用场景:音视频转码
视频应用、社交应用等场景下,用户会上传一些视频,通常情况下,上传的视频会进行一些转码,包括转换为不同的清晰度,通过 Serverless 技术与对象存储相关产品组合,利用对象存储相关触发器,即上传者将视频上传到对象存储中,触发 Serverless 架构的计算平台( FaaS 平台)对其进行处理,处理之后将其重新存储到对象存储中,这个时候其他用户就可以选择编码后的视频进行播放,包括对不同清晰度的选择等。
五、Serverless 工具链
Serverless Devs 项目全生命
创建 |
开发 |
调试 |
部署 |
运维 |
应用中心 |
本地开发 |
日志查询 |
项目部署 |
指标查询 |
开发者工具 |
本地调试 |
本地调试 |
依赖安装 |
日志查询 |
... |
... |
原创调用 |
项目构建 |
项目分布 |
·多种操作模式
·上层建设的通用应用模型
·Serverless 调试下大力气
·开发、部署、后期运维一条龙服务
·Serverless 应用全生命周期发挥作用
·已经支持多云部署