从零入门 Serverless | SAE 的极致应用部署效率
作者 | 文俊 阿里巴巴云原生团队
本文整理自《Serverless 技术公开课》,“Serverless”公众号后台回复“入门”,即可获取系列文章 PPT。
作为 Serverless 平台,SAE 提供了应用全托管的服务,充分利用了云原生的技术红利,以容器作为应用载体,提供了敏捷的部署、编排、弹性等能力。SAE 屏蔽了底层的基础设施,对于用户来说,感知到的最底层资源是应用实例本身,应用创建、部署等操作是用户交互的主要接口。
接下来将介绍我们在应用创建、部署、重启等过程所做的效率优化工作。
应用创建
首先是应用创建。目前,用户界面可通过镜像或 war、jar 安装包的方式部署应用,最后在平台侧,以统一打包成容器镜像的方式进行分发,然后平台去申请计算、存储、网络等 IAAS 资源,再开始创建容器执行环境和应用实例。

在这个过程中,涉及到调度、云资源创建和挂载、镜像拉取、容器环境创建、应用进程创建等步骤,应用的创建效率与这些过程紧密相关。
我们很自然而然地能想到,这其中部分过程是否能并行,以减少整个创建的耗时呢?经过对每个过程的耗时分析,我们发现其中的一些瓶颈点,并且部分执行步骤之间是解耦独立的,比如云弹性网卡的创建挂载和应用镜像拉取,就是相互独立的过程。基于此,我们将其中独立的过程做了并行化处理,在不影响创建链路的同时,降低了应用创建的时耗。
应用部署
应用的部署,即应用升级。我们知道,传统的应用部署过程可以分为以下几个步骤:
- 首先创建新版本的实例;
- 然后等待实例启动、业务进程 ready 后,接入流量,即创建对应 SLB 后端;
- 最后将老版本实例从 SLB 后端摘除并销毁。
在分批发布的场景下,如此继续循环下一批实例,进行滚动升级。我们能看到,在这个过程中,应用实例发生了重建,同时实例 ip 也会发生浮动。
上文我们讲到,应用实例的创建过程包括调度、云资源创建挂载、镜像拉取、容器环境创建、应用进程拉起等步骤,对于应用部署而言,完全可以不用重走一遍所有的流程,因为我们需要的仅仅是基于新的镜像,创建新的应用执行环境和进程而已。
因此,我们实现了原地部署的功能,在滚动升级过程中,保留原来待升级应用实例及其挂载的云网络、云存储资源,只更新实例的执行环境,无需经过调度、云资源创建等过程。这样,原来的部署流程也简化为:
摘流,将运行实例从 SLB 后端摘除 -> 原地升级实例 -> 接入流量
原地升级后,应用实例仍保持原来的 ip。经过测试,对于 2 实例应用,部署效率将提升4倍,将部署时长从原来的将近 1 分钟缩短到十几秒。

应用重启
最后,简单介绍下我们即将推出的原地重启功能。
重启实例在某些运维场合是必要的操作,说到应用重启,我们希望类似于 linux 系统一样,可以只执行一次 reboot,而不是重建实例。具体的做法是,我们在容器环境下,通过容器引擎 API 执行一次启停操作即可。原地重启相比原地升级,省去了镜像更新和执行环境创建的过程,并且相比 ECS,容器的重启更轻量,能达到秒级。
该功能近期会上线,敬请期待。
课程推荐
为了更多开发者能够享受到 Serverless 带来的红利,这一次,我们集结了 10+ 位阿里巴巴 Serverless 领域技术专家,打造出最适合开发者入门的 Serverless 公开课,让你即学即用,轻松拥抱云计算的新范式——Serverless。
点击即可免费观看课程:https://developer.aliyun.com/learning/roadmap/serverless
从零入门 Serverless | SAE 的极致应用部署效率的更多相关文章
- 从零入门 Serverless | 企业级 CI/CD 工具部署 Serverless 应用的落地实践
背景知识 通过以往几节课程的学习,相信大家对于 SAE 平台已经有了一定的了解.SAE 为客户免除了很多复杂的运维工作,开箱即用.按用量付费:与此同时 SAE 提供了丰富的 Open API,可以很容 ...
- 从零入门 Serverless | SAE 场景下,应用流量的负载均衡及路由策略配置实践
作者 | 落语 阿里云云原生技术团队 本文整理自<Serverless 技术公开课>,关注"Serverless"公众号,回复"入门",即可获取 S ...
- 从零入门 Serverless | SAE 的远程调试和云端联调
作者 | 弈川 阿里巴巴云原生团队 导读:本节课程包含三部分内容,前两个部分简单介绍远程调试以及端云联调的原理,最后在 Serverless 应用引擎中进行实际演示. 经过之前课程的学习,相信大家对于 ...
- 从零入门 Serverless | 教你使用 IDE/Maven 快速部署 Serverless 应用
作者 | 许成铭(竞霄) 阿里云开发工程师 SAE 应用部署方式 1. SAE 概述 首先,简单介绍一下 SAE.SAE 是一款面向应用的 Serverless PaaS 平台,支持 Spring C ...
- 从零入门 Serverless | Knative 带来的极致 Serverless 体验
作者 | 冬岛 阿里巴巴高级技术专家 Serverless 公众号后台回复"knative",即可免费下载<Knative 云原生应用开发指南>电子书! 导读:Serv ...
- 从零入门 Serverless | 在线应用的 Serverless 实践
作者 | 唐慧芬(黛忻) 阿里云产品专家 导读:毫无疑问,Serverless 能够在效率和成本上给用户带来巨大收益.那具体到落地又应该怎么做呢?本文就给大家详细解读 Serverless 的落地实践 ...
- 从零入门 Serverless | 一文详解 Serverless 技术选型
作者 | 李国强 阿里云资深产品专家 今天来讲,在 Serverless 这个大领域中,不只有函数计算这一种产品形态和应用类型,而是面向不同的用户群体和使用习惯,都有其各自适用的 Serverless ...
- 从零入门 Serverless | Serverless Kubernetes 应用部署及扩缩容
作者 | 邓青琳(轻零) 阿里云技术专家 导读:本文分为三个部分,首先给大家演示 Serverless Kubernetes 集群的创建和业务应用的部署,其次介绍 Serverless Kuberne ...
- 从零入门 Serverless | Serverless 应用如何管理日志 & 持久化数据
作者 | 竞霄 阿里巴巴开发工程师 本文整理自<Serverless 技术公开课>,关注"Serverless"公众号,回复"入门",即可获取 Se ...
随机推荐
- 关于Junit中Assert已经过时
在junit4.12之后,Assert就过时了,提供了TestCase来取代: 同样在TestCase中原本比较常见的一些方法也已经取消了,例如:assertNotEquals.assertThat. ...
- Linux操作系统基本应用(完结)
时间:2015-4-10 12:40Linux第一天 Linux基本命令 Linux各文件夹的作用 bin 二进制可执行命令 dev 设备特殊文件 etc 系统管理和配置 ...
- MongoDB学习笔记二- Mongoose
MongoDB学习笔记二 Mongoose Mongoose 简介 之前我们都是通过shell来完成对数据库的各种操作, 在开发中大部分时候我们都需要通过程序来完成对数据库的操作 而Mongoose就 ...
- for in和for of的简单区别
//for in可以遍历数组和对象,但是for of只能遍历数组,不可以遍历对象 var arr = [1,4,5,6,7,8]; var obj = { name:'za', age:19, say ...
- 《网页布局基础篇》—浮动布局和float属性
浮动布局 <html> <head> <meta charset="utf-8"> <title>浮动</title> ...
- k8s笔记0528-基于KUBERNETES构建企业容器云手动部署集群记录-5
1.为Flannel生成证书 [root@linux-node1 ~]# vim flanneld-csr.json { "CN": "flanneld", & ...
- k8s 存活探针,滚动更新
文章原文 存活探针 Kubelet使用liveness probe(存活探针)来确定何时重启容器.例如,当应用程序处于运行状态但无法做进一步操作,liveness探针将捕获到deadlock,重启处于 ...
- Windos下通过Wpcap抓包实现两个网卡桥接
目录 1. 背景: 2. 需要的技术手段: 3. 实现逻辑: 4. 应用实例: 1. 背景: 一台电脑允许接多个网口,当然大部分只有一个网口其余都是USB扩展而来,而每个网口之间需要配置不同的网段IP ...
- k8s架构与组件详解
没有那么多花里胡哨,直接进行一个K8s架构与组件的学习. 一.K8s架构 k8s系统在设计是遵循c-s架构的,也就是我们图中apiserver与其余组件的交互.在生产中通常会有多个Master以实现K ...
- JAVA安全基础之反射
JAVA安全基础之反射 在JAVA安全中,反射是一个经常使用的技术,所以熟悉使用反射是非常必要的.下面就简单的讲下JAVA的反射的用法 什么是反射 每个类都有对应的Class类对象,该Class类对象 ...