Serverless 时代下大规模微服务应用运维的最佳实践

本文涉及的产品
Serverless 应用引擎免费试用套餐包,4320000 CU,有效期3个月
函数计算FC,每月15万CU 3个月
简介: 原来的微服务用户需要自建非常多的组件,包括 PaaS 微服务一些技术框架,运维 IaaS、K8s,还包括可观测组件等。SAE 针对这些方面都做了整体的解决方案,使用户只需要关注自己的业务系统,这极大地降低了用户使用微服务技术的门槛。

作者 | 陈涛

微服务架构的优点和痛点

1、微服务架构的诞生背景


1.jpg


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


到了新世纪互网时代,出现了较大规模的一些应用,比如社交、电商等,流量和业务的复杂度也大幅增加,出现了几百甚至上千人的研发团队,研发团队扩大之后,协作问题成为困扰。SOA 解决方案是互联网的产物,其核心在于分布式、拆分等。但是因为 ESB 这样一些单点的组件,所以没有得到很好的推广。阿里巴巴在当时推出的 HSF、开源的Dubbo 等技术,其实是类似于分布式的一个解决方案,当时就已经有了微服务架构的理念。

微服务架构正式名称的诞生是在移动互联网时代,这时的生活已经实现全面互联网化,各种各样的生活类 APP 涌现,网民以及流量复杂度相对于新世纪互联网时代显著增强。另外,较大规模的研发团队也已成为主流。这时候,大家普遍都对效率有了更高的追求,而不只是原来只有几个巨头需要有这方面的技术。微服务架构以及微服务技术的推出,如 Spring  Cloud、Dubbo 等框架的普及,极大地推广了微服务技术。

现在我们已经进入全面的数字化时代,社会全面互联网化,各种各样的单位(包括政企、相对传统的单位)都需要较强的研发能力。流量的挑战、业务复杂度的挑战、研发团队的扩大等,使得大家对效率有了更高的要求。这时候微服务架构得到了进一步的推广和普及。


微服务架构经过这么多年的发展,是经久不衰的一项技术,为什么它能够有这样持续的发展?


2、微服务架构的优点

2.jpg


我们来回顾一下微服务架构和单体架构的区别,以及微服务架构的核心优势。

单体架构核心的问题在于冲突域太大,包括共享代码库。在研发过程中特别容易冲突;边界和模块的规模不清,使得团队效率也会降低。

而在微服务架构下,核心就在于拆分,包括解耦的研发态,解耦的部署态,极大地释放了团队的研发效率。大道至简,这也是微服务架构为什么能够持续发展的一个原因。

3、微服务时代痛点


3.jpg


根据复杂性守恒定律,我们解决了一个问题,问题会以另一种形式出现,我们又需要去解决。可以看到,微服务时代下会引入非常多的一些痛点,核心就是稳定性。因为从原来的一些本地调用改成远程调用以后,可能会发生稳定性的点激增,包括调度放大,即可能因为底层的一些远程调用问题,造成上层的一些不稳定,以及期间需要做的限流降级、调用链等。

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


4.jpg


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

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

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


Serverless时代下的解决方案

1、Serverless时代


5.jpg

Serverless 从2012年第一次提出,到 2014年 推出了 Lambda 这样一个引爆性的产品后,短暂地达到了一个影响力的顶峰。但是这样一个新生事物,突然到真实的、复杂的生产环境中,其实有许多不适应,包括需要改善的地方,所以后续几年它可能要进入一个低谷。


但是,Serverless 的“将简单交给用户,复杂留给平台”的理念,其实是非常正确的一个方向。所以在开源界包括业界,其实都在持续性地进行 Serverless 方面的一些探索和发展。

阿里云在2017年推出了函数计算(Function Compute,FC),在2018年推出了Serverless应用引擎 SAE,在 2019年以及后续的这些年,阿里云持续地在 Serverless 领域进行投入,支持了包括镜像部署、预留实力、微服务场景等。


2、Serverless 市场概况


6.jpg


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


3、SAE解决方案


7.jpg


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


我们可以看到,SAE 将 Serverless 这个理念发扬到了极致,不仅仅托管了 IaaS 资源,包括上层的 K8s,另外还集成了白屏化的 PaaS 以及企业级微服务相关的套件和可观测相关的套件。在 SAE 整体解决方案里面,针对这些都进行了很好的集成,给用户提供了一个开箱即用的微服务解决方案,让企业和开发者能够很简单地使用微服务。


1、0 门槛 PaaS


8.jpg


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


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


2、微服务治理增强


9.jpg


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


3、前后端全链路灰度


10.jpg


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


4、CloudToolkit 端云联调


11.jpg


第二个能力就是 CloudToolkit 的端云联调。大家都知道微服务的场景下面应用数量是呈现一个爆炸的趋势,如果本地需要开发,需要启动那么多的应用,如何能够安全便捷地联调云上的一个服务?现在借助 CloudToolkit,用户可以很简单地在本地就打通云上的环境,进行一个端云联调,极大地降低开发测试的门槛。


5、强大的应用监控 & 诊断


12.jpg


在微服务的场景下,因为微服务的急剧发散、调用链路的极度增长,在有问题的场景下面定位问题是非常复杂的。而 SAE 集成了阿里云各种各样的可观测产品,包括Prometheus、IaaS、SLS、基础监控等,在 Tracing Logging Metrics 等方面都提供了丰富的解决方案,包括请求链路的查询,常用的诊断场景的指标分析,基础监控、实时日志、事件通知等等,这些都能极大地降低企业在微服务台运行场景下的一些日常定位问题。

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


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


1、SAE 业务架构


13.jpg


通过这张 SAE 的业务架构图,大家就可以相对比较清晰地看出,在SAE里面 IaaS 资源包括存储、网络等是不需要用户关心的。另外 SAE 也托管了 K8s 这个 PaaS 层的一个组件,相当于用户也不需要自己去运维 K8s 。在 K8s 层之上,SAE 提供了微服务治理、应用生命周期管理等增强的能力。另外在弹性方面,SAE 的弹性能力达到了15秒,相信在很多企业级的场景下,这已经能帮助开发者较好地应对一些突发流量的情况。另外通过多套环境以及一些最佳实践,可以达到一个降本增效的效果。

2、SAE 技术架构


14.jpg

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

上图中可以看到,SAE 底层其实是采用了一种安全容器的技术,相比于Docker,安全容器相当于提供了虚拟机级别的一个安全解决方案。在 RunC 场景下,由于共享内核其实在公有云产品上,a用户有可能穿透到 b 用户的一个容器内,造成一些安全风险。采用安全容器的技术,也就是虚拟机相关的安全技术,达到了一个生产级别的安全隔离,包括安全容器也进入了 K8s 以及容器的生态。这样安全容器+容器生态的结合,就实现了较好的安全+效率的一个平衡。


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

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

15.jpg

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

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


3、极致弹性 极致成本


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

16.jpg


1、SAE 极致弹性建设:部署 & 重启


17.jpg


SAE 在弹性方面做了哪些事情呢?可以看到传统的 K8s 的一个 Pod 的创建过程需要经过调度、init container的创建、拉取用户镜像、创建用户容器、启动用户容器、应用运行等等阶段,它虽然符合 K8s 的设计理念和规范,但是在生产环境下,对一些需要相对比较要求效率的场景,其实就不太满足企业级的要求。而 SAE 借助于阿里巴巴开源里面的 CloneSet 组件的原地升级策略,相当于不需要重建整个 Pod,而只需要重建里面的 container 省去了调度以及 innt containr 创建的一个过程,部署效率达到了 42% 的提升。


2、SAE 极致弹性建设:弹性扩容


18.jpg


在镜像预热场景 SAE 也实现了一个并行的调度。可以看到,在标准的场景下,调度到用户拉取镜像是一个串行的过程。那么在此做了一个优化,就是在识别到 pod 即将调入到单个物理机的时候,它就会并行地开始拉取用户的镜像,这样也可以达到一个弹性效率 30% 的提升。


3、SAE 极致弹性建设:Java启动加速


19.jpg


那么在应用启动这个阶段,我们也做了一些弹性效率能力提升的事情。比如说 Java 的应用,在 Serverless 场景下其实一直有启动慢的痛点,核心在于 Java 需要一个个加载。而在一些企业级的应用里面,针对成千上万的 class 的加载,这肯定是一个相对较缓慢的过程。


SAE 结合阿里巴巴开源的 Dragonwell 实现了 App CDS 的技术,它会在应用第一次启动的时候,将 class 加载打到一个压缩包中,后续的应用加载,只需要加载压缩包即可,免去了大量 class 的一个串行化的加载,实现了部署效率 45% 的一个提升。


4、SAE极致弹性建设


20.jpg


最后在应用运行态,我们也做了一些弹性方面的增强。微服务的应用通常会需要配置非常多的一些线程,这些线程通常和 Linux 的底层线程是一一对应的。在高并发场景下,这里面就会有较大的线程切换的开销。SAE 结合阿里巴巴开源的 Dragonwell,WISP 线程的技术,将上层的几百个线程对应到了底层的十几个线程,极大的降低了线程切换的一个开销。


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


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


总结和展望


原来的微服务用户需要自建非常多的组件,包括 PaaS 微服务一些技术框架,运维 IaaS、K8s,还包括可观测组件等。SAE 针对这些方面都做了整体的解决方案,使用户只需要关注自己的业务系统,这极大地降低了用户使用微服务技术的门槛。


后续 SAE 针对每个模块也会持续地的做能力的建设。包括:


  • 在零门槛 PaaS 方面,微服务会持续做一些云产品的集成,包括 CICD 工具链。另外也会做企业级的能力增强,比如审批流等。


  • 在 Serverless 免运维、极致弹性方面,我们也会提供越来越多的弹性能力、弹性指标、弹性效率,这些也都会持续地建设。另外也会提供类似 AI 预测这样的弹性解决方案,降低用户设置弹性指标的时候的心智负担。


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


最后在可观测方面,SAE 相当于运维了用户的应用。那么可观测对于 SAE 本身或者说对平台本身也是一个非常重要的能力,在这方面我们会持续地做相应的一些监控告警,包括预案和灰度建设等等。对用户来说,也需要在SAE上托管它的应用,这就要求产品能够降低用户在使用这方面的门槛,后续会建设应用大盘、事件中心等等。



解决方案咨询技术交流群:搜索钉钉群号 31704055 加入,可获取云原生详细解决方案资料与专家答疑。*进群后请备注:公司-职位-姓名

相关实践学习
【文生图】一键部署Stable Diffusion基于函数计算
本实验教你如何在函数计算FC上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。函数计算提供一定的免费额度供用户使用。本实验答疑钉钉群:29290019867
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
相关文章
|
2月前
|
消息中间件 缓存 监控
优化微服务架构中的数据库访问:策略与最佳实践
在微服务架构中,数据库访问的效率直接影响到系统的性能和可扩展性。本文探讨了优化微服务架构中数据库访问的策略与最佳实践,包括数据分片、缓存策略、异步处理和服务间通信优化。通过具体的技术方案和实例分析,提供了一系列实用的建议,以帮助开发团队提升微服务系统的响应速度和稳定性。
|
3月前
|
运维 Prometheus 监控
OceanBase 的运维与监控最佳实践
【8月更文第31天】随着分布式数据库解决方案的需求日益增长,OceanBase 作为一种高性能的分布式数据库系统,在众多场景下得到了广泛应用。为了确保 OceanBase 集群的稳定运行,合理的运维与监控是必不可少的。本文将探讨 OceanBase 的日常运维管理与监控策略,并提供相应的代码示例。
186 2
|
3月前
|
运维 监控 Cloud Native
自动化运维的魔法书云原生之旅:从容器化到微服务架构的演变
【8月更文挑战第29天】本文将带你领略自动化运维的魅力,从脚本编写到工具应用,我们将一起探索如何通过技术提升效率和稳定性。你将学会如何让服务器自主完成更新、监控和故障修复,仿佛拥有了一本能够自动翻页的魔法书。
|
3月前
|
监控 JavaScript 测试技术
从单体应用迁移到微服务的最佳实践
【8月更文第29天】随着软件架构的发展,越来越多的企业开始考虑从传统的单体应用迁移到微服务架构。虽然迁移可以带来诸如更好的可扩展性、更高的灵活性等优势,但这一过程也可能充满挑战。本文将详细介绍如何顺利地进行这一转变,并提供一些实用的步骤和示例代码。
154 0
|
15天前
|
运维 Serverless 数据处理
Serverless架构通过提供更快的研发交付速度、降低成本、简化运维、优化资源利用、提供自动扩展能力、支持实时数据处理和快速原型开发等优势,为图像处理等计算密集型应用提供了一个高效、灵活且成本效益高的解决方案。
Serverless架构通过提供更快的研发交付速度、降低成本、简化运维、优化资源利用、提供自动扩展能力、支持实时数据处理和快速原型开发等优势,为图像处理等计算密集型应用提供了一个高效、灵活且成本效益高的解决方案。
51 1
|
21天前
|
监控 Cloud Native 持续交付
云原生架构下微服务的最佳实践与挑战####
【10月更文挑战第20天】 本文深入探讨了云原生架构在现代软件开发中的应用,特别是针对微服务设计模式的最优实践与面临的主要挑战。通过分析容器化、持续集成/持续部署(CI/CD)、服务网格等关键技术,阐述了如何高效构建、部署及运维微服务系统。同时,文章也指出了在云原生转型过程中常见的难题,如服务间的复杂通信、安全性问题以及监控与可观测性的实现,为开发者和企业提供了宝贵的策略指导和解决方案建议。 ####
42 5
|
20天前
|
Kubernetes Cloud Native 持续交付
云原生架构下的微服务设计原则与最佳实践##
在数字化转型的浪潮中,云原生技术以其高效、灵活和可扩展的特性成为企业IT架构转型的首选。本文深入探讨了云原生架构的核心理念,聚焦于微服务设计的关键原则与实施策略,旨在为开发者提供一套系统性的方法论,以应对复杂多变的业务需求和技术挑战。通过分析真实案例,揭示了如何有效利用容器化、持续集成/持续部署(CI/CD)、服务网格等关键技术,构建高性能、易维护的云原生应用。文章还强调了文化与组织变革在云原生转型过程中的重要性,为企业顺利过渡到云原生时代提供了宝贵的见解。 ##
|
23天前
|
监控 安全 Java
构建高效后端服务:微服务架构深度解析与最佳实践###
【10月更文挑战第19天】 在数字化转型加速的今天,企业对后端服务的响应速度、可扩展性和灵活性提出了更高要求。本文探讨了微服务架构作为解决方案,通过分析传统单体架构面临的挑战,深入剖析微服务的核心优势、关键组件及设计原则。我们将从实际案例入手,揭示成功实施微服务的策略与常见陷阱,为开发者和企业提供可操作的指导建议。本文目的是帮助读者理解如何利用微服务架构提升后端服务的整体效能,实现业务快速迭代与创新。 ###
57 2
|
30天前
|
运维 Serverless 数据处理
Serverless架构通过提供更快的研发交付速度、降低成本、简化运维、优化资源利用、提供自动扩展能力、支持实时数据处理和快速原型开发等优势,为图像处理等计算密集型应用提供了一个高效、灵活且成本效益高的解决方案。
Serverless架构通过提供更快的研发交付速度、降低成本、简化运维、优化资源利用、提供自动扩展能力、支持实时数据处理和快速原型开发等优势,为图像处理等计算密集型应用提供了一个高效、灵活且成本效益高的解决方案。
57 3
|
2月前
|
消息中间件 运维 安全
云消息队列 ApsaraMQ Serverless 演进:高弹性低成本、更稳定更安全、智能化免运维
在 2024 年云栖大会上,阿里云智能集团产品专家刘尧全面介绍了云消息队列 ApsaraMQ Serverless 的落地成果和产品进展。此外,我们还邀请到杭州优行科技有限公司中间件消息研发负责人王智洋,分享了 ApsaraMQ for Kafka Serverless 助力曹操出行实现成本优化和效率提升的实践经验。
152 8

热门文章

最新文章

相关产品

  • 函数计算