从零入门 Serverless | 一文详解 Serverless 技术选型

简介: 本文整理自《Serverless 技术公开课》,关注“Serverless”公众号,回复“入门”,便可获取 Serverless 系列文章 PPT。php

image.png

今天来说,在 Serverless 这个大领域中,不仅有函数计算这一种产品形态和应用类型,而是面向不一样的用户群体和使用习惯,都有其各自适用的 Serverless 产品。例如面向函数的函数计算、面向应用的 Serverless 应用引擎、面向容器的 Serverless Kubernetes,用户能够根据本身的使用习惯、使用场景或者应用类型,去选择使用什么样的 Serverless 产品。下面经过本文给你们介绍一下,阿里云都有哪些可供你们选择的 Serverless 产品。java

Serverless 产品及分层

众所周知,最先提出 Serverless 的是 AWS,其在 Serverless 领域的旗舰产品是 function compute。一样阿里云也有函数计算的产品,帮助用户构建 Serverless 函数。但 Serverless 不只仅是函数,以下图所示,其实用户会指望在应用、容器等层面也可以享受到 Serverless 的好处,包括按量付费、极致弹性等,这样也更符合用户原有的使用习惯。node

image.png

在上图中,你们可以看到,阿里云针对函数、应用和容器都推出了对应的 Serverless 产品,用户能够针对本身的使用场景选择不一样的产品。python

函数计算

1. 函数计算介绍

image.png

上图展现了函数计算的使用方式。从用户角度,他须要作的只是编码,而后把代码上传到函数计算中。这个时候还不会产生费用,只有到被调用的时候才有费用。调用的方式能够是产品提供的 API/SDK,也能够经过一些事件源,好比阿里云的 OSS 的事件。好比用户往 OSS 里的某一个 bucket 上传了一个文件,但愿这个文件被自动处理;好比上传一个 zip 包,但愿可以自动解压到另一个 bucket,这都是很典型的函数场景。小程序

另外,函数计算可以提供很是好的弹性能力,最终的费用是根据时长和内存数进行计费的,若是调用量小的话,只会有不多的费用。而且它在语言方面也很是丰富,经常使用的 nodejs、php、python、java 都直接支持。同时提供自定义的运行环境,能够支持任意的可执行的语言。后端

2. 函数计算典型场景

image.png

从使用场景来讲,主要有三类:安全

  • Web 应用:能够是各类语言写的,这种可使用 Serverless 框架新编写的程序,也能够是已有的应用。好比小程序后端、或者发布到 API 市场的 API 后端应用等;
  • 对计算能力有很强的弹性诉求的应用:好比 AI 推理、音视频处理、文档转换等;
  • 事件驱动型的应用:好比经过其余阿里云产品驱动的场景、Web Hook、定时任务等,函数计算已经与不少产品进行了打通,好比对象存储、表格存储、定时器、CDN、日志服务、云监控等,能够很是快速地组装出一些业务逻辑。

3. 函数计算核心竞争力

image.png

函数计算对客户的一个最大的价值,就是可以让用户只关注本身的业务逻辑开发,彻底不须要管理运维,诸如计算资源、网络设置等都不须要关心。在隔离性上提供 vm 级别的隔离,保证用户在运行时的数据安全、运行时安全等;在可用性方面默认提供 3az 的高可用架构,保证客户默认就是高可用的最佳实践架构;在弹性方面,能够作到毫秒级的弹性效率,知足客户突发的流量冲击;在计费方面也很是灵活,真正按照用户的请求状况进行收费,也支持对 long run 的应用更友好的预付费模式。网络

Serverless 应用引擎

1. SAE 概述

image.png

SAE 是业内首款面向应用的 Serverless Paas 平台。这个产品以面向应用的视角,帮助用户在不作任何修改的前提下把存量应用上到云端。在资源层,用户再也不须要本身管理和运维机器及集群,只须要关注本身应用所须要使用的规格以及实例数,再也不须要关心底层是虚机仍是容器。架构

SAE 从资源层面提供计算资源、弹性、隔离性等能力,让用户只须要关注本身的应用。在应用层,SAE 提供了监控、日志、微服务治理等能力,帮助用户解决应用可观测性和治理需求。同时提供网络配置、流量控制能力,提供了和 CICD 良好的集成,用户可使用已有 CICD 部署到 SAE,好比 jenkins、云效等,能够说覆盖了应用上云的完整场景。框架

2. SAE 典型场景

image.png

SAE 有几个典型的使用场景,一个是存量业务上云,特别是微服务、java 应用,同时也支持其余语言的单体应用,都可以经过 SAE 这个平台运行在阿里云上,而且不须要作任何代码的修改。在行业方面,SAE 特别适合有比较大的流量波动的在线业务,好比电商大促、在线教育等行业的场景。另外 SAE 做为应用平台也能够被上层的行业 Saas 所集成,帮助用户更快地构建行业 Saas。

3. SAE 特性

image.png

经过上面的场景介绍,咱们能够看到 SAE 除了 Serverless 体验自己所带来的极致弹性、免运维等特性以外,重点在应用层给用户提供全栈的能力,包括对微服务的加强支持,以及整合了和应用息息相关的能力,包括配置、监控、日志、流量控制等。再加上用户零代码的改动,是企业在线业务平滑上云很是好的选择。

Serverless Kubernetes

1. ASK 概述

image.png

另外一个阿里云提供的 Serverless 产品是 Serverless K8s。可是 K8s 怎么还能 Serverless 呢?这就须要先了解一下技术架构的演进历程。

最先的时候你们都把 Docker 镜像部署在虚机里,用户须要购买 ECS,而后部署镜像,最后是网络的一些配置,好比 SLB、EIP 等。在这个过程当中,用户须要本身完成部署动做,扩容须要本身重复上面的动做,或者本身构建一套自动化脚本,相对来讲成本和稳定性都比较低。

以后有了 K8s 来帮你们解决容器编排的问题。这种标准化的方式确实大大提升了你们的生产力。用户经过使用 deployment、service 等标准的 K8s 的方式进行编排,并进行部署。但 K8s 的运维和管理仍是相对比较复杂的,技能要求比较高,用户须要运维 ECS 以及经过 ECS 构建出来的 K8s。另一个痛点时 K8s 集群里的 ECS 是须要预先购买的,若是客户的负载有比较大的波动,就会出现比较多的资源浪费。虽然技术上也有解决方案,好比 worker node 的弹性,但这对于初级用户来讲,仍是有比较高的复杂度。

那有没有一种方案可让用户既能享受到 K8s 提供的容器编排能力,又可以不须要关心 ECS 和 K8s 的运维、管理和弹性问题呢?这就是 Serverless K8s 的方案。对应到阿里云的产品就是 ASK。在 ASK 的方案里,用户建立一个 ASK 集群,但不须要指定任何 ECS 节点,而后经过标准的 K8s 容器编排、deployment 等部署镜像。ASK 会根据用户的负载需求,自动在底层资源池构建须要的 POD 并进行弹性伸缩,用户再也不须要关心容量规划、ECS 机器运维、资源限制等 LaaS 层的问题,很是便利。

2. ASK 典型场景

image.png

那 ASK 主要用在哪些场景里呢?首先能够用来跑在线业务,部署模式灵活,能够是 deployment、helm chart 等全部的 K8s 原生模式,特别是可以很好地应对突发流量,极致弹性,能够在 30 秒完成 500 个容器实例的弹性。这样的弹性效率,能够很好地支撑大数据计算类的任务,好比 Spark、Presto 等,也能够在须要的时候即时获取资源,支撑 10000 以上 Pod 的规格,有效下降客户成本。

另一个很是适合的场景是用来构建随需启动的构建任务,好比在 ASK 中运行 jenkins、Gitlab-Runner 等。在有构建任务的时候,即时启动。没有任务的时候 0 消费,成本作到最低。这里只是列出了一些例子的场景,实际上基于 ASK 的这个特性,用户能够运行不少 K8s 原生的须要极致弹性的工做负载。

3. ASK 特性

image.png

ASK 彻底容器部署,经过容器进行隔离。在使用的过程当中,用户无需运维 ECS 或者 K8s 集群,也不须要考虑集群升级、容量规划、OS 及系统软件问题等事情,理论上能够提供无限的弹性容量。由于是彻底按照使用量进行收费,因此就不须要为限制资源付费。

总结

总结一下,能够看到阿里云今天在 Serverless 领域有很是多样的产品,既有面向函数的函数计算,用户能够只关注代码,快速开发交付;也有面向应用的 Serverless 应用引擎,让用户更关注应用视角,而且提供了围绕应用的一系列能力,包括监控、日志、流量等能力的集成;对于更习惯 K8s 生态的用户,ASK 让用户在不改变当前 K8s 使用习惯的前提下,也能享受到 Serverless 的优点。多样的产品,在知足不一样用户诉求的同时,也使用户体验到了 Serverless 的免运维、极致弹性、按量付费等优点。

本文转自<阿里巴巴云原生技术圈>——阿里巴巴云原生小助手

相关文章
相关标签/搜索