引言
随着云原生应用程序的普及,有效管理云服务器配置变得越来越重要。云原生应用程序通常在分布式微服务架构上构建,需要动态和可扩展的配置管理解决方案。本文将探讨云原生应用程序的最佳云服务器配置管理策略,并介绍一些特定的工具和最佳实践。
云原生应用程序架构的属性
云原生应用程序具有以下关键属性,影响其配置管理策略:分布式:云原生应用程序通常分布在多个服务器上,跨越不同的可用区和地域。微服务:应用程序被分解为松耦合的微服务,每个微服务都有自己的配置要求。动态:云原生应用程序经常更新和部署,需要动态的配置管理系统来跟上这些变化。可扩展:应用程序需要能够随着需求的增长而轻松扩展,配置管理策略应支持这一点。
配置管理策略
以下是一些适用于云原生应用程序的最佳配置管理策略
云原生应用是什么?它的特点有哪些?
云并非把原先在物理服务器上跑的东西放到虚拟机里跑,真正的云化不仅是基础设施和平台的事情,应用也要做出改变,改变传统的做法,实现云化的应用——应用的架构、应用的开发方式、应用部署和维护技术都要做出改变,真正的发挥云的弹性、动态调度、自动伸缩??一些传统IT所不具备的能力。
这里说的“云化的应用”也就是“云原生应用”。
云原生架构和云原生应用所涉及的技术很多,如容器技术、微服务等,而云原生应用最大的特点就是可以迅速部署新业务。
在企业里,提供新的应用程序环境及部署软件新版本通常所需时间以日、周甚至以月计算。
这种速度严重限制了软件发布所能承受的风险,因为犯错及改错也需要花费同样的时间成本,竞争优势就会由此产生。
所以云原生不是一个产品,而是一套技术体系和一套方法论,而数字化转型是思想先行,从内到外的整体变革。
云原生包括DevOps、持续交付、微服务、敏捷基础设施、康威定律等,以及根据商业能力对公司进行重组的能力,既包含技术、也包含管理,可以说是一系列云技术和企业管理方法的集合,通过实践及与其他工具相结合更好地帮助用户实现数字化转型。
CNCF(云原生计算基金会)认为云原生系统需包含的属性:1、容器化封装:以容器为基础,提高整体开发水平,形成代码和组件重用,简化云原生应用程序的维护。
在容器中运行应用程序和进程,并作为应用程序部署的独立单元,实现高水平资源隔离。
2、自动化管理:统一调度和管理中心,从根本上提高系统和资源利用率,同时降低运维成本。
3、面向微服务:通过松耦合方式,提升应用程序的整体敏捷性和可维护性。
解析云原生 2.0 架构设计的 8 大关键趋势
云原生2.0是企业智能升级新阶段,企业的云化从“ON Cloud”走向“IN Cloud”,当一切应用都生于云,长于云,云架构的迭代也会进入一个新的阶段。
围绕云原生2.0,华为云首席架构师顾炯炯提出了8个关键模式: 分布式云,混合调度,应用驱动基础设施,存算分离与数据治理自动化,可信、平民化DevOps,基于软总线的异构集成,多模态可迭代AI模型,全方位立体式云安全。
分布式云
随着云化和数字化渗透到制造类、工业互联网类场景,5G技术在to B领域应用的快速成熟,以及物联网 、AI技术的成熟,现在云的服务对象不仅是企业的后台IT支撑系统,它延伸到了前端的“现场”,类似于工业场景里的近场计算。
如果还是将所有的数字化应用系统都放在集中的数据中心,它的时延无法满足实时生产系统的要求。
另外,有一些行业的敏感数据不能从现场或者数据产生地直接简单的上传到云端,它存在数据安全、隐私保密的问题。
再比如医疗里的基因大数据、视频监控等场景,如果所有数据都上传到云端,带宽的成本非常高昂。
所以,我们必须要引入云边端协同的分布式概念,构建分布式云的架构。
这个架构可以和核心侧架构配合,覆盖核心区域、热点区域、本地机房、业务现场等不同接入时延敏感度,数据隐私合规要求及数据上云带宽成本的应用上云场景。
举个例子,通过这样的方式,可以把云端的很多算力和计算逻辑,甚至是训练好的AI模型推送到更加靠近用户数据产生地的位置上,进行就近的计算,将海量的数据做一定的收敛、分析、脱敏等,再发送到云端进行闭环的处理和控制反馈。
混合调度
在很多算法专家的努力下,华为云通过瑶光调度平台大大提高了资源的分配效率,达到甚至超过了80~90%的程度,已经接近于业界的领先水平。
但是资源的实际利用率仍然处在一个比较低的水平,当然业界平均也不是特别理想,领先者差不多20%左右。
为了解决这样的问题,华为云引入混合调动、柔性计算的能力,将在线和离线的不同优先级的业务,进行QoS感知的智能调用,实现资源利用率最大化。
柔性计算不仅仅具备弹性的特征,保证了横向的资源扩展,而且它也能实现纵向资源规格的可大可小。
目前,消费者云已经在内部验证了柔性计算的能力,可以在不改变上层业务的前提下提高利用率,实现性能的倍增。
关于柔性计算的更多内容参考 华为云首席架构师顾炯炯:敢为人先,探索架构创新之路如何走。
应用驱动的基础设施
如今,软硬件的垂直整合,特别是靠近操作系统底层的硬件和云服务基础设施层的服务软件之间的纵向整合能力,成为新的趋势,它把基础设施服务底层的硬件和相应的服务封装层打包在一起。
云服务厂商可以设计研发定制芯片,比如存储和网络的硬件卸载的芯片、匹配深度学习逻辑处理框架的芯片等等。
如果有能力构建这样的软硬件垂直整合的能力,就能拥有相比其他云服务商更优的价格优势,也得以呈现自身独特的硬件、芯片优势。
有了应用驱动的基础设施之后,根据应用的性能SLA需求,来定义是使用与软件完全解耦的通用硬件资源,还是匹配应用场景特殊诉求的软硬件深度协同的卸载卡或异构计算资源。
这也能发挥华为软硬件兼长的优势,我们在硬件领域有不少核心创新:一个是 SDI, 叫软件驱动的基础设施,也就是把分布式存储\分布式网络,还有Hypervisor的一些系统能力从服务器卸载到PCI卡上,也即SDI/擎天卸载卡。
二是鲲鹏硬件支撑云存储和数据湖的处理, 鲲鹏单核处理能力虽弱于X86,但核密度则达到X86 CPU的2倍,因此在对IO及内存带宽作为其性能瓶颈的大数据及分布式存储场景,是比X86更好的选择。
同时,我们也在用自研的升腾NPU取代GPU构建AI平台, 它在深度学习的训练推理中体现出更高的能效比。
存算分离和数据治理的自动化
未来企业的所有的数据孤岛都将汇聚到云端的数据湖,进行统一生命周期的治理和管理,所以必须要解决数据计算分析的资源需求。
数据湖里有各种各样的结构化、半结构化、非结构化的数据,但这些数据的分析计算和底层的存储容量之间的需求,并不是线性匹配的关系。
比如对于深度学习的场景,数据量需要不断的计算迭代,它需要更多的计算能力,相对较少的存储需求。
因此在不同的业务场景下,数据分析计算和存储的要求是不一样的,最终一定要走向存算分离。
在存算分离领域里面,华为云已经积累优势,从最早的去中心化的分布式存储引擎FusionStorage开始,七年磨一剑,我们从内部验证到向外部的推广,从块存储延伸到对象存储、文件存储、分布式的集群数据库,把原先在开源架构里五花八门的底层存储技术引擎架构实现了统一。
经过实际的测试,在业界同样支持存算分离数据湖架构的云场景中,华为云体现了领先30-60%以上性能优势。
再就是数据治理自动化。
现在的数据治理的还是人力密集型工作,整个过程非常低效,很难满足很多行业的要求。
所以在这个架构模式里面,除了存算分离的数据库,还要构建数据治理自动化。
通过引入AI的技术,将数据的获取、清洗以及最终数据知识的提取,主题库的建立、数据目录的发布,都实现完全的自动化。
用户只需要指定入湖的数据源和所属业务主题域,系统自动化创建入湖任务,底层资源根据入湖数据量自动扩缩容,智能完成入湖数据的安全等级、分级分类、隐私等级等数据标签的自动识别打标。
这个能力对企业数据资产的快速沉淀能力的构建是至关重要的。
可信、平民化DevOps
通过将一系列安全可信措施嵌入到敏捷开发运维模式, 构建所谓的DevSecOps流水线,实现敏捷快速迭代与严格质量管控兼顾;并通过低代码/无代码实现更多行业应用资产的沉淀, 将行业应用的开发效率再上一个新台阶。
Devops实现了应用的敏捷开发,但在面向政企时,还需要满足应用质量和安全可信的要求。
因此在遵循DevOps的同时,将安全能力集成到其中,升级成为DevSecOps。
使用安全左移、默认安全、运行时安全、安全服务自动化/自助化、基础设施即代码(IaC)等技术, 实现管理与协同、设计与开发、CI/CD、应用管理、运维、安全可信等各个环节的一体化趋势。
此外,由于传统政企开发投入有限,需要通过低码化无码化,来实现对应用进行快速构建及改造。
华为云低代码平台AppCube可支持多种页面类型和丰富的组件能力,基于它的服务能力编排和业务流程无代码定制,可实现灵活流程触发方式、多种权限配置方式、自定义业务编排等。
基于软件总线的异构集成
即帮助企业构建可平滑演进的IT架构, 实现老旧应用与新建云原生应用,线上与线下应用的平滑融合集成。
云原生下,企业很多应用都要进行微服务解耦,遵从微服务的治理架构,进行水平扩展的架构的设计,甚至把原来的单体架构逐步进行拆解。
但这个过程不是一蹴而就的,尤其是那些包袱比较重的传统行业,他们还面临很多现实的挑战。
所以我们要在企业传统IT架构和云原生架构之间搭建无缝的桥梁,在确保企业业务连续性最大化的前提下,实现平滑的切换和演进。
以Roma Connect为例,它可以通过软总线的形式,把云原生和非云原生的传统世界无缝的连接起来,支持异构的应用和数据库源的对接,也可以对接到云上开发平台、数据湖,实现无缝互通。
在架构的平滑演进中,首先需要将传统非云原生应用封装为REST接口与云原生应用对接,通过统一接口服务层APIC进行开放,业务云原生应用通过标准接口即可获取老系统信息。
同样的机制可以将线上线下,及部署在多云环境上企业IT系统的无缝互通。
其次传统Oracle/Sybase等传统数据库及中间件与设备协议接入上云:云上云原生应用通过云上标准API调用、数据库访问、消息订阅等方式即可获取传统数据。
最后,通过全生命周期的API管理能力,包含从设计、发布、上架、治理的全过程,帮助企业构建整个跨地域,跨组织、跨部门的应用网络,并沉淀行业应用资产。
多模态可迭代的AI模型
AI在行业落地面临的问题是能够获取到的训练数据是非常有限的,单纯的依赖数据驱动的深度学习训练,使得行业AI模型是非常难以泛化、通用化。
预训练大模型是解决AI应用开发定制化和碎片化的重要方法。
通过一个AI大模型实现在众多场景通用、泛化和规模化复制,减少对数据标注的依赖,赋能AI开发由作坊式转变为工业化开发,比如华为云之前推出的盘古大模型。
另外也要引入知识计算的能力, 类似于把知识图谱这样的能力和基于感知计算的数据驱动的AI模型互补结合起来。
也就是说把知识模型和数据模型,在数据样本相对缺少的情况下结合在一起,更好服务于行业AI的落地。
帮助企业打造自己的知识计算平台,整合分散在不同系统、多种形态的企业数据,形成带有建议性的知识体系。
全方位的立体式云安全
1.0阶段的云安全服务更多的是孤立的安全能力:虚拟化安全,hyporvisor防逃逸能力,云防火墙能力其实都是割裂的,并没有跟所有的云服务形成互锁。
全方位的立体式运营安全通过打通离散的云安全服务能力,将其与其他云服务及客户应用形式互锁, 构建安全Build-in的云原生应用,以及引入可信智能计算,解决跨行业数据隐私保护与流通碰撞、价值挖掘之间的矛盾。
首先通过可信智能计算提供四个核心能力,进行安全可信的数据计算。包括:
1、跨组织、跨行业的多方数据融合分析和多方横向与纵向联邦学习建模;
2、支持对接主流数据源和深度学习框架;
3、支持安全多方计算(例如同态加密,差分隐私等),并支持用户自定义隐私策略;
4、基于区块链的数据计算轨迹的可追溯可审计。
此外,为了全方位安全,还需要将全栈云(及其子集)下沉部署(连线/非连线),彻底解决敏感行业上云安全顾虑,以及将全栈云服务、企业新开发云原生应用、aPaaS/SaaS等与全栈云安全能力互锁,为用户构建体系化的云安全平台。
本文分享自华为云社区,作者:技术火炬手。
现在大家都在说的云原生到底是什么?
云原生是一个组合词,可以拆分为“云”和“原生”两个词,“云”我们都知道,即在线网络,传统的应用原本都跑在本地服务器上,很有可能需要停机更新,且无法动态扩展,“云”表示应用程序运行在分布式的云环境中,可以频繁变更,持续交付。
“原生”表示应用程序在设计前期就考虑到了云平台的弹性和分布式特性,也就是为云设计的。
可以简单理解为:云原生=微服务+DevOps+持续交付+容器化| 微服务 |即软件架构,使用微服务架构可以将一个大型的应用程序按照功能模块拆分成多个独立自治的微服务,每个微服务仅仅实现一种功能,具有很明确的边界。
带来的好处有哪些?1)服务的独立部署每个服务都是独立的项目,可以独立部署,不依赖于其他服务,耦合性低。
2)服务的快速启动拆分之后服务启动的速度要比拆分之前快很多,因为依赖的库少了,代码量也少了。
3)更加适合敏捷开发。
敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行。
服务拆分可以快速发布新版本,修改哪个服务只需要发布对应的服务即可,不用整体重新发布。
4)职责专一,由专门的团队负责专门的服务。
业务发展迅速时,研发人员也会越来越多,每个团队可以负责对应的业务线,服务的拆分有利于团队之间的分工。
5)服务可以动态按需扩容当某个服务的访问量较大时,我们只需要将这个服务扩容即可。
6)代码的复用每个服务都提供REST API,所有的基础服务都必须抽出来,很多的底层实现都可以以接口方式提供。
| 容器化 |是云原生的核心技术,它是一种相对于虚拟机来说更加轻量的虚拟化技术。
能为我们提供一种可移植、可重用的方式来打包、分发和运行程序。
容器的基本思想就是将需要执行的所有软件打包到一个可执行程序包。
例如,将一个Java虚拟机、Tomcat服务器以及应用程序本身打包进一个容器镜像。
用户可以在基础设施环境中使用这个容器镜像启动容器并运行应用程序。
而Docker是目前应用最为广泛的容器引擎,容器化为微服务提供实施保障,起到应用隔离作用,K8S是容器编排系统,用于容器管理,容器间的负载均衡,Docker和K8s都采用Go编写,(K8s全称Kubernetes,由首字母K,结尾字母s以及中间的8个字母组成,所以简称为K8s)。
| DevOps |是软件开发人员和IT运维人员之间的合作过程,是一种工作环境、文化和实践的集合,目标是高效地自动执行软件交付和基础架构更改流程。
开发和运维人员通过持续不断的沟通和协作,可以以一种标准化和自动化的方式快速、频繁且可靠地交付应用。
| 持续交付 |就是不误时开发,不停机更新,是一种软件开发方法,它利用自动化来加快新代码的发布。
在持续交付流程中,开发人员对应用所做的更改可通过自动化被推送至代码存储库或容器镜像仓库。