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

本文涉及的产品
Serverless 应用引擎免费试用套餐包,4320000 CU,有效期3个月
函数计算FC,每月15万CU 3个月
简介: 云效峰会——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上托管它的应用,我们也需要降低用户在使用这方面的门槛,我们后续会建设应用大盘事件中心等

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
3天前
|
运维 应用服务中间件 Linux
自动化运维的利器:Ansible在配置管理中的应用
【10月更文挑战第39天】本文旨在通过深入浅出的方式,向读者展示如何利用Ansible这一强大的自动化工具来优化日常的运维工作。我们将从基础概念讲起,逐步深入到实战操作,不仅涵盖Ansible的核心功能,还会分享一些高级技巧和最佳实践。无论你是初学者还是有经验的运维人员,这篇文章都会为你提供有价值的信息,帮助你提升工作效率。
|
24天前
|
机器学习/深度学习 人工智能 运维
企业内训|LLM大模型在服务器和IT网络运维中的应用-某日企IT运维部门
本课程是为某在华日资企业集团的IT运维部门专门定制开发的企业培训课程,本课程旨在深入探讨大型语言模型(LLM)在服务器及IT网络运维中的应用,结合当前技术趋势与行业需求,帮助学员掌握LLM如何为运维工作赋能。通过系统的理论讲解与实践操作,学员将了解LLM的基本知识、模型架构及其在实际运维场景中的应用,如日志分析、故障诊断、网络安全与性能优化等。
54 2
|
7天前
|
机器学习/深度学习 数据采集 人工智能
智能化运维在现代IT基础设施中的应用与价值####
本文探讨了智能化运维(AIOps)在现代IT基础设施管理中的实际应用、面临的挑战及其带来的深远影响。通过引入先进的算法和机器学习模型,智能化运维不仅提高了故障检测与响应的速度,还显著优化了资源配置,降低了运营成本,为企业数字化转型提供了强有力的技术支撑。 ####
|
5天前
|
机器学习/深度学习 人工智能 运维
智能运维在现代IT系统中的应用与挑战####
本文深入探讨了智能运维(AIOps)在现代IT系统中的关键作用,通过具体案例分析,揭示了其在提升系统稳定性、优化资源配置及自动化故障处理方面的显著优势。同时,文章也指出了实施智能运维过程中面临的数据安全、技术整合及人员技能转型等挑战,并提出了相应的解决策略,为读者提供了全面而深刻的见解。 ####
27 6
|
5天前
|
人工智能 运维 监控
智能运维在现代数据中心的应用与挑战
随着云计算和大数据技术的迅猛发展,现代数据中心的运维管理面临着前所未有的挑战。本文探讨了智能运维技术在数据中心中的应用,包括自动化监控、故障预测与诊断、资源优化等方面,并分析了当前面临的主要挑战,如数据安全、系统集成复杂性等。通过实际案例分析,展示了智能运维如何帮助数据中心提高效率、降低成本,并提出了未来发展趋势和建议。
|
6天前
|
运维 Ubuntu 应用服务中间件
自动化运维工具Ansible的实战应用
【10月更文挑战第36天】在现代IT基础设施管理中,自动化运维已成为提升效率、减少人为错误的关键手段。本文通过介绍Ansible这一流行的自动化工具,旨在揭示其在简化日常运维任务中的实际应用价值。文章将围绕Ansible的核心概念、安装配置以及具体使用案例展开,帮助读者构建起自动化运维的初步认识,并激发对更深入内容的学习兴趣。
26 4
|
5天前
|
运维 安全 应用服务中间件
自动化运维的利剑:Ansible在配置管理中的应用
【10月更文挑战第37天】本文将深入探讨如何利用Ansible简化和自动化复杂的IT基础设施管理任务。我们将通过实际案例,展示如何用Ansible编写可重用的配置代码,以及这些代码如何帮助运维团队提高效率和减少人为错误。文章还将讨论如何构建Ansible playbook来自动部署应用、管理系统更新和执行常规维护任务。准备好深入了解这个强大的工具,让你的运维工作更加轻松吧!
19 2
|
11天前
|
数据采集 机器学习/深度学习 运维
智能化运维在现代IT系统中的应用与挑战####
【10月更文挑战第29天】 本文探讨了智能化运维(AIOps)在现代IT系统中的重要作用及其面临的主要挑战。通过引入机器学习和大数据分析,智能化运维能显著提高系统稳定性、降低运营成本,并增强故障预测能力。然而,数据质量、技术整合及安全性等问题仍是其广泛应用的主要障碍。本文详细分析了这些挑战,并提出了相应的解决方案和未来发展趋势。 ####
35 5
|
13天前
|
机器学习/深度学习 数据采集 运维
智能化运维:机器学习在故障预测和自动化响应中的应用
智能化运维:机器学习在故障预测和自动化响应中的应用
38 4
|
15天前
|
运维 Serverless 数据处理
Serverless架构通过提供更快的研发交付速度、降低成本、简化运维、优化资源利用、提供自动扩展能力、支持实时数据处理和快速原型开发等优势,为图像处理等计算密集型应用提供了一个高效、灵活且成本效益高的解决方案。
Serverless架构通过提供更快的研发交付速度、降低成本、简化运维、优化资源利用、提供自动扩展能力、支持实时数据处理和快速原型开发等优势,为图像处理等计算密集型应用提供了一个高效、灵活且成本效益高的解决方案。
51 1

热门文章

最新文章

相关产品

  • 函数计算