云效峰会——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月前
|
运维 监控 Cloud Native
自动化运维的魔法书云原生之旅:从容器化到微服务架构的演变
【8月更文挑战第29天】本文将带你领略自动化运维的魅力,从脚本编写到工具应用,我们将一起探索如何通过技术提升效率和稳定性。你将学会如何让服务器自主完成更新、监控和故障修复,仿佛拥有了一本能够自动翻页的魔法书。
|
6月前
|
运维 监控 Docker
构建高效微服务架构:从理论到实践构建高效自动化运维体系:Ansible与Docker的完美融合
【5月更文挑战第31天】 在当今软件开发的世界中,微服务架构已经成为了实现可伸缩、灵活且容错的系统的关键策略。本文将深入探讨如何从零开始构建一个高效的微服务系统,涵盖从概念理解、设计原则到具体实施步骤。我们将重点讨论微服务设计的最佳实践、常用的技术栈选择、以及如何克服常见的挑战,包括服务划分、数据一致性、服务发现和网络通信等。通过实际案例分析,本文旨在为开发者提供一套实用的指南,帮助他们构建出既健壮又易于维护的微服务系统。
|
25天前
|
运维 资源调度 调度
容器微服务运维
【10月更文挑战第16天】业务容器化后,运维需采用面向容器的新型平台,主要由镜像仓库、资源调度、容器调度、调度策略和服务编排组成。镜像仓库负责存储与分发容器镜像,支持权限控制、镜像同步和高可用性设计;资源调度解决不同环境下的机器部署问题;容器调度实现容器在主机上的合理分配;调度策略优化容器主机选择;服务编排则处理服务间的依赖关系和服务发现,支持自动扩缩容以适应业务需求变化。
|
2月前
|
运维 Cloud Native Devops
云原生架构的崛起与实践云原生架构是一种通过容器化、微服务和DevOps等技术手段,帮助应用系统实现敏捷部署、弹性扩展和高效运维的技术理念。本文将探讨云原生的概念、核心技术以及其在企业中的应用实践,揭示云原生如何成为现代软件开发和运营的主流方式。##
云原生架构是现代IT领域的一场革命,它依托于容器化、微服务和DevOps等核心技术,旨在解决传统架构在应对复杂业务需求时的不足。通过采用云原生方法,企业可以实现敏捷部署、弹性扩展和高效运维,从而大幅提升开发效率和系统可靠性。本文详细阐述了云原生的核心概念、主要技术和实际应用案例,并探讨了企业在实施云原生过程中的挑战与解决方案。无论是正在转型的传统企业,还是寻求创新的互联网企业,云原生都提供了一条实现高效能、高灵活性和高可靠性的技术路径。 ##
196 3
|
3月前
|
运维 Kubernetes 安全
云时代的运维之光:容器化与微服务架构的融合之道
在数字化浪潮中,企业IT架构的演进从未停歇。本文以浅显的语言探讨了容器技术与微服务架构如何协同工作,提高运维效率。我们将从基础概念出发,逐步深入到它们在实际工作中的应用,最后分享一些行业内的最佳实践。无论你是运维新手还是资深专家,这篇文章都将为你带来新的视角和思考。
|
3月前
|
Cloud Native Serverless 云计算
云原生时代的技术演进:从微服务到Serverless
在数字化转型的浪潮中,云原生技术正成为推动企业IT架构现代化的重要力量。本文将探讨云原生技术的关键组成部分—微服务与Serverless架构—如何助力企业实现敏捷开发和高效运维。通过深入分析这两种架构模式的优势与挑战,我们旨在为读者揭示云原生环境下的最佳实践和未来发展趋势。
|
4月前
|
运维 Serverless Nacos
Serverless 应用引擎使用问题之怎么查看是否已开通微服务引擎MSE
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
3月前
|
运维 Cloud Native 持续交付
"揭秘云原生技术:从容器化到微服务,自动化运维如何重塑未来应用架构?悬念重重,等你来探!"
【8月更文挑战第21天】随着云计算的迅猛发展,云原生技术作为设计云应用的最佳实践,正驱动企业数字化转型。本文解析云原生技术概念与特性,通过容器化(如Docker)、微服务架构(如Spring Boot)、自动化运维(如Jenkins)及持续交付等关键领域,并辅以代码实例,探讨云原生在电商等行业的应用,展现其如何助力企业实现高效、灵活与可靠的系统构建,促进业务增长。
78 0
|
4月前
|
Kubernetes Cloud Native 持续交付
云原生架构的核心组成部分通常包括容器化(如Docker)、容器编排(如Kubernetes)、微服务架构、服务网格、持续集成/持续部署(CI/CD)、自动化运维(如Prometheus监控和Grafana可视化)等。
云原生架构的核心组成部分通常包括容器化(如Docker)、容器编排(如Kubernetes)、微服务架构、服务网格、持续集成/持续部署(CI/CD)、自动化运维(如Prometheus监控和Grafana可视化)等。
|
4月前
|
弹性计算 运维 Kubernetes
自动化运维的新篇章:容器编排与微服务架构
【7月更文挑战第14天】在数字化转型的浪潮中,企业对运维效率和系统可靠性的需求日益增长。本文深入探讨了自动化运维的最新趋势——容器编排和微服务架构,并阐述了如何通过这些技术提升运维效率、降低系统复杂性以及提高服务的可用性和可扩展性。文章不仅介绍了相关技术和工具的选择,还提供了实际案例分析,旨在为读者提供一套完整的解决方案框架,以适应快速变化的市场需求。

热门文章

最新文章

相关产品

  • 函数计算