关于设计模式:如何利用云原生技术构建现代化应用

32次阅读

共计 5686 个字符,预计需要花费 15 分钟才能阅读完成。

简介: 阿里云为企业提供了基于阿里云互联网架构的解决方案,也同时让这些新的互联网利用、新的电商平台利用迁徙到阿里云上。

作者|愚奇

明天,云和云计算技术曾经被企业宽泛所承受,对于云、云计算、云原生都有十分多的话题,然而我比拟想探讨的是在所有云当中真正的配角,就是咱们的利用。

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

因而,明天次要探讨的就是如何利用云原生相干的技术帮忙咱们的利用去做优化,从传统利用转变成现代化利用。

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

咱们先采取一个从个体再到整体的形而上的形式,来看一个比拟典型的企业案例。

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

然而随着业务的倒退,传统的 ERP 软件曾经不能满足业务倒退的诉求,最次要体现在当他要参加 618、双十一这样的年度大促时,他的 ERP 供应商通知他,他们的软件并不能反对达到上千或者上万的 TPS,只可能反对到百级的 TPS。因而对于这些新批发的电商企业而言,他们没有方法去满足大规模业务倒退的诉求,也因而找到了阿里云。

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

同时因为整体软件也就是这个电商平台采纳的是自研形式,所以比拟大地开释了像传统 ERP 一样昂扬的老本。但因为整体的构造迭代十分快,导致在有一次大促中,因为业务量十分大,导致原来架构中的一个隐患引发了比拟大的生产事变,对客户本人而言,他们评估这次事变给他们造成了十分大体量的损失。

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

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

对于上云之后的企业,他们尽管获得了阶段性的胜利,也须要思考他们还有哪些问题没有失去解决。所以说不论有没有上云的企业,他们都十分焦虑,这就体现在他们都在思考怎么样能力很好地缩短研发周期,以反对疾速的业务倒退须要;怎么样去晋升整体的运维效率,并在这个过程中让他们的 IT 部门具备很强的控制力;在整体上云和上云之后,能够比拟好地升高整体的 IT 利用老本,以及升高软件的复杂度,晋升整个零碎的高可用能力等,这些方方面面绝大部分都聚焦在利用的非功能性个性下面。

1、焦虑的本源

所有的这些焦虑,咱们能够从利用的角度去深度剖析是什么起因造成的。

大家晓得对于利用而言,外围的就是架构,包含了利用的业务架构和技术架构。从利用架构下来看,须要满足客户的利用倒退诉求。比如说数据的产生,随着明天 IoT 一直遍及,数据会产生十分大的接入量,对于这些数据的解决也带来了更高的要求。

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

如果咱们再进一步深度挖掘,这外面到底是须要解决什么样的外围矛盾时,咱们能够发现其实外围矛盾在于随着上云、业务的复杂度一直减少,使得 IT 有更多的治理老本。而这个老本就体现在,所有的微服务、高可用都须要用高度的零碎冗余去解决。同时因为业务的疾速倒退,须要整个 IT 零碎去响应频繁的变换。外围矛盾就在于,零碎的高度冗余与零碎的频繁变动之间的矛盾,所有的分布式系统都在围绕这一主要矛盾来进行解决。

举个例子,在原来的单机时代,如果咱们只须要一个人治理一台机器,用一台机器上的软件就能够满足本身业务倒退的要求,那么咱们显然没有这么多的矛盾。只有当一个人变成几十甚至上百集体,当这样一台机器不是运行在一个节点而是几十上百甚至上千个节点时,整个 IT 须要解决的复杂度就从 1 对 1 变成了 1 对 N 的频发。所以说整体的复杂度失去了一个极大的晋升,这也是咱们所讲的 矛盾的本源

2、疾速解和深度解

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


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

比如说咱们通过容器的形式去扭转整个软件的留存,扭转整体的运维留存。那么在这个模式上面,它的架构变更的幅度是绝对比拟小的,施行危险是中等且能够失去比拟高的价值回报。

但如果咱们要彻底解决下面的问题,那么就要采取整个软件重构的 re-build 形式,或者对于软件的重要模块去进行一个 re-factor 重构的模式。这些模式都会波及到软件的架构发生变化,因而它的施行危险也是很高的,但同样的高投入高风险也带来了高回报,扭转后的利用能够更好地解决矛盾。

所有的解法都与云原生有着十分大的关系。云原生被提出来的最次要的起因,是企业上云之后发现很多利用不能很好地去利用云的个性,因而有人说很多利用不是云原生类型的利用。因而,云原生被提出来了。

云原生的要害外延

咱们先不去探讨云原生的定义是什么,但咱们要专门提出对于云原生的三个要害外延,了解这三个外延对于咱们怎么样去利用云原生构建现代化利用有十分大的帮忙。


云原生技术:明天云原生的技术有闭源的和大量开源的。闭源通常体现在对利用绝对通明的云厂商的基础设施下面。同样,大量的开源技术对于利用而言有比拟大的关系,因为所有的利用会间接构架在这些开源的云原生技术栈下面。但如果说这些利用要比拟好地去利用底层的云原生技术,咱们通常会倡议这些场景中咱们的利用能够大量采纳云原生的产品。

云原生产品:一部分客户的技术栈都基于开源的技术栈所构建,但开源的技术栈尽管在很多技术、性能、稳定性上没有问题,在可维护性和跟底层基础设施的配合上却可能会呈现问题。因而咱们会举荐利用尽量在云原生产品下来构建。

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

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

比如说,原先有的岗位对人的要求产生了扭转,或者原先的岗位没有了,同样一些新的岗位可能就被发明进去了。在这过程中,受到最大影响的就是人,包含人与人之间的协作关系。因而要很好地去使用云原生,特地要留神的就是云原生的技术和产品对于整个企业的生产流程、生产流水线上带来的扭转,特地是对于人和组织下面要求的降级。

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

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


这不仅体现在云的基础设施层面的降级,即云计算的提供厂商会意识到明天所提供的基础设施还不能比拟好地满足利用的要求,须要一直地降级以可能更好地满足利用在高效的交付、运维下面的需要。

同样的,他也会要求利用在架构上彻底降级,让利用体现出更好的弹性、韧性和可观测性。有了基础设施和利用的降级,咱们会进一步去谋求整体研发效率的晋升,这其中有采纳 Serverless 这些新的计算状态去帮忙咱们利用晋升整体的交付和运维效率的形式,以及更重要的就是解决频繁变动的 IT 零碎当中的疾速迭代和零碎稳定性之间的矛盾。

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

2、什么是现代化利用

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

现代化利用中蕴含弹性、可观测性和度量、无状态和平安等典型特色,在整体的一个计算构造上咱们能够看到,现代化利用跟云原生利用有十分多相似之处。它们之间的区别在于,现代化的利用不肯定要跑在云上。

云原生利用顾名思义肯定与云相干,然而他们很多特色都是一样的,它们都要求整体的利用要构建在云原生的技术产品之上,这些技术和产品能真正地体现在利用采纳云原生的架构时,并且在整体的施行过程中要彻底贯彻云原生的开发理念。这样的利用才可能比拟好地跑在各种基础设施下面。

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

云原生架构

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


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

有了这样的云原生架构去接管利用中原有的大量非性能个性,业务中本来因非功能性问题造成的业务中断也能够被防止,同时使利用具备了更轻量、麻利、高度自动化的特色。

1、云原生架构准则


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

1、服务化准则:微服务化颗粒度能够更好地满足客户利用的特色;
2、弹性准则:从虚拟机到容器层面到进一步利用层面具备不同弹性;
3、韧性准则:高可用准则的进一步晋升,利用在各种状况下继续为客户提供服务;
4、可观测性准则:与监控不同,可观测性模型可当时提供大量从日志到链路跟踪的无效信息,从而被动发现零碎中的潜在危险;
5、自动化准则:从底层的硬件到软件、组件,都有比拟大的晋升,因而更心愿有自动化准则去帮忙咱们更无效地运维,从而升高运维老本;
6、零信赖准则:云原生架构能够运行在不同架构上,因此对平安提出了新的要求,要求所有的利用不论运行在什么环境都是不信赖的,每次运行申请都须要校验合法性;
7、继续演进准则:能够依据企业的特点,每个阶段采取适宜的演进指标,长期迭代后使每个指标最终演变到现代化的利用。

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

云原生的架构模式十分多,列举如下图所示,具体的内容能够参考近期出版的《阿里云云原生架构实际》。

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

对于云原生的架构办法,咱们提出了 ACNA 的架构办法。这是阿里云对于云原生架构的一个架构设计办法,蕴含了对云原生架构的评估体系和成熟度的度量体系,同时也蕴含了阿里云对广大客户在对利用施行云原生技术改造过程中,积攒的最佳实际和用到的产品体系和技术。在这之中有一些架构视角,咱们心愿对每个企业来说,他们能够依据本人企业的状况去抉择与之相匹配的技术架构能力,最终为业务倒退、企业策略倒退服务。

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

整个架构办法是蕴含了多个视角的综合体,在这之中咱们心愿通过架构继续演进能造成一个闭环。

整个架构闭环蕴含了最次要的八个阶段。从辨认业务痛点到确定架构指标,在评估危险过程中选取相应的技术制订迭代打算,推动落地打算中咱们倡议企业在施行云原生架构过程中有一些专门的机构去评审整体的危险,从而让整个过程造成一个闭环。而在这个过程中要特地关注架构治理视角,这须要有相应的组织或人员来帮忙利用在迭代过程中进行架构治理。

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

在 ACNA 里咱们提出了一个掂量云原生架构的成熟度模型,其中有六个要害维度,咱们简称 SESORA。

这六个维度的能力,也是在现代化利用中的最次要的六个要害指标。每个指标从 0-3 分为了四个等级,每个等级有对应的得分,在评估后能够得出一个对于利用在云原生架构上失去的评分高下。明天阿里云提出的这个 SESORA 模型曾经在业界中失去很多机构和企业的驳回,从而能够帮忙企业在云原生架构革新上进步成熟度。

客户案例

最初来看两个典型案例。第一个案例是在阿里云上的利用怎么通过云原生的产品去无效预防在零碎架构设计当中稳定性的危险。咱们采纳了微服务的架构模式,有大量数据是寄存在 MongoDB 中的,在这个架构中客户采纳了 PTS、ARMS 和 AHAS 这个组合,这能够比拟好地帮客户去被动探测系统中是否存在潜在的危险,从而去预防稳定性的危险。

第二个案例是对于 Serverless 的案例,解决的问题是帮忙微服务利用疾速上云。因为在这个过程中,咱们往往须要利用去解决很多问题,而在 Serverless 模式下,这些底层的部署都失去了很大的复杂度升高。

当客户利用有突发流量减少时,Serverless 会探测到并被动申请新资源,从而使新增流量失去及时响应;当突发流量隐没时 Serverless 也会被动开释资源,从而降低成本。

版权申明:本文内容由阿里云实名注册用户自发奉献,版权归原作者所有,阿里云开发者社区不领有其著作权,亦不承当相应法律责任。具体规定请查看《阿里云开发者社区用户服务协定》和《阿里云开发者社区知识产权爱护指引》。如果您发现本社区中有涉嫌剽窃的内容,填写侵权投诉表单进行举报,一经查实,本社区将立即删除涉嫌侵权内容。

正文完
 0