如何利用云原生技术构建现代化应用

本文涉及的产品
应用实时监控服务-可观测链路OpenTelemetry版,每月50GB免费额度
容器镜像服务 ACR,镜像仓库100个 不限时长
注册配置 MSE Nacos/ZooKeeper,118元/月
简介: 阿里云为企业提供了基于阿里云互联网架构的解决方案,也同时让这些新的互联网应用、新的电商平台应用迁移到阿里云上。

作者|愚奇
头图.jpg

今天,云和云计算技术已经被企业广泛所接受,关于云、云计算、云原生都有非常多的话题,但是我比较想讨论的是在所有云当中真正的主角,就是我们的应用。

因为当企业应用上云后,这些应用的高可用能力有可能提升了一部分,但仍存有许多问题;而当我们探讨上云后这些应用的运维效率,却未必有很大的提升,因为所有的运维都是基于基础设施进行的,而云计算是一个比较大的基础设施的改变;如果我们再问,上云后整个应用的开发速度是不是得到了极大的提升,这个时候很多人都要说,并不。

因此,今天主要探讨的就是如何利用云原生相关的技术帮助我们的应用去做优化,从传统应用转变成现代化应用。

非典型的典型——云上众生相

我们先采取一个从个体再到整体的形而上的方式,来看一个比较典型的企业案例。
1.png

这个企业虽然和很多上云企业有很多不同,比如说行业、应用类别、上云动机等等,但他们同时也有很多共同点:比如上云后解决了很多问题但仍然遗留了相当多的问题。这个企业属于新零售行业,有不错的销售额。

但是随着业务的发展,传统的 ERP 软件已经不能满足业务发展的诉求,最主要体现在当他要参与 618、双十一这样的年度大促时,他的 ERP 供应商告诉他,他们的软件并不能支持达到上千或者上万的 TPS,只能够支持到百级的 TPS。因此对于这些新零售的电商企业而言,他们没有办法去满足大规模业务发展的诉求,也因此找到了阿里云。

阿里云为企业提供了基于阿里云互联网架构的解决方案,也同时让这些新的互联网应用、新的电商平台应用迁移到阿里云上。整体而言,开发是找了 ISV 去进行委托开发,把客户的应用从线下 IDC 迁移到了线上公共云上,在这里面最主要的技术升级是区域化,上云之后整体的运维是客户自己的运维部门来负责。整个迁云的过程也非常成功,很好地解决了客户应用的大规模问题,使得客户可以很好地参与 618、双十一这类的大促。

同时由于整体软件也就是这个电商平台采用的是自研方式,所以比较大地释放了像传统 ERP 一样高昂的成本。但由于整体的结构迭代非常快,导致在有一次大促中,由于业务量非常大,导致原来架构中的一个隐患引发了比较大的生产事故,对客户自己而言,他们评估这次事故给他们造成了非常大体量的损失。
image.png

To 云:“不上很焦虑,上了也焦虑”

所以说今天的很多企业,他们对于上云都有很多的焦虑,体现在他们思考到底要不要上云,因为上云不能只是单纯跟风,而是要想上云到底可以为他们解决什么问题。
2.png

image.png

对于上云之后的企业,他们虽然取得了阶段性的成功,也需要思考他们还有哪些问题没有得到解决。所以说不管有没有上云的企业,他们都非常焦虑,这就体现在他们都在思考怎么样才能很好地缩短研发周期,以支持快速的业务发展需要;怎么样去提升整体的运维效率,并在这个过程中让他们的 IT 部门具备很强的控制力;在整体上云和上云之后,可以比较好地降低整体的 IT 应用成本,以及降低软件的复杂度,提升整个系统的高可用能力等,这些方方面面绝大部分都聚焦在应用的非功能性特性上面。

1、焦虑的根源

所有的这些焦虑,我们可以从应用的角度去深度分析是什么原因造成的。
3.png

大家知道对于应用而言,核心的就是架构,包括了应用的业务架构和技术架构。从应用架构上去看,需要满足客户的应用发展诉求。比如说数据的产生,随着今天 IoT 不断普及,数据会产生非常大的接入量,对于这些数据的处理也带来了更高的要求。

基于传统的、更多的服务于人的请求的响应式数据处理方式已经不能满足于业务的需求,对于 IoT 设备更多的是基于请求、响应这类事件的模型和方式。同样的,企业的业务发展需要跟更多的公司去进行生态的连接。这些大量的业务诉求也对底层的技术架构带来了比较多的要求。这些要求就体现在,要求底层的技术架构能够支持高度的冗余,能支持微服务和海量的业务并发、以及能够支持动态伸缩、能够提供 SLA 等。

如果我们再进一步深度发掘,这里面到底是需要解决什么样的核心矛盾时,我们可以发现其实核心矛盾在于随着上云、业务的复杂度不断增加,使得 IT 有更多的管理成本。而这个成本就体现在,所有的微服务、高可用都需要用高度的系统冗余去解决。同时由于业务的快速发展,需要整个 IT 系统去响应频繁的变换。核心矛盾就在于,系统的高度冗余与系统的频繁变化之间的矛盾,所有的分布式系统都在围绕这一主要矛盾来进行解决。

举个例子,在原来的单机时代,如果我们只需要一个人管理一台机器,用一台机器上的软件就可以满足自身业务发展的要求,那么我们显然没有这么多的矛盾。只有当一个人变成几十甚至上百个人,当这样一台机器不是运行在一个节点而是几十上百甚至上千个节点时,整个 IT 需要处理的复杂度就从 1 对 1 变成了 1 对 N 的频发。所以说整体的复杂度得到了一个极大的提升,这也是我们所讲的矛盾的根源

2、快速解和深度解

那么对于这样的矛盾有什么样的解法呢?今天在云的时代,我们总结了一下有快速的解法和需要更多资源投入的深度解法。

4.png

快速解就包括了 re-host 的模式,即把应用的运行环境从传统的线下 IDC 迁移到了云的环境。在这种模式下,应用的架构没有发生变化,应用的风险也是比较低的,但是价值的回报只能说是较高。与此对应的另一个解法就是 re-platform,就是把整体应用的交付和运维都改变,但是应用的软件架构不发生改变。

比如说我们通过容器的方式去改变整个软件的留存,改变整体的运维留存。那么在这个模式下面,它的架构变更的幅度是相对比较小的,实施风险是中等且可以得到比较高的价值回报。

但如果我们要彻底解决上面的问题,那么就要采取整个软件重构的 re-build 方式,或者对于软件的重要模块去进行一个 re-factor 重构的模式。这些模式都会涉及到软件的架构发生变化,因此它的实施风险也是很高的,但同样的高投入高风险也带来了高回报,改变后的应用可以更好地解决矛盾。

所有的解法都与云原生有着非常大的关系。云原生被提出来的最主要的原因,是企业上云之后发现很多应用不能很好地去利用云的特性,因此有人说很多应用不是云原生类型的应用。因此,云原生被提出来了。

云原生的关键内涵

我们先不去讨论云原生的定义是什么,但我们要专门提出关于云原生的三个关键内涵,理解这三个内涵对于我们怎么样去利用云原生构建现代化应用有非常大的帮助。

5.png

云原生技术:今天云原生的技术有闭源的和大量开源的。闭源通常体现在对应用相对透明的云厂商的基础设施上面。同样,大量的开源技术对于应用而言有比较大的关系,因为所有的应用会直接构架在这些开源的云原生技术栈上面。但如果说这些应用要比较好地去利用底层的云原生技术,我们通常会建议这些场景中我们的应用可以大量采用云原生的产品。

云原生产品:一部分客户的技术栈都基于开源的技术栈所构建,但开源的技术栈虽然在很多技术、功能、稳定性上没有问题,在可维护性和跟底层基础设施的配合上却可能会出现问题。因此我们会推荐应用尽量在云原生产品上去构建。

云原生理念:光靠技术和产品无法很好地解决前面提到的应用面临的方方面面的问题,因为技术和产品是生产工具,生产工具的改变往往会导致整个企业的 IT 文化,也就是生产关系的改变。

在整个 IT 文化当中,起到最主要作用的就是这其中整个企业的生产流程,以及生产流程之间人与人的合作关系。由于云原生的技术和产品在工具层面带来了改变,那么不可避免地就带来了在整个生产流水线,即企业的生产流程之间的改变。

比如说,原先有的岗位对人的要求发生了改变,或者原先的岗位没有了,同样一些新的岗位可能就被创造出来了。在这过程中,受到最大影响的就是人,包括人与人之间的协作关系。因此要很好地去运用云原生,特别要注意的就是云原生的技术和产品对于整个企业的生产流程、生产流水线上带来的改变,特别是对于人和组织上面要求的升级。

1、云原生是云计算的再升级

云原生不仅能帮助大家更好地去建好云、用好云、管好云,同样也是整个云计算的再升级。

6.png

这不仅体现在云的基础设施层面的升级,即云计算的提供厂商会意识到今天所提供的基础设施还不能比较好地满足应用的要求,需要不断地升级以能够更好地满足应用在高效的交付、运维上面的需求。

同样的,他也会要求应用在架构上彻底升级,让应用体现出更好的弹性、韧性和可观测性。有了基础设施和应用的升级,我们会进一步去追求整体研发效率的提升,这其中有采用 Serverless 这些新的计算形态去帮助我们应用提升整体的交付和运维效率的方式,以及更重要的就是解决频繁变化的 IT 系统当中的快速迭代和系统稳定性之间的矛盾。

所以我们说云原生是云计算整体的一个再升级。

2、什么是现代化应用

什么是现代化应用,跟传统的应用又有什么区别呢?

7.png

现代化应用中包含弹性、可观测性和度量、无状态和安全等典型特征,在整体的一个计算结构上我们可以看到,现代化应用跟云原生应用有非常多相似之处。它们之间的区别在于,现代化的应用不一定要跑在云上。

云原生应用顾名思义一定与云相关,但是他们很多特征都是一样的,它们都要求整体的应用要构建在云原生的技术产品之上,这些技术和产品能真正地体现在应用采用云原生的架构时,并且在整体的实施过程中要彻底贯彻云原生的开发理念。这样的应用才能够比较好地跑在各种基础设施上面。

既然提到了架构是承载应用的关键要素,那么云原生架构有什么特点呢?

云原生架构

云原生架构是一组架构原则、设计模式和设计方法的组合。在这个组合上面有非常明显的、区别于传统架构的特点。

8.png

云原生架构会尽量帮助我们的应用把其中的非功能性代码进行剥离。而在传统应用中,有不少代码需要去处理非功能性的问题。云原生架构下,这部分代码剥离出来后会被放到云原生的基础设施、产品和技术中去,由底层的 PaaS 平台和 IaaS 平台去承载客户应用当中非功能性的问题,从而让开发人员更多关注业务代码的编写。

有了这样的云原生架构去接管应用中原有的大量非功能特性,业务中原本因非功能性问题造成的业务中断也可以被避免,同时使应用具备了更轻量、敏捷、高度自动化的特征。

1、云原生架构原则

9.png

我们在云原生架构下抽取出了最重要的 7 个云原生架构原则:

1、服务化原则:微服务化颗粒度可以更好地满足客户应用的特征;
2、弹性原则:从虚拟机到容器层面到进一步应用层面具备不同弹性;
3、韧性原则:高可用原则的进一步提升,应用在各种情况下持续为客户提供服务;
4、可观测性原则:与监控不同,可观测性模型可事先提供大量从日志到链路跟踪的有效信息,从而主动发现系统中的潜在风险;
5、自动化原则:从底层的硬件到软件、组件,都有比较大的提升,因此更希望有自动化原则去帮助我们更有效地运维,从而降低运维成本;
6、零信任原则:云原生架构可以运行在不同架构上,因而对安全提出了新的要求,要求所有的应用不管运行在什么环境都是不信任的,每次运行请求都需要校验合法性;
7、持续演进原则:可以根据企业的特点,每个阶段采取适合的演进目标,长期迭代后使每个目标最终演变到现代化的应用。

2、云原生的主要架构模式

云原生的架构模式非常多,列举如下图所示,详细的内容可以参考近期出版的《阿里云云原生架构实践》。

10.png

3、阿里云云原生架构方法

11.png

关于云原生的架构方法,我们提出了 ACNA 的架构方法。这是阿里云关于云原生架构的一个架构设计方法,包含了对云原生架构的评估体系和成熟度的度量体系,同时也包含了阿里云对广大客户在对应用实施云原生技术改造过程中,积累的最佳实践和用到的产品体系和技术。在这之中有一些架构视角,我们希望对每个企业来说,他们可以根据自己企业的情况去选择与之相匹配的技术架构能力,最终为业务发展、企业战略发展服务。

4、阿里云云原生架构闭环

整个架构方法是包含了多个视角的综合体,在这之中我们希望通过架构持续演进能形成一个闭环。

12.png

整个架构闭环包含了最主要的八个阶段。从识别业务痛点到确定架构目标,在评估风险过程中选取相应的技术制定迭代计划,推动落地计划中我们建议企业在实施云原生架构过程中有一些专门的机构去评审整体的风险,从而让整个过程形成一个闭环。而在这个过程中要特别关注架构治理视角,这需要有相应的组织或人员来帮助应用在迭代过程中进行架构治理。

5、如何衡量云原生架构的成熟度

在 ACNA 里我们提出了一个衡量云原生架构的成熟度模型,其中有六个关键维度,我们简称 SESORA。
13.png

这六个维度的能力,也是在现代化应用中的最主要的六个关键指标。每个指标从 0-3 分为了四个等级,每个等级有对应的得分,在评估后可以得出一个关于应用在云原生架构上得到的评分高低。今天阿里云提出的这个 SESORA 模型已经在业界中得到很多机构和企业的采纳,从而可以帮助企业在云原生架构改造上提高成熟度。

客户案例

最后来看两个典型案例。第一个案例是在阿里云上的应用怎么通过云原生的产品去有效预防在系统架构设计当中稳定性的风险。我们采用了微服务的架构模式,有大量数据是存放在 MongoDB 中的,在这个架构中客户采用了 PTS、ARMS 和 AHAS 这个组合,这可以比较好地帮客户去主动探测系统中是否存在潜在的风险,从而去预防稳定性的风险。

14.png

第二个案例是关于 Serverless 的案例,解决的问题是帮助微服务应用快速上云。因为在这个过程中,我们往往需要应用去解决很多问题,而在 Serverless 模式下,这些底层的部署都得到了很大的复杂度降低。

当客户应用有突发流量增加时,Serverless 会探测到并主动申请新资源,从而使新增流量得到及时响应;当突发流量消失时 Serverless 也会主动释放资源,从而降低成本。

15.png

相关实践学习
【文生图】一键部署Stable Diffusion基于函数计算
本实验教你如何在函数计算FC上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。函数计算提供一定的免费额度供用户使用。本实验答疑钉钉群:29290019867
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
相关文章
|
20天前
|
Cloud Native 持续交付 开发者
云原生技术在现代企业中的应用与实践####
本文深入探讨了云原生技术的核心概念及其在现代企业IT架构转型中的关键作用,通过具体案例分析展示了云原生如何促进企业的敏捷开发、高效运维及成本优化。不同于传统摘要仅概述内容,本部分旨在激发读者对云原生领域的兴趣,强调其在加速数字化转型过程中的不可或缺性,为后续详细论述奠定基础。 ####
|
15天前
|
人工智能 缓存 异构计算
云原生AI加速生成式人工智能应用的部署构建
本文探讨了云原生技术背景下,尤其是Kubernetes和容器技术的发展,对模型推理服务带来的挑战与优化策略。文中详细介绍了Knative的弹性扩展机制,包括HPA和CronHPA,以及针对传统弹性扩展“滞后”问题提出的AHPA(高级弹性预测)。此外,文章重点介绍了Fluid项目,它通过分布式缓存优化了模型加载的I/O操作,显著缩短了推理服务的冷启动时间,特别是在处理大规模并发请求时表现出色。通过实际案例,展示了Fluid在vLLM和Qwen模型推理中的应用效果,证明了其在提高模型推理效率和响应速度方面的优势。
云原生AI加速生成式人工智能应用的部署构建
|
16天前
|
供应链 安全 Cloud Native
阿里云容器服务助力企业构建云原生软件供应链安全
本文基于2024云栖大会演讲,探讨了软件供应链攻击的快速增长趋势及对企业安全的挑战。文中介绍了如何利用阿里云容器服务ACK、ACR和ASM构建云原生软件供应链安全,涵盖容器镜像的可信生产、管理和分发,以及服务网格ASM实现应用无感的零信任安全,确保企业在软件开发和部署过程中的安全性。
|
9天前
|
Cloud Native
邀您参加云原生高可用技术沙龙丨云上高可用体系构建:从理论到实践
云原生高可用技术专场,邀您从理论到实践一起交流,探索云上高可用体系构建!
|
20天前
|
运维 Cloud Native 持续交付
云原生技术深度探索:重塑现代IT架构的无形之力####
本文深入剖析了云原生技术的核心概念、关键技术组件及其对现代IT架构变革的深远影响。通过实例解析,揭示云原生如何促进企业实现敏捷开发、弹性伸缩与成本优化,为数字化转型提供强有力的技术支撑。不同于传统综述,本摘要直接聚焦于云原生技术的价值本质,旨在为读者构建一个宏观且具体的技术蓝图。 ####
|
23天前
|
运维 Cloud Native 持续交付
深入理解云原生架构及其在现代企业中的应用
随着数字化转型的浪潮席卷全球,企业正面临着前所未有的挑战与机遇。云计算技术的迅猛发展,特别是云原生架构的兴起,正在重塑企业的IT基础设施和软件开发模式。本文将深入探讨云原生的核心概念、关键技术以及如何在企业中实施云原生策略,以实现更高效的资源利用和更快的市场响应速度。通过分析云原生架构的优势和面临的挑战,我们将揭示它如何助力企业在激烈的市场竞争中保持领先地位。
|
21天前
|
Kubernetes Cloud Native 微服务
探索云原生技术:容器化与微服务架构的融合之旅
本文将带领读者深入了解云原生技术的核心概念,特别是容器化和微服务架构如何相辅相成,共同构建现代软件系统。我们将通过实际代码示例,探讨如何在云平台上部署和管理微服务,以及如何使用容器编排工具来自动化这一过程。文章旨在为开发者和技术决策者提供实用的指导,帮助他们在云原生时代中更好地设计、部署和维护应用。
|
1月前
|
Cloud Native Devops 云计算
云计算的未来:云原生架构与微服务的革命####
【10月更文挑战第21天】 随着企业数字化转型的加速,云原生技术正迅速成为IT行业的新宠。本文深入探讨了云原生架构的核心理念、关键技术如容器化和微服务的优势,以及如何通过这些技术实现高效、灵活且可扩展的现代应用开发。我们将揭示云原生如何重塑软件开发流程,提升业务敏捷性,并探索其对企业IT架构的深远影响。 ####
43 3
|
1月前
|
Cloud Native 持续交付 云计算
云原生架构的演进与挑战
随着云计算技术的不断发展,云原生架构已成为企业数字化转型的重要支撑。本文深入探讨了云原生架构的概念、发展历程、核心技术以及面临的挑战,旨在为读者提供一个全面了解云原生架构的视角。通过分析Kubernetes、Docker等关键技术的应用,以及微服务、持续集成/持续部署(CI/CD)等实践案例,本文揭示了云原生架构在提高应用开发效率、降低运维成本、增强系统可扩展性等方面的显著优势。同时,也指出了云原生架构在安全性、复杂性管理等方面所面临的挑战,并提出了相应的解决策略。
|
23天前
|
弹性计算 运维 Cloud Native
云原生架构的崛起与未来展望
在数字化转型的浪潮中,云原生架构凭借其高效、灵活和可扩展的特性,正逐渐成为企业IT战略的核心。本文旨在探讨云原生架构的定义、关键特性、实施优势以及面临的挑战,同时展望未来的发展趋势。通过深入分析,我们期望为读者提供一个关于云原生架构全面而深入的视角,助力企业在云计算时代做出更明智的决策。
32 3