如何 0 改造,让单体/微服务应用成为 Serverless Application

简介: 随着 2013 年以 Docker 为代表的容器技术、CNCF 基金会以及 K8s 的发展等,云原生开始被广大开发者所熟知。云原生时代之前还有两个阶段:一是自建 IDC 机房,二是简单地把原有的应用搬迁到云上。自建 IDC 机房很难获得高可用、高可扩展以及运维提效等能力;而第二个阶段就是云计算时代,相比 IDC 有了一定的进步,但大部分还是在相对原始地用云,很难用好云,这个阶段的资源已经接近无限,但是基于虚拟机及各种自建服务的方式还有待改善。包括高可用相关的建设及基础设施的下沉,希望对非业务代码的部分进行最大化的剥离,在这样的技术和架构设计的指导下,就可以设计出云原生应用。

 

一、天然云原生的 Serverless

1. 云原生时代

随着 2013 年以 Docker 为代表的容器技术、CNCF 基金会以及 K8s 的发展等,云原生开始被广大开发者所熟知。云原生时代之前还有两个阶段:一是自建 IDC 机房,二是简单地把原有的应用搬迁到云上。自建 IDC 机房很难获得高可用、高可扩展以及运维提效等能力;而第二个阶段就是云计算时代,相比 IDC 有了一定的进步,但大部分还是在相对原始地用云,很难用好云,这个阶段的资源已经接近无限,但是基于虚拟机及各种自建服务的方式还有待改善。

 

云原生时代指的是在设计应用的时候,就考虑到将来应用会运行在云的环境里,充分利用了云资源的优点,比如云服务的弹性、分布式的优势。如上图所示,云原生可以分为几部分:

一是云原生技术,包括容器、K8s、微服务、DevOps。而这些技术只是一个工具,要想真正地用好这些技术,还需要一些最佳的实践和组合,也就是云原生架构。

云原生架构是基于云原生技术的一种架构原则和设计模式的集合,是一些指导原则,比如要求做好可观测,只有在做好可观测的前提下才能做好后续的弹性,包括高可用相关的建设及基础设施的下沉,希望对非业务代码的部分进行最大化的剥离,在这样的技术和架构设计的指导下,就可以设计出云原生应用。

云原生应用具有轻量、敏捷、高度自动化等方面的特点,可以充分发挥云的优势,在现代数字化转型的时代,更好地适应业务的发展变化。

2. Serverless 天然云原生

 

为什么说 Serverless 是天然云原生的呢?虽然 Serverless 出现的时间比云原生更早一些,我们向前追溯,AWS 率先推出初代 Serverless 产品——Lambda,其按请求计费和极致伸缩的特点,非常符合云原生的定义,比如基础设施下沉。在 Lambda 里,不需要管理服务器,它会根据请求去伸缩服务器,实现了高度自动化;它还以函数的形式来组织代码,函数相对于应用来说要更轻量,交付速度也更快。但是这种模式的缺点就是改造成本高,因为很多应用原来是一个巨大的单体或者微服务应用,很难改造成函数模式。

3. 认识 SAE

Serverless 理念及相关产品的推出已经走过差不多 7 个年头,在这个过程中云原生的技术也在不断成熟,包括Docker、 K8s 等。阿里云在 2018 年的时候就开始思考另一种 Serverless 形态,即 Serverless application,也就是 SAE 这款产品,其于 18 年 9 月上线,19 年商业化,至今也走过了 3 个年头。

 

SAE 的特点:

  • 不可变基础设施、可观测、自动恢复

基于 K8s 底座,背后代表的是镜像之类的不可变基础设施以及可观测、自动恢复,如果检测到请求失败,会自动切流或重启实例。

  • 免运维、极致弹性、极致成本

托管服务器资源,不需要用户自己运维服务器,同时也相应地具备极致弹性和极致成本的能力。

  • 易上手、0 改造、一体化

如上图,最上层为客户感知层,是 aPaaS 产品形态,是一个应用 PaaS,经过三年多的实践,最终达到让用户真正易上手、0 改造的效果,而且做了很多一体化的集成。

 

SAE 这样一款以 K8s 为底座、具备 Serverless 的特点、以 aPaaS 为形态的产品,完全符合云原生的特点。在技术层面,底层使用容器、K8s,集成了微服务,包括各种 DevOps 工具。在架构层面,因为底层依赖于这些技术,所以可以非常方便地让用户遵照云原生架构的原则,去设计出自己的应用实践,最终让客户的应用可以最大化地享受到云原生的红利,实现应用的轻量、敏捷以及高度自动化,极大地降低迈入云原生时代的门槛。

 

SAE 产品架构图

SAE 是一款面向应用的 Serverless PaaS,0 改造 0 门槛 0 容器基础是它的特点,可以让用户非常方便地享受到 Serverless、 K8s 以及微服务带来的技术红利。同时也支持多种微服务框架、多种部署渠道(包括自己产品的 UI 部署 / 云效 / Jenkins / 插件部署等)、多种部署方式(包括 War / Jar / 镜像部署等)。

其底层是一个 IaaS 资源层,上面是 K8s 集群,对用户来说这些都是透明的,不需要自己购置服务器,也不需要理解 K8s,再上一层有两个核心能力:一是应用托管,二是微服务治理,应用托管就是应用生命周期等,微服务治理就是服务发现、优雅下线等,这些在 SAE 里都做了较好的集成。

SAE 的核心特点可以总结为三个:一个是 0 代码改造,二是 15s 弹性效率,三是 57% 的降本提效。

二、SAE 设计理念

1. Kubernetes 底座

 

  • 容器

在 K8s 容器编排生态中,最基础的是容器或镜像,依托于镜像,用户就相当于实现了不可变的基础设施,其好处是镜像可以到处分发、复制,相当于实现了可移植性,没有了厂商绑定。另外针对不太熟悉镜像或者不想感受复杂性的用户,我们也提供了 War / Jar 层面的部署,极大降低用户享受红利的门槛。

  • 面向终态

在传统的运维领域有很多问题比较难解决,比如服务器因为各种各样的原因,突然负载高或者 CPU 高等,这时在传统领域通常需要大量的手动运维操作,而在 K8s 领域结合可观测、健康检查,只需配置好 liveness 和 readiness,就可以实现自动化的运维,K8s 会自动进行切流以及自动化地重新调度,极大地降低了运维成本。

  • 资源托管

不仅 ECS 机是托管的,K8s 也是内部托管运维的,客户完全不需要购买服务器或者购买 K8s 或者运维 K8s,甚至都不需要懂 K8s,极大地降低了客户的入门门槛和薪资负担。

2. Serverless 特性

 

  • 极致弹性

我们已经实现了端到端的 15 秒,也就是 15 秒内可以创建出一个 pod,让用户的应用开始启动。在弹性能力上,我们具有基础指标弹性(如 CPU、Memory 等)、业务指标条件弹性(如 QPS、RT 等)和定时弹性。如果手动设置弹性指标,仍有一些门槛和负担,因为客户不知道指标应该设成多少,在这个背景下,我们也在考虑智能弹性,自动帮用户算出弹性指标推荐给用户,进一步降低门槛。

  • 精益成本

SAE 免去了资源托管和运维成本,在此之前客户需要运维大量的 ECS 服务器,当需要安全升级、漏洞修复,特别是高密部署时,成本会很高。另外 SAE 计费模式是以分钟计费,用户完全可以实现精益成本,比如在业务高峰的 1 小时扩容到 10 个实例,在高峰结束后变成 2 个实例。

  • 语言增强

在弹性领域,我们针对性地做了一些语言增强。比如 Java,结合阿里的大规模 Java 应用实践,阿里的 JDK——Dragonwell11 相比于其它开源的 JDK,可以让 Java 应用的启动速度提高 40%。未来我们还会在其它语言上探索更多的可能性。

3. (application)PaaS 产品形态

 

  • 应用托管

应用托管,相当于应用生命周期的管理,包括应用发布、重启、扩容、灰度发布等,其使用的心智和大家在使用应用或其他 PaaS 平台是一样的,上手门槛非常低。

  • 一体化集成

因为云产品有几百多款,如果要每一款都用好也是额外成本。所以我们对最常用的云服务进行了一体化集成,包括基础监控、业务监控 ARMS、NAS 存储、SLS 的日志收集等各方面,降低用户使用产品的门槛。

另外我们还额外地做了微服务增强,包括托管注册中心、优雅上下线和微服务治理等。因为使用微服务通常需要一个注册中心,SAE 内置托管注册中心,用户不需要再重新购置,完全可以把应用直接注册上来,进一步降低用户门槛和成本。

SAE 将这些能力组合起来,最终让用户在迁移传统单体应用或者微服务应用时,基本可以实现 0 改造迁移,0 门槛地享受到这款产品背后带来的技术红利。

三、SAE 技术架构

1. SAE 技术架构图

 

SAE 帮用户托管 K8s 背后的技术架构如上图所示,在 1 个宿主机上,最上层是 SAE 的 PaaS 界面,第二层是 K8s 的 Master(包括 API server 等),最下面一层是 K8s 真正运行资源的宿主机,这些都是完全由 SAE 托管的,用户只需要在自己的 VPC 或网络段内创建 Pod 资源并做一个连通,即可实现应用的正常运行。

这里有两个核心问题:

一是防穿透,比如我们的 Pod 或容器使用的是像 Docker 这样的传统容器技术,把公有云的 a 和 b 两个用户跑到一个物理机上,其实有非常高的安全风险,b 用户很有可能会侵入到 a 用户的容器里获取用户信息,所以这里面的核心就是要限制用户能力,防止其逃逸。

二是网络的连通或者云体系的打通,我们要跟用户的网络体系打通,这样用户才可以方便地和他的安全组、安全的规则、RDS 等连通,这也是一个核心的问题。

2. 安全容器

 

在这里具体展开一下防逃逸问题。上图表格是现在大家讨论的比较广泛的安全容器技术,安全容器简单理解就是虚拟机思想。如果使用传统的像 Docker 这样的容器化技术,很难做好安全的防护或隔离,而安全容器可以理解为一个轻量级的虚拟机,既有容器的启动速度,又有虚拟机的安全。

目前安全容器已经超脱出了安全,不仅仅有安全的隔离,也有性能的隔离以及故障的隔离,以故障隔离为例,如果采用 Docker 这种容器技术,遇到一些内核问题,就有可能因为一个 Docker 容器的失败而影响到其他用户,整个宿主机都可能会受到影响,而如果采用安全容器技术就不会有这样的问题。

SAE 采用了 Kata 安全容器技术,从时间和开源界的事实来说,Kata 是 runV 和 Clear Container 两个项目的结合,相比于 Firecracker 以及 gVisor 方案更加成熟。

四、SAE 最佳实践

最佳实践 1:低门槛微服务架构转型

 

熟悉微服务的客户都知道,如果要自己运维一套微服务技术架构,需要考虑很多因素,不仅是开源、框架层面,还有资源层面及后续的问题排查,包括注册中心、链路追踪、监控、服务治理等等,如上图左侧所示,在传统开发模式下,这些能力都需要用户自己托管和运维。

而在 SAE 中,用户就可以把一些与业务无关的特性交给 SAE,用户只需要关注自己的业务,包括微服务的用户中心、群组中心等,以及和 SAE 的 CI/CD 工具做一个集成,就可以快速实现微服务架构。

最佳实践 2:一键启停开发测试环境降本增效

 

有些中大型企业会有多套的测试环境,这些测试环境一般晚上都不使用,在 ECS 模式下,是需要长期保有这些应用实例的,闲置浪费的成本比较高。

而如果在 SAE 里就可以结合命名空间,比如一键启停或定时启停的能力,可以将测试环境的应用全部建在测试环境的命名空间下,再配置早上如 8:00 启动测试环境命名空间所有实例,在晚上 8:00 全部停止,停止后的时间段就完全不计费,可以让用户最大化地降低成本。

根据计算,在比较极致的情况下,基本上可以节省用户 2/3 的硬件成本,而且也不需要额外付出其他运维成本,只需配置好定时启停的规则即可。

最佳实践 3:精准容量+极致弹性的解决方案

 

在今年疫情情况下,大量学生在家进行在线教育,很多在线教育行业的客户面临业务流量暴涨七八倍的情况,如果基于原来自己运维的 ECS 架构,用户就需要在非常短的时间内做架构升级,不仅是运维架构升级,还有应用架构升级,这对用户的成本及精力都是非常大的挑战。

而如果依托于 SAE 中各种各样的一体化集成以及底层 K8s 这样高度自动化的平台,就可以简单很多。比如可以结合 PTS 压缩工具评估容量水位;比如压测有问题,可以结合基础监控和应用监控,包括调用链、诊断报告等,可以分析瓶颈在哪里,有没有可能尽短的时间内解决;如果发现是比较难解决的瓶颈,可以使用应用高可用服务,实现限流降级,确保业务不会因为突发洪峰而垮掉。

最后 SAE 可以根据压测模型配置相应的弹性策略,比如根据 CPU memory、RT 或者 QPS 等,在有容量模型的情况下设置行业策略,达到非常贴合实际使用量的效果,实现低成本及架构的最大化升级。

五、总结

 

数字化转型已经渗透到各行各业,不管是因为时间发展原因还是疫情原因,在数字化转型里,企业要有应用好云的能力,来应对业务上的快速变化及高洪峰高流量场景下的挑战,这一过程包含几个阶段:Rehost(新托管)、Re-platform(新平台)、Refactor(新架构),随着架构改造的深入,企业能够获得的云的价值越高,同时迁移改造成本也会随之上涨,如果只是把应用简单托管到云上,很难获得云的弹性能力,遇到问题时还是很难及时处理。

通过 SAE,我们希望能够让用户 0 改造、0 门槛、0 容器基础即可享受到 Serverless + K8s + 微服务的价值红利,最终帮助用户更好面对业务上的挑战。

作者: 陈涛(毕衫)

原文链接

本文为阿里云原创内容,未经允许不得转载

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/514237.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一文了解阿里一站式图计算平台GraphScope

简介: 随着大数据的爆发,图数据的应用规模不断增长,现有的图计算系统仍然存在一定的局限。阿里巴巴拥有全球最大的商品知识图谱,在丰富的图场景和真实应用的驱动下,阿里巴巴达摩院智能计算实验室研发并开源了全球首个一…

c++如何禁用指定的键盘布局_Karabiner Elements for Mac 键盘键位自定义改键工具

文章来源于:风云社区Karabiner Elements for Mac 12.5Karabiner Elements(早期是Karabiner,更早是KeyRemap4MacBook)是功能强大且稳定的macOS键盘定制器。上【风云社区】,搜索软件名字,即可查看下载特征&am…

Docker Desktop 向大公司宣告收费,网友大呼:是时候弃用了!

作者 | 苏宓 出品 | CSDN(ID:CSDNnews) 在容器引擎 Docker 诞生的 8 年间,其与开源的容器编排 Kubernetes 共同推动容器技术在云计算领域的应用,也让自身在全球范围内受到了广泛的关注。可以说,做过云计算开…

如何接地气地接入微前端?

简介: 微前端带来明显好处的同时,也面临着痛点。对于已有站点,如何在老的技术栈基础上接入一个微前端?需要哪些通 一 、前言 微前端,这个概念已经在国内不止一次的登上各大热门话题,它所解决的问题也很明显…

东南亚再造天猫 Lazada品牌商城LazMall举办第二届品牌未来论坛

9月1日,东南亚领先的旗舰电商平台Lazada在新加坡滨海湾金沙会展中心举办了2021 LazMall Brands Future Forum年度品牌未来论坛(以下简称“BFF”)。该论坛以“奔向未来:东南亚的数字商务时代”为主题,在庆祝Lazada品牌商…

高可用的本质

简介: 无论是一个域,一个BG,还是一个站点,虽然范围有大有小,对象有所不同,但其高可用的理念都是相通的,今天将自己对高可用的一点点思考以及总结的【nPRT公式】分享给大家。 我是乐羊&#xff0…

技术干货 | 深度解构 Android 应用面临紧急发版时的救星方案:mPaaS 热修复——DexPatch

简介: 关于 Android 热修复方案——DexPatch 的介绍与使用说明 方案介绍 为了解决 Native 模块上线后的问题,mPaaS 提供了热修复功能,实现不发布客户端 apk 场景下的热修复。目前 Android 端热修复主要包括 andfix 和 dexpatch,考…

李飞飞:阿里云数据库已做好全面服务政企市场的准备

“政企市场是检验云数据库产品竞争力的黄金标准。”9月3日,阿里云智能数据库事业部总负责人李飞飞在北京举办的媒体沟通会上表示,阿里云已经做好全面服务政企数据库市场的准备,并已成功助力多家大型组织实现核心系统对传统商业数据库的替换。…

技术改变生活 浅谈阿里云混合云的探索与实践

简介: 也许你并不了解“阿里云混合云”,甚至没有听说过“混合云”,然而它却在幕后“默默”改变着人们的生活。 也许你并不了解“阿里云混合云”,甚至没有听说过“混合云”,然而它却在幕后“默默”改变着人们的生活。大…

公网访问_一文读懂阿里云访问公网的实现方式

NAT网关与EIP作为公有云服务商,提供互联网的访问和接入是必备的条件,阿里云也不例外。和AWS类似,阿里云访问公网的组件为NAT网关和弹性IP,对于刚刚接触云的童鞋,今天这篇文章带你彻底了解这两个组件的使用场景。弹性IP…

阿里巴巴云原生应用安全防护实践与 OpenKruise 的新领域

简介: 得益于 Kubernetes 面向终态的理念,云原生架构天然具备高度自动化的能力。然而,面向终态的自动化是一把“双刃剑”,它既为应用带来了声明式的部署能力,同时也潜在地会将一些误操作行为被终态化放大。 因此&#…

什么是微内核架构设计?

简介: 作为一名Java程序员,相信同学们都听说过微内核架构设计,也有自己的理解。那么微内核是如何被提出来的?微内核在操作系统内核的设计中又有什么作用?本文从插件化(Plug-in)架构的角度来诠释微内核架构设计&#xf…

给力!斩获 GitHub 14000 Star,两周创办开源公司获数百万美元融资

上世纪 90 年代初,21 岁大学生 Linus Torvalds 开源 Linux 操作系统,自此掀起全球开源浪潮。随后“中国 Linux 第一人”宫敏博士用手提肩背的方式将 20 盒磁带背回中国,磁带里装着 80G 容量的自由软件,组建起中国第一个自由软件库…

函数计算镜像加速:从分钟到秒的跨越

简介: 函数计算 FC 正式发布容器镜像加速,通过按需读取和更高效的解压技术在不同场景下加速 50%-80%,即使 GB 级别的镜像也可以在几秒内完成端到端启动。 FaaS 和容器 容器镜像因其颠覆式创新成为云原生时代应用部署格式的事实标准。头部云厂…

阿里云CDN产品经理陈章炜:边缘创新技术和落地实践

简介: CDN除了加速外,不断被赋予更多价值。在阿里云CDN推出的《极速奔跑吧 2021》首场直播中,阿里云架构师和产品经理不仅对近期阿里云发布的CDN产品最佳实践图进行了详细解读,还对CDN产品和客户的场景如何更高效地匹配、形成最优…

极狐GitLab:从硅谷到中国,远程办公背后的挑战与创新

编辑 | 宋 慧 供稿 | 极狐(GitLab) 头图 | 付费下载于视觉中国 最近,海外的互联网巨头们纷纷开启了远程办公的政策,谷歌允许员工提出更换办公地点的要求或申请成为永久远程办公者,目前已经批准了近 8000 名员工在家办公…

E百科 | 基于MEC的边缘AI服务

简介: 阿里云边缘计算团队付哲解读5G下热门场景:边缘AI。作者:阿里云付哲,计算机科学与技术专业博士后,在流量检测、资源调度领域有深入研究,其论文《Astraea: Deploy AI Services at the Edge in Elegant …

网速dns怎么调快_怎么设置dns?教你快速解决网速慢的问题

体内惊人荒之力很的洪,设置速解速慢设置速解速慢了一但其大批企业高成中中隐藏优质长的,复活,一旦。特斯提高金拉2的第度为的产大量的资7年能投入了三季,教决网仅生0辆产了,理想并不其效果却,交付2辆只有实…

“凡尔赛”式晒校园生活?移动云 9.9 风暴手把手教你!

快开学了卧虎藏龙的校园当然也少不了“凡尔赛大师”看看普通版和进阶版的凡尔赛学霸学神们如何用最低调的话炫最高调的耀LETS GO!考/试/篇假/期/篇生/活/费/篇看完学霸与学神的凡尔赛较量除了羡慕他们能够凡尔赛的资本更重要的是了解到移动云校园套餐原来如!此&…

开源微服务运行时 Dapr 发布 1.0 版本

简介: Dapr 是 2019 年 10 月开源的分布式运行时。早在 Dapr 开源初期,阿里云就开始参与 Dapr 社区建设和代码开发,目前已有两位 Dapr 成员,是 Dapr 项目中除微软之外代码贡献最多的公司。作为 Dapr 项目的早期采用者,…