开发者学堂课程【建立 Serverless 思维:Serverless 技术选型】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/644/detail/10718
Serverless 技术选型
内容介绍
一、Severless 产品类型
二、函数计算
三、Severless 应用引擎
四、Severless Kubernetes
五、Severless 产品类型
六、Landscape
一、Severless 产品类型
如图,随着技术引进,Severless 已经不仅面对函数形态,更包括函数计算,面向应用的产品,应用引擎,以及面向容器的产品——Severless Kubernetes。它会帮助用户将自己不同类型的业务,或面向不同企业使用习惯提供服务,帮助用户实现价值。
二、函数计算
1.介绍
函数计算对于开发者来讲,只需编写代码,并把代码上传到函数计算中,且不会产生经费。真正产生经费的项目是需要触发的,而触发的方式是多种的。
一是通过函数计算的API或SDK,二是通过一系列的事件源,如阿里云的OSS产品和日志产品。
触发发生后会根据调用频率弹性应对客户诉求,最后按照弹性执行的实际情况付费,以上是最常见的付费模式。开发者可以使用非常丰富的编程语言,nodejs,python,java,php,C#等。
同时函数计算还提供了自定义的运行环境,在这种环境下,用户可以使用任何他想使用的语言将函数上传到函数计算中使用。在上述情况下,开发者只需关注自己的代码,后续的网络配置管理,基础资源管理等都不需要开发者关心。在极致情况下,整个团队都不需要业务人员,只需由开发人员完成整个代码开发及上线的过程。
2.典型场景
各种编程语言的 Web APP 或者 Web API 相关开发群体
Nodejs: Express, Koa ...
Java: Spring Boot
PHP: WordPress, larval....
Python: Django, Flask...
C#: ASP.Net Core WebApp and WebApi
Custom: Go, C/C++, Ruby, Lua...
第一类典型场景是通过各种语言编写外部应用程序。它既可以是传统应用迁移到函数计算运行环境中,也可以是新开发的小程序后端,或是云上API后端。
第二类典型场景是对计算力有很大弹性诉求的场景。如AI推理,音视频等多媒体处理,文档转换、多媒体截图等处理。这类场景的特点是有异步且有事件触发的。
比如将文件上传到阿里云OSS文件存储中,并对其进行类似格式转化、解压等处理时,可以将这种情况视为典型场景。
当文件上传到OSS时,会自动触发代码执行,执行完后,资源得到释放。这种方法不需要事先规划或去购买许多资源,对用户来说也是最经济的方式。
第三类典型场景是事件驱动模型。这种事件可能是定时任务,可能是 webhook 回调,也可能是阿里云其他的云产品,包括OSS、日志服务、云监控等,这些都可以作为事件源去出发用户想定义的后续动作。
3.核心优势
一是帮助用户只需专注业务代码编写,无需关心任何底层基础设施及软件网络配置,借助函数版本别名功能实现灰度发布或AB测试。
二是从安全性方面来讲,提高了VM级别的租户隔离,可以很好地做到租户之间和应用程序之间的隔离性,保证访问控制,处理运输的安全。
三是在成本方面提供了非常灵活的积累模型,包括按量付费和预付费两种模型。
按量付费特别适合突发型的,或者是事件驱动型的场景。只需要在代码运行时付费,如果没有这种请求时,是不需要付费的。预付费可以优化较为平稳的业务成本。
有时我们可能还是希望函数计算会有一些负债是长期存在的,预付费模式会让经济成本更低。
四在弹性方面能够做到自动的弹性伸缩,在短时间内,如果需要大量的数据文件,或是新业务,在它的峰值高且陡峭时,也能很好应对。
三、Severless 应用引擎
Severless 应用引擎是首款面向应用的 Severless PaaS 平台,它和函数计算的差异主要是它的所有设计都是面向应用的,它适合把后端业务,微服务业务,强业务,无缝迁到阿里云上,并且享受其带来的红利。
从用户角度看,它其实只是把一个应用托管给SAE,平台托管后,SAE将围绕这个应用提供一系列应用管理相关的能力,包括应用的生命周期发布,策略性伸缩,监控日志等,为应用在云上运行考虑得十分周全。同时SAE对微服的应用进行了特殊的支持,内置了一些简单的微服的管理能力,包括服务注册发现、配置、管理等,使入门级的微服用户,可以进一步降低门槛,无需构建或理解微服相关的知识即可快速使用。
这种方法对用户非常灵活,用户既可以不了解镜像构建,利用传统方式部署,也可以利用镜像方式部署。
SAE典型场景
1.各种语言的应用快速上云/搬站
Java : webapp ,微服务应用容器基础快速上云
PHP. Nodejs. Python. Go. C+ +等单体应用上云➢期望本地一 健部署到云端
物联网、 传统行业等客户上云/搬站时,对交付效率有极致需求。期望得到一站式开箱即用的PaaS体验。
2.灵活&弹性使用计算资源
电商大促应对峰值流量
智慧安防行业火警监控、 烟感报警等,要求极致弹性效率
在线教育、 医疗政府、证券等行业固定潮汐使用计算资源
大中型企业多套开发测试环境 ,固定时段使用计算资源,希望能节省成本
3.低门槛微服务架构转型
中小企业快速构建云 上微服务
开源自建 Spring Cloud/Dubbo 应用为了稳定性兜底,计划迁云➢单体应用微服务改造
4.集成方
云市场、云开放平台、小程序云魔笔等期望集成应用 PaaS 底座能力
外部垂直行业 ISV 集成 ,打造某垂直领域的 Serverless 方案.
从以上场景看,来自于最典型的场景是 Java 或微服应用的快速上云
场景,在这个场景里,用户无需学习容器的知识,也无需对自己的应用进行容器化,就能把自己的 Java 应用在容器的环境里,达到容器的隔离性,以及快速申诉的效果同时在 PHP 等单体应用上,对于这种物联网,或者传统行业的客户来讲效率很高。
因为他不需要对应用做任何改动,包括部署模式及构建模式。通常SAE是不具有行业属性的,任何行业都可以使用它,但是当对于流量或是弹性有特别高诉求的行业时,它的作用会更加明显。
比如在线电商,它会有大促的场景,或是在线教育,医疗政府、证券等行业,他们是有这种固定潮汐的,都是非常适合使用SAE的,因为它可以非常灵活地进行计算资源的弹性,并且能在弹性试测过程中,把用户的应用也实时地启停。
SAE也可以被集成方用作云市场、云开放平台、小程序、云魔笔等,期望集成应用底座能力。
产品核心优势:
1.零代码改造,即享免运维体验
基于 Serverless 架构,屏蔽底层 aaS 运维和 K8s 细节。用户零代码改造平滑迁移企业在线应用。
2.精益成本,不为闲置浪费
按需使用.按分钟计费.无需长期保有固定 laaS 资源。
3.自动弹性
支持定时弹性和监控弹性,应对应用突发场景下秒级弹性伸缩,保障业务SLA.
4.零基础,开箱即用微服务和K8s能力
完美支持各种主流微服务框架、支持镜像 warjar 三种部署方式
5.高安全
底层基于安全容器运行应用,网络通过 VPC 隔离,双重保障应用运行时安全。
6.服务集成,一站式体验
自动集成阿里云上的基础设施类产品:SLB. SLS. NAS 等和微服务生态周边产品: ACM. ARMS. AHAS, 提供-站式的解决方案。
SAE 更显著的特点是会围绕应用给用户带来一系列的能力。其包括监控日志能力、微服务能力,使用户在应用签约时,不需要再去考虑应用周边的可观性等需求,而是在这一个产品中就能被完全提供。
四、Severless Kubernetes
2014年,容器技术横空出世,这时用户还没有编排系统,用户使用容器的方式往往是购买一台ECS,然后把容器部署在上面。这时如果用户需要很多容器去运维和管理,就非常不方便。他需要自己去维护容器的生命周期,多个容器的编排。
2015年,容器编排技术逐渐火爆,特别是 Kubernetes。这项技术如今已经成为实施标准,帮助用户解决容器编排问题。他可以把多台ECS创建程序的k8s集群。提供这种编排技术,可以让用户非常方便地实现集群的管理及容器的管理。
但是这项技术本身门槛很高,使用的用户首先需要构建集群,买 ECS 并进行容量规划,去做运维,所以这时需要用户对 Kubernetes 有比较高的理解。但很多用户其实只想拿到 Kubernetes 的红利,并不真的想去学习 Kubernetes 的技术,运维其集群。
为了满足这一群体才产生了如今的 Severless Kubernetes(ASK)。在这样一个使用的这个模式下,用户的从上层往下看的视角还是一个容器编排系统,用户可以使用所有的 Kubernetes 来提出编排能力,但是不需要去维护创建出这个机型所需要的资源,所有 ECS 机器的资源和运维全部由云产品来完成。
从用户视角来看,他就拿到一个具有无限容量的集群,可以随时去部署它的镜像,而且可以根据这个镜像的使用计算资源付费。从这个角度来讲,它确实提供了一个Severless 使用形态,但是从用户层的使用体验来讲,他又是一个 Kubernetes 的集群,所以这就是 Severless Kubernetes。
五、Serverless Kubernetes 典型场景
1.场景一:免运维的应用托管
无需管理基础设施,专注应用开发
灵活弹性、按需使用
结合预留实例券大幅降低计算成本
支持原生 Kubernetes 生态 ,包括 HelmChart 部署等
2.场景二:突发流量的弹性扩容
系统关键模块弹性扩容,应对突发流量,使得端到端扩容速度缩短70%
端到端的伸缩性能达到30秒500个容器实例
ASK 独享 Master ,免运维、按需使用
ECI 镜像快照使得“零秒”镜像下载
3.场景三:大数据计算任务
使用VK/ECI提供的极致弹性能力支撑 Spark/Presto 大数据计算
提交作业前无需预留任何资源,"无限” 容量,按需使用,高并发,高峰期10000+ pod 运行。
4.场景四: CI/CD
使用 ASK 运行 Jenkins/Gitlab-Runner ,按需创建 Job ,极大降低计算成本。
部署阶段无缝对接 ASK ,无需事先申请资源,实现应用的快速测试和预发。
六、Landscape
总结:
Severless 不仅面对函数形态,更包括函数计算,应用引擎,以及面向容器的产品——Severless Kubernetes。用户可以根据自己的需要选择不同类型的业务,实现自身价值。