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

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
应用实时监控服务ARMS - 应用监控,每月50GB免费额度
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
简介: 阿里云为企业提供了基于阿里云互联网架构的解决方案,也同时让这些新的互联网应用、新的电商平台应用迁移到阿里云上。

作者|愚奇
头图.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 架构模式
相关文章
|
5天前
|
Cloud Native 前端开发 JavaScript
前端开发者必看:不懂云原生你就OUT了!揭秘如何用云原生技术提升项目部署与全栈能力
【10月更文挑战第23天】随着云计算的发展,云原生逐渐成为技术热点。前端开发者了解云原生有助于提升部署与运维效率、实现微服务化、掌握全栈开发能力和利用丰富技术生态。本文通过示例代码介绍云原生在前端项目中的应用,帮助开发者更好地理解其重要性。
28 0
|
2天前
|
监控 Cloud Native 持续交付
云原生技术深度解析:重塑现代应用开发与部署范式####
本文深入探讨了云原生技术的核心概念、关键技术组件及其在现代软件开发中的重要性。通过剖析容器化、微服务架构、持续集成/持续部署(CI/CD)等关键技术,本文旨在揭示云原生技术如何促进应用的敏捷性、可扩展性和高可用性,进而推动企业数字化转型进程。不同于传统摘要仅概述内容要点,本部分将融入具体案例分析,直观展示云原生技术在实际应用中的显著成效与挑战应对策略,为读者提供更加丰富、立体的理解视角。 ####
|
5天前
|
敏捷开发 Cloud Native 持续交付
云原生技术在现代企业中的应用与实践
【10月更文挑战第23天】本文将深入探讨云原生技术在现代企业中的广泛应用,并结合具体案例分析其对企业数字化转型的推动作用。我们将从云原生技术的基本原理出发,逐步揭示其在提高业务敏捷性、降低成本和增强系统可靠性方面的优势。同时,文章还将分享一系列成功实施云原生技术的企业案例,为读者提供实践中的参考和启示。最后,我们将讨论云原生技术面临的挑战及未来的发展趋势,为企业在这一领域的进一步探索提供指导。
|
6天前
|
Cloud Native 持续交付 云计算
云原生技术深度探索:构建现代化应用的基石####
【10月更文挑战第21天】 本文将深入探讨云原生技术的核心概念、关键技术及其在现代软件开发中的应用。我们将从容器化、微服务架构、持续集成/持续部署(CI/CD)、无服务器架构等关键方面展开,揭示这些技术如何共同作用,帮助企业实现高效、弹性且易于维护的应用部署与管理。通过实例分析,展现云原生技术在实际项目中的显著优势,为读者提供一套全面理解并应用云原生技术的指南。 ####
22 2
|
12天前
|
运维 Cloud Native 持续交付
云原生架构的演进与实践####
【10月更文挑战第16天】 云原生,这一概念自提出以来,便以其独特的魅力和无限的可能性,引领着现代软件开发与部署的新浪潮。本文旨在探讨云原生架构的核心理念、关键技术及其在实际项目中的应用实践,揭示其如何帮助企业实现更高效、更灵活、更可靠的IT系统构建与管理。通过深入剖析容器化、微服务、持续集成/持续部署(CI/CD)等核心技术,结合具体案例,本文将展现云原生架构如何赋能企业数字化转型,推动业务创新与发展。 ####
115 47
|
8天前
|
Kubernetes Cloud Native 持续交付
云端新纪元:云原生技术重塑IT架构####
【10月更文挑战第20天】 本文深入探讨了云原生技术的兴起背景、核心理念、关键技术组件以及它如何引领现代IT架构迈向更高效、灵活与可扩展的新阶段。通过剖析Kubernetes、微服务、Docker等核心技术,本文揭示了云原生架构如何优化资源利用、加速应用开发与部署流程,并促进企业数字化转型的深度实践。 ####
|
7天前
|
监控 Cloud Native Java
云原生架构下微服务治理策略与实践####
【10月更文挑战第20天】 本文深入探讨了云原生环境下微服务架构的治理策略,通过分析当前技术趋势与挑战,提出了一系列高效、可扩展的微服务治理最佳实践方案。不同于传统摘要概述内容要点,本部分直接聚焦于治理核心——如何在动态多变的分布式系统中实现服务的自动发现、配置管理、流量控制及故障恢复,旨在为开发者提供一套系统性的方法论,助力企业在云端构建更加健壮、灵活的应用程序。 ####
50 10
|
1天前
|
Kubernetes Cloud Native API
云原生架构下微服务治理的深度探索与实践####
本文旨在深入剖析云原生环境下微服务治理的核心要素与最佳实践,通过实际案例分析,揭示高效、稳定的微服务架构设计原则及实施策略。在快速迭代的云计算领域,微服务架构以其高度解耦、灵活扩展的特性成为众多企业的首选。然而,伴随而来的服务间通信、故障隔离、配置管理等挑战亦不容忽视。本研究聚焦于云原生技术栈如何赋能微服务治理,涵盖容器编排(如Kubernetes)、服务网格(如Istio/Envoy)、API网关、分布式追踪系统等关键技术组件的应用与优化,为读者提供一套系统性的解决方案框架,助力企业在云端构建更加健壮、可维护的服务生态。 ####
|
2天前
|
监控 安全 Cloud Native
云原生安全:Istio在微服务架构中的安全策略与实践
【10月更文挑战第26天】随着云计算的发展,云原生架构成为企业数字化转型的关键。微服务作为其核心组件,虽具备灵活性和可扩展性,但也带来安全挑战。Istio作为开源服务网格,通过双向TLS加密、细粒度访问控制和强大的审计监控功能,有效保障微服务间的通信安全,成为云原生安全的重要工具。
8 2
|
2天前
|
弹性计算 监控 Cloud Native
云原生架构下的性能优化实践与策略####
在数字化转型加速的今天,云原生技术以其弹性、敏捷和高效的特点成为企业IT架构转型的首选。本文深入探讨了云原生架构的核心理念,通过具体案例分析,揭示了性能优化的关键路径与策略,为开发者和企业提供了可操作的实践指南。 ####