云效峰会——Serverless时代下大规模微服务 应用运维的最佳实践

简介: 云效峰会——Serverless时代下大规模微服务 应用运维的最佳实践


作者:陈涛(毕衫)

内容简要:

一、微服务架构的优点和痛点

二、全面Serverless时代下的解决方案

三、SAE的技术原理和极致弹性建设

四、总结和展望

一、微服务架构的优点和痛点

(一)、微服务架构诞生背景

image.png

互联网早期时代,也就是Web1.0时代,当时主要还是一些门户网站,这时候主流的应用还是单体应用,研发团队也相对较小,这个时候的挑战在于技术的复杂度,包括技术人员的相对匮乏

后续到达了新世纪互联网时代,此时已经出现了较大规模的一些应用,包括社交电商等,这时候已经出现了流量的激增,包括业务复杂度也大增,已经出现了几百甚至上千人的一个研发团队,研发团队之间的协作也已经很成问题。

在那个时代相信大家都听说过SOA这个解决方案,它的核心其实也在于分布式拆分等等,但是它可能因为还是有ESB这样的一些单点的组件,所以没有得到很好的推广,而阿里巴巴在当时推出的HSF包括开源的Dubbo等技术,其实也是类似分布式的一个解决方案,这时已经有了微服务架构的理念

微服务架构正式名称的诞生,还要到下一个阶段,也就是移动互联网时代,在这个时代生活已经全面互联网化,各种各样的生活APP都已经出现,这时候的网民以及流量复杂度相对于上一个时代有了更大的增强。

另外,较大规模的研发团队也已经成为主流,这时候大家普遍都对效率有了更高的追求,而不是原来只有几个巨头需要有这方面的技术。而这时候微服务架构以及微服务技术的一些推出,包括Spring Cloud、Dubbo等框架的普及,极大地将微服务的技术推广开来。

近些年已经进入全面的数字化时代,社会进行全面的互联网化,各种各样的单位,包括政企,包括一些相对传统的单位都需要比较强的研发能力,这时候也许流量的挑战不是最大的,但是这些相对一些传统业务的复杂度挑战还是足够大的,而且研发团队也仍然足够大。

所以在这里面,大家还是有效率的要求,这相当于使微服务架构得到了进一步的推广和普及。

(二)、微服务架构的优点

我们看到,微服务架构经过这么多年的发展,是一个经久不衰在持续发展的技术,那么它为什么能够有这样一个持续的发展呢?我们可以回顾一下它和单体架构的区别以及它的核心优势。

image.png

我们可以看到,单体架构核心的问题主要在于冲突域太大,包括共享代码库,大家在研发的过程中特别容易冲突,边界不清,模块的规模也不清,包括团队效率也会大幅降低。在微服务架构下,它的核心就在于拆分,包括解耦了研发态,解耦了部署态,极大释放团队的研发效率,大道至简,这也是微服务的架构为什么能够持续发展的一个原因。

(三)、微服务时代痛点

根据复杂性守恒定律,我们解决了一个问题,问题会以另一种形式出现,我们又需要去解决。

可以看到,微服务时代下会引入非常多的一些痛点,核心的就是稳定性。因为从原来的一些本地调用改成远程调用以后,可能会发生稳定性的点就激增,包括调度放大,也就是说可能因为底层的一些远程调用的问题,造成上层的一些不稳定,以及我们需要做的限流降级,调用链等等。

image.png

而且在微服务时代可能定位一个问题的复杂度,也呈指数式增长,这里面大家可能还需要服务治理。另外如果没有较好的设计和预先的一些设想,可能微服务应用的爆炸,包括研发人员和测试人员之间的协作也都会很成问题。

微服务技术经过这些年的发展,业界其实已经有了一些解决方案。

image.png

如上图所示,如果要比较好地玩转微服务技术,大家除了开发自己的业务系统以外,可能还要配套搭建这么多系统,包括CICD发布系统,研发流程、微服务组件相关的一些工具,及可观测性相关的实时监控、告警系统、服务治理、调用链等,以及还需要运维基础的IaaS资源在现在这个时代,大家为了更好运维IaaS资源,可能还需要自己维护一个K8s集群。

所以说在这样的背景下,很多企业会选择搭建一个运维团队或者中间件团队,或者说由一些后端研发同学兼职,但试想有多少企业对自己内部搭建的这套系统是满意的,它的迭代效率是多少,它有没有踩到过一些开源的坑,包括这些坑现在有没有解决,还是大家在持续忍受,我想这应该是在企业的CTO架构师当中一个持续的痛点。

二、全面Serverless时代下的解决方案

(一)、Serverless时代

接下来我们看一下基于上述痛点下Serverless时代下的解决方案

image.png

先简单介绍一下Serverless时代的发展历程,从2012年第一次提出Serverless概念,2014年推出了Lambda产品,它短暂达到了一个影响力的顶峰。

但是这样的一个新生事物突然到真实复杂的生产环境,它其实有许多的不适应,包括需要改善的地方,所以后续几年它又进入一个低谷,但是Serverless理念将简单交给用户,复杂留给平台,是非常正确的一个方向。

所以说在开源界包括业界,其实都在持续性进行Serverless方面的一些探索和发展。阿里云在2017年推出了Function,在2018年推出了SAE,在2019年后持续在Serverless领域进行投入,支持了镜像部署,预留实例,包括微服务的场景等。

(二)、Serverless市场概况

我们再来简单的了解一下Serverless市场的概况。

image.png

在2021年最新的Forest评测中,阿里云Serverless产品能力中国第一全球领先,阿里云Serverless用户占比也是中国第一,这侧面说明了阿里云Serverless已经越来越多进入到企业真实的生产环境中,越来越多企业认可Serverless以及阿里云Serverless的能力和价值

image.png

回到我们之前的那一张图,可以看到在传统的微服务架构下面,企业要用好微服务相关的技术,需要自己研发非常多的解决方案,那么在Serverless时代下SAE这个产品里面,它是怎么解决的?

(三)、SAE整体解决方案

image.png

我们可以看到SAE将Serverless这个理念发扬到了极致,不仅仅托管了IaaS资源,包括上层的K8s另外还集成了白屏化的PaaS以及企业级微服务相关的套件,包括可观测相关的套件

SAE整体解决方案里面,针对这些都进行了很好的集成,给用户提供了一个开箱即用的微服务解决方案,让企业和开发者能够很简单使用起服务,具体SAE各个模块是怎么解决微服务相关的一些门槛,我们下面一一展开阐述

(四)、SAE整体解决方案-0门槛PaaS

image.png

首先是0门槛PaaS这个模块,可以看到SAE在最上层给用户提供一个白屏化的操作系统,它的设计理念非常符合企业一般的PaaS系统,包括发布系统或者一些开源的PaaS系统,这样极大降低了企业上手SAE的门槛,甚至可以说0门槛,包括它也集成了阿里巴巴最佳的一些发布实践发布三板斧,可度、可监控可回滚等。

另外,它也提供了一些企业级能力的增强,包括命名空间环境隔离,细粒度的权限控制等。在上图右边可以看到在一个企业里面,如果有两个相互比较独立的模块,完全可以通过命名空间进程进行隔离。

(五)、SAE整体解决方案-微服务治理增强

image.png

在微服务治理增强方面,特别是在Java语言,SAE采用了一个Agent,对用户来说相当于是无侵入无感知零升级,而且这个Agent全面兼容开源,使用户几乎在无修改的情况下,就可以使用无损下线,API管理、限流降级、链路追踪等能力

(六)、SAE整体解决方案-前后端全链路灰度

image.png

这里展开两个能力,第一个能力是前后端全链路灰度,SAE借助前面提到的Agent的技术,从Web请求到网关,到Consumer到Provider进行了全链路的打通,使用户可以很简单白屏化配置,就可以实现一个灰度发布的场景,而这样的技术如果企业需要自建,相信这里面的复杂度大家应该是非常清楚的。

(七)、SAE整体解决方案 - CloudToolkit端云联调

image.png

第二点就是CloudToolkit端云联调,大家都知道微服务的场景下面应用数量是呈现爆炸的趋势,如果我本地需要开发,都需要启动那么多的一些应用,我如何能够安全并且联调云上的一个服务。

现在借助于CloudToolkit,在Idea包括Eclipse这样的IDE里面提供了插件,用户可以很简单在本地打通云上的环境,进行端云联调,极大降低开发测试的门槛。

(八)、SAE整体解决方案-强大的应用监控&诊断

image.png

前面介绍了在微服务的场景下,因为微服务的急剧发散,调用链路的极度增长,那在有问题的场景下面,定位问题是非常复杂的。

SAE集成了阿里云各种各样可观测的产品,包括普罗米修斯、基础监控等等,在Tracing、Logging、Metrics等方面都提供了丰富的解决方案,包括请求链路的查询,常用诊断场景的指标分析,基础监控,实时日志事件通知等等,极大降低企业在服务台运行场景下的一些市场定位问题。

三、SAE的技术原理和极致弹性建设

(一)、SAE整体解决方案

接下来介绍SAE的技术原理和极致弹性建设。

image.png

还是回到这张图前面我们已经针对三部分,也就是0门槛PaaS企业级微服务套件可观测进行了一个讲解。现在要介绍Serverless的一个核心模块,也就是IaaS层的免运维以及弹性能力的建设。

(二)、SAE业务架构

image.png

我们看一下上方SAE的业务架构图,就可以相对比较清晰地看出,在SAE里面IaaS资源包括存储网络等等是不需要用户关心的。

另外SAE也托管了K8s PaaS层的一个组件,相当于用户也不需要自己去运维一个K8s在K8s之上SAE提供了微服务治理,应用生命周期管理等增强的能力。

另外在弹性方面,SAE的弹性能力达到了15秒,我相信在很多企业级场景下已经足够开发者较好的应对一些突发流量情况。另外通过一些多套环境以及一些最佳实践,可以达到一个降本增效的效果。

(三)、SAE技术架构

image.png

那么SAE是怎么建设免运维,对用户来说相当于不需要托管的Iaas资源以及K8s资源

在这里我们可以看到,SAE底层采用了一种安全容器的技术,相比于runC场景下的Docker安全容器相当于提供了虚拟级别的安全解决方案。在runC场景下,由于共享内核,其实在公有云产品上,A用户有可能穿透到B用户的一个容器内,造成一些安全风险

采用安全容器的技术,也就是虚拟机相关的安全技术,达到了生产级别的安全隔离,包括安全容器也兼容了K8s以及容器的生态,这样安全容器加容器生态的结合,就实现了较好的安全加效率的平衡

另外,在存储和网络的隔离方面,SAE不仅仅需要考虑传统K8s上的网络隔离,也需要考虑在公有云产品下,大部分用户已经在公有云上有非常多的一些存储资源网络资源也需要进行一个打通。

SAE是采用了云产品的ENI网卡技术,将ENI网卡直通到了安全箱内,这样相当于用户不仅仅实现了计算层的隔离,也实现了网络层的打通。

(四)、SAE技术架构

image.png

刚才提到的安全容器技术,可以看到现在主流的安全容器技术有Kata、Firecracker、gVisor等等,在SAE里面采用了最早也是最成熟的Kata技术来实现计算层安全的隔离。另外,安全容器不仅实现了安全隔离,也实现了性能隔离和故障隔离。

举一个比较好理解的例子,在runC大家共享内核的场景下,一个用户的Container造成了一些内核的故障,是直接可能影响到物理机的,在SAE使用安全容器基础上就没有这方面的风险,最多只会影响到那一个安全容器。

(五)、极致弹性 极致成本

前面分享了SAE Serverless场景下安全隔离,包括网络隔离和联通的核心技术,接下来分享一下在弹性能力、弹性效率方面建设以及一些技术原理。

image.png

可以看到如果弹性效率达到了极致,用户的成本也可以达到极致。通过左右两边图的对比,大家可以非常理解,弹性对用户成本可以达到的效果。

(六)、SAE极致弹性建设:部署&重启

image.png

SAE在弹性方面做了哪些事情呢?

可以看到传统的K8s的一个Pod的创建过程需要经过调度,init container创建拉取用户镜像,创建用户容器,启动用户容器,应用运行等等阶段它虽然符合K8s的设计理念和规范,但是在生产环境下,对一些追求效率的场景,其实就不太满足企业级的要求。

SAE借助于阿里巴巴开源的OpenKruise里面的CloneSet组件的原地升级策略,相当于不需要重建整个POD,而只需要重建里面的Container,省去了调度以及Init container创建的一个过程部署效率达到了42%的提升。

(七)、SAE极致弹性建设:弹性扩容

image.png

另外在镜像预热场景,我们也实现了一个并行的调度,可以看到在标准的场景下,调度道路拉取倾向是一个创新的过程。

我们做了一个优化,就是在识别到Pod即将调入到哪个物理机的时候,我们就会并行地开始拉取用户的镜像,这样也可以达到弹性效率30%的提升。

(八)、SAE极致弹性建设:Java启动加速

image.png

在应用启动这个阶段,我们也做了一些弹性效率能力提升的事情,典型的比如说Java的应用,在Serverless场景下其实一直有启动慢的痛点,核心在于Java需要一个Class的加载

在一些企业级的应用里面,针对成千上万的Class的加载,这是一个相对较缓慢的过程。那SAE结合阿里巴巴开源的Drangonwell 11实现了AppCDS的技术,它会在应用第一次启动的时候,将Class加载打到一个压缩包中,后续的应用加载,只需要加载压缩包即可,免去了大量Class的初始化的加载,实现了部署效率45%的提升。

(九)、SAE极致弹性建设

在应用运行态,我们也做了一些弹性方面的增强。

我们都知道微服务的应用通常会需要配置非常多的线程,这些线程通常和Linux的底层线程是一一对应的在高并发场景下这里面就会有较大的线程切换的开销。

image.png

SAE结合阿里巴巴开源的Drangonwell Wisp携程的技术,将上层的几百个线程对应到了底层的十几个线程,极大降低了线程切换的开销

image.png

上图是我们一个压测的数据红线就是使用了Drangonwell Wisp的技术,可以看到运行效率有20%左右的提升。

以上就是SAE在ServerlessIaaS托管以及K8s托管方面,以及在弹性效率方面建设的一些技术原理和效果。

四、总结和展望

最后再进行简单的总结和展望。

image.png

我们可以看到SAE相当于从原来微服务用户需要自建非常多的组件,包括PaaS微服务一些技术框架,运维IaaS、K8s、可观测组件等等,SAE针对这些方面都做了整体的解决方案

用户只需要关注自己的业务系统,极大降低了用户使用微服务技术的门槛,后续SAE针对每个模块也会持续的做能力的建设。

首先,在0门槛PaaS方面,微服务会持续的做一些云产品的集成,包括CICD工具链,另外也会做企业级的能力增强,比如审批流另外在Serverless免运维极致弹性方面,我们也会提供越来越多的弹性能力,弹性指标,包括弹性效率,我们也会持续的建设。另外也会提供类似AI预测这样弹性的解决方案,降低用户设置弹性指标的时候的心智负担。

另外在微服务生态方面,我们也会和微服务的企业套件做更多的集成,进一步降低大家使用微服务技术的门槛,比如说混沌工程,远程调试能力增强等等。

最后在可观测方面,SAE相当于运维了用户的应用,那么可观测对于SAE本身或者说对平台本身也是一个非常重要的能力,在这方面我们会持续做相应的一些监控告警,包括预案和灰度建设等等。

另外对用户来说,用户也需要相当于在SAE上托管它的应用,我们也需要降低用户在使用这方面的门槛,我们后续会建设应用大盘事件中心等

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
7月前
|
人工智能 运维 Serverless
GPU 降成本免运维,睿观 AI 助手选择函数计算
从跨境电商 ERP 到“睿观 AI 助手”,阿里云函数计算的支持下,深圳三态股份利用 AI 技术快速完成专利、商标、版权等多维度的侵权风险全面扫描。结合函数计算实现弹性算力支持,降低成本并提升效率,实现业务的快速发展。
|
10月前
|
Cloud Native Serverless 流计算
云原生时代的应用架构演进:从微服务到 Serverless 的阿里云实践
云原生技术正重塑企业数字化转型路径。阿里云作为亚太领先云服务商,提供完整云原生产品矩阵:容器服务ACK优化启动速度与镜像分发效率;MSE微服务引擎保障高可用性;ASM服务网格降低资源消耗;函数计算FC突破冷启动瓶颈;SAE重新定义PaaS边界;PolarDB数据库实现存储计算分离;DataWorks简化数据湖构建;Flink实时计算助力风控系统。这些技术已在多行业落地,推动效率提升与商业模式创新,助力企业在数字化浪潮中占据先机。
543 12
|
11月前
|
存储 NoSQL 关系型数据库
微服务——MongoDB的应用场景
随着Web2.0时代的到来,传统关系型数据库(如MySQL)在高并发读写、海量数据存储及高可扩展性需求方面逐渐力不从心。而MongoDB凭借其灵活的文档结构和高效性能,在社交、游戏、物流、物联网和视频直播等场景中表现出色。这些场景通常具有数据量大、写入频繁且对事务要求不高的特点。选择MongoDB适合以下情况:应用无需复杂事务与join支持、需求不确定需快速迭代、需处理高QPS读写或超大规模数据存储、追求高可用性和快速水平扩展能力。相比MySQL,MongoDB能以更低的学习、开发和运维成本满足现代应用需求。
370 0
|
人工智能 运维 Devops
基于云效落地平台工程企业级最佳实践
本文介绍了平台工程作为DevOps演进的必然方向,探讨了其建设过程中面临的挑战及解决方案。文中首先分析了平台工程与DevOps的关系,强调了其在提升价值交付和降低团队心智负担方面的作用。接着,通过云效作为基础设施,详细阐述了其如何帮助企业构建高效的研发平台,并分享了两个实际案例:一个是200人规模的互联网企业,另一个是2000人规模的金融行业企业。最后,展望了平台工程的未来发展方向,包括组件化开发、AI技术的应用以及智能化场景的融入。碧桂园生活服务集团也分享了其在平台工程领域的实践经验和未来思考,强调了标准化、自动化、可靠性和智能化四大原则的重要性。
359 10
|
Cloud Native 安全 持续交付
深入理解微服务架构及其在现代软件开发中的应用
深入理解微服务架构及其在现代软件开发中的应用
427 33
|
存储 文件存储 对象存储
AI 场景下,函数计算 GPU 实例模型存储最佳实践
当前,函数计算 FC 已被广泛应用在各种 AI 场景下,函数计算支持通过使用容器镜像部署 AI 推理应用,并且提供多种选项来访问训练好的模型。为了帮助开发者高效地在函数计算上部署 AI 推理应用,并快速解决不同场景下的模型存储选型问题,本文将对函数计算的 GPU 模型存储的优缺点及适用场景进行对比分析,以期为您的模型存储决策提供帮助。
|
11月前
|
存储 文件存储 对象存储
AI 场景下,函数计算 GPU 实例模型存储最佳实践
AI 场景下,函数计算 GPU 实例模型存储最佳实践
270 0
|
11月前
|
消息中间件 运维 安全
云消息队列 ApsaraMQ Serverless 演进:高弹性低成本、更稳定更安全、智能化免运维
云消息队列 ApsaraMQ Serverless 演进:高弹性低成本、更稳定更安全、智能化免运维
268 0
|
弹性计算 运维 网络协议
卓越效能,极简运维,Serverless高可用架构
本文介绍了Serverless高可用架构方案,当企业面对日益增长的用户访问量和复杂的业务需求时如何实现更高的灵活性、更低的成本和更强的稳定性。
|
弹性计算 运维 Serverless
卓越效能,极简运维,体验Serverless高可用架构,完成任务可领取转轮日历!
卓越效能,极简运维,体验Serverless高可用架构,完成任务可领取转轮日历!

热门文章

最新文章

相关产品

  • 函数计算