云计算主题 什么是云原生?

什么是云原生?

更新时间: 2024-02-06 11:36:11

云原生是一种现代化的软件开发和部署方法,旨在充分利用云计算的优势,提高应用程序的可伸缩性、弹性和可靠性。

云原生的详细定义包括云原生计算基金会Cloud Native Computing FoundationCNCF)的官方定义和延伸含义。

  • 官方定义:云原生技术有利于各组织在公有云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用。云原生的代表技术包括容器、服务网格、微服务、不可变基础设施和声明式API。这些技术能够构建容错性好、易于管理和便于观察的松耦合系统。结合可靠的自动化手段,云原生技术使工程师能够轻松地对系统做出频繁和可预测的重大变更。

  • 延伸定义:云原生包括云原生产品、云原生技术、云原生架构,以及构建现代化应用的开发理念,如 DevOps,具体说明如下。

    • “云原生产品”和“云原生技术”需要基于云基础设施(IaaS)。云原生产品是指运行在云计算环境中的应用程序和服务,它们通常采用容器化技术,微服务架构和持续交付流程来构建和部署。而云原生技术则是指用于创建和维护这些云原生产品的工具和技术,包括容器编排工具(如Kubernetes),持续集成/持续部署(CI/CD)工具,服务网格等。

    • “云原生架构”和“云原生开发理念”是基于云原生技术和产品构建或实现的。注意,对于不是基于云原生

      技术或者产品的架构和理念,如基于传统物理服务器发布构建的 DevOps,是不会被划分到云原生范畴的。

“云原生应用”是基于云原生的架构和开发理念构建或实现的。只有结合云原生技术所提供的云服务,改造应用的架构,才能够更好地使用云原生技术,以及更好地构建弹性、稳定、松耦合的分布式应用,解决分布式复杂性问题。此外,对架构的改造还意味着相关的开发模式、交付方式、运维方式等都要随之改变,比如,采用微服务架构重写应用、用声明式 API和自动化工具升级运维方式等。简单来说,云原生使得整个软件的生产流水线都发生了巨大的变化,而具体的变化程度又取决于企业对云原生的使用程度。

为什么需要云原生

  • 从技术发展趋势看,更多的企业将会广泛应用云原生技术。在国家政策和企业需求的双重驱动下,更多企业上云,以及中国云计算的强势增长都是必然趋势,这也注定了更多企业将会关注、应用、采纳能够充分利用云计算能力的云原生技术和产品。

  • 从软件开发角度看,云原生技术为企业带来了更快进行业务创新的价值。越来越多的企业逐渐意识到了云服务的专业性和高 SLA,这些企业在数字化转型的过程中将 IaaS 和 PaaS 的通用技术复杂性委托给了云平台,从而能够更好地专注于自身业务逻辑的创新;利用云原生技术重塑企业的软件生产流水线,可以加大业务组件的复用程度,将软件交付周期从周、天降低到小时甚至分钟级别,从而提升业务的市场嗅觉灵敏度,增强市场反应能力。

  • 从应用技术栈角度看,越来越多的企业发现传统的应用已经无法满足数字化业务的需要,所以会对应用进行彻底升级,会更多地采用云原生技术和云原生架构作为构建现代化应用的核心框架,从而帮助企业自身打造具备弹性、韧性、可观测性、API 驱动、多语言支持、高度自动化、可持续部署等特性的现代化应用软件。

云原生架构和微服务架构的区别是什么?

微服务架构和云原生架构是现代软件开发中两个紧密相关且经常一起使用的概念,但它们关注的侧重点和应用的范围等有所不同。

  • 云原生架构是一种基于云环境设计和构建应用程序的方法,它天然利用了云计算的优势,如弹性、可扩展性、自动化和敏捷性。Matt Stine 于2013年首次提出云原生(CloudNative)的概念,随着技术的不断演进,其定义也在不断地迭代和更新,云原生可以概括为四个要素:微服务、容器、DevOps 和持续交付。

    云原生架构的主要目的是如何最大化地利用云平台的特性来实现高效的资源利用、快速迭代和自动化运维。

  • 微服务架构的目的则是为了提高应用程序的模块化,使得开发、部署和扩展可以更加独立和灵活。

云原生架构是一种基于云环境设计和构建应用程序的方法,它天然利用了云计算的优势,如弹性、可扩展性、自动化和敏捷性。Matt Stine 于2013年首次提出云原生(CloudNative)的概念,随着技术的不断演进,其定义也在不断地迭代和更新,云原生可以概括为四个要素:微服务、容器、DevOps 和持续交付。

云原生有哪些实际应用?

云原生应用的实际应用场景有很多,以下是一些常见的例子:

  • 微服务架构:云原生应用通常采用微服务架构,将应用程序划分为一组独立的服务,每个服务可以独立部署和扩展。这种架构使得应用程序更加灵活和可靠。

  • 容器化:云原生应用通常使用容器技术进行部署,这使得应用程序可以轻松地在不同的环境中运行,无论是本地还是云环境。

  • 持续集成和持续部署(CI/CD):云原生应用通常采用CI/CD流程,可以实现自动化的代码构建、测试和部署,从而加快软件交付速度。

  • DevOps文化:云原生应用鼓励开发和运维团队密切合作,共同参与整个应用程序的生命周期。

  • 自动化和可伸缩性:云原生应用通常具有高度的自动化和可伸缩性,可以根据需求自动扩展或缩减资源。

  • 容错和高可用性:云原生应用通常设计为具有容错能力和高可用性,即使某个组件发生故障,整个应用程序也能继续运行。

  • 云服务集成:云原生应用可以轻松地与云提供商提供的各种服务集成,例如数据库、消息队列、存储等。

云原生的关键技术

容器技术

容器作为标准化软件单元,可用于将应用及其所有依赖项整体打包,使应用不再受到环境的限制,从而可以在不同计算环境之间快速、可靠地运行。

  • 虽然早在 2008 年,Linux就提供了Cgroups资源管理机制以及Linux Namespace隔离方案,借助它们,应用可以在沙箱环境中独立运行,从而避免相互之间产生冲突与影响;但直到Docker容器引擎开源,才从真正意义上降低容器技术使用的复杂性,加速容器技术的普及。Docker容器基于操作系统虚拟化技术,具有共享操作系统内核、轻量、无资源损耗、秒级启动等优势,极大地提升了系统的应用部署密度和弹性。更重要的是,Docker 提出了创新的应用打包规范,即Docker镜像,它解耦了应用与运行环境,使应用可以在不同计算环境间一致、可靠地运行。

  • 随后,Kubernetes也开源了,其凭借优秀的开放性、可扩展性,以及活跃的开发者社区,在容器编排之战中脱颖而出,成为分布式资源调度和自动化运维的事实标准。Kubernetes屏蔽了底层架构的差异,以优良的可移植性,帮助应用在包括数据中心、云端、边缘计算等不同环境中运行时也能保证一致性。企业可以结合自身的业务特征,通过Kubernetes设计自身的云架构,更好地支持多云或混合云,从而免去了被云平台锁定的顾虑。容器技术的逐步标准化,进一步催生了容器技术生态的细分和协同。基于Kubernetes,生态社区开始构建上层的业务抽象,比如,服务网格Istio、机器学习平台Kubeflow、无服务器应用框架Knative等。

过去几年,容器技术在获得越来越广泛应用的同时,其所展现的三个核心价值最受用户关注,具体说明如下。

敏捷

容器技术在提升企业IT架构敏捷性的同时,也使业务迭代变得更加迅捷,并为创新探索提供了坚实的技术保障。比如,在2020年新冠肺炎疫情期间,在线教育、远程办公、公共健康等在线化需求大幅增长,面对流量的爆发性增长,企业通过容器技术紧紧抓住了这次突如其来的业务快速增长机遇。据统计,容器技术,可使企业的产品交付效率提升3~10倍,这意味着企业不仅可以更快速地迭代产品,而且可以降低业务的试错成本。

弹性

在互联网时代,企业IT系统经常需要面对促销活动、突发事件等各种预期之外的爆发性流量增长。通过容器技术,企业可以充分发挥云计算的弹性优势,降低运维成本。据统计,借助容器技术,部署密度提升和弹性优势,企业可以降低50%的计算成本。以在线教育行业为例,面对呈指数级增长的流量,教育信息化应用工具提供商——希沃Seewo利用阿里云容器服务ACK和弹性容器实例ECI满足了快速扩容的迫切需求,为数十万名老师提供了良好的在线授课环境,帮助数以百万计的学生完成在线学习。

可移植性

容器已成为应用分发和交付的标准技术,可实现应用与底层运行环境的解耦;Kubernetes可以屏蔽 IaaS 层架构的差异性,帮助应用平滑地运行在不同的基础设施上。CNCF推出了Kubernetes一致性认证,以进一步保障不同Kubernetes实现的兼容性,使企业更愿意采用容器技术来构建云时代应用的基础设施。

DevOps技术

DevOps(Development + Operations)作为一组过程、方法与系统的统称,是云原生概念的重要组成部分,旨在促进开发(应用程序或软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。DevOps非常重视“软件开发人员”(Dev)和“IT运维技术人员”(Ops)之间沟通合作的文化、习惯和方式。自动化“软件交付”和“架构变更”的流程,可以使软件的构建、测试和发布变得更加快捷、频繁和可靠。DevOps还会引导更多技术人员意识到,为了按时交付软件产品和服务,开发人员与运维人员必须紧密合作。

微服务

在过去很长一段时间内,传统软件大多是各种独立系统的堆砌,这些系统的问题总结来说就是扩展性差、可靠性不高、维护成本高。随着软件开发技术的发展,以及面向服务的体系架构(Service-Oriented Architecture,SOA)的引入,上述问题在一定程度上得到了缓解。但由于SOA 早期使用的是总线模式,这种总线模式与某种技术栈具有强绑定关系,导致很多企业的遗留系统很难对接,且切换时间太长,成本太高,新系统稳定性的收敛也需要一段时间。

为了摆脱这一困境,微服务应运而生。作为SOA的变体,微服务将应用程序构造为一组松散耦合的服务。在微服务体系架构中,服务是细粒度的,协议是轻量级的。在云原生时代,云原生微服务体系将充分利用云资源的高可用和安全体系,以保障应用的弹性、可用性和安全性。应用构建在云平台所提供的基础设施与基础服务之上,充分利用云服务所带来的便捷性和稳定性,可以降低应用架构的复杂度。云原生的微服务体系也将帮助应用架构全面升级,让应用具备更好的可观测性、可控制性、容错性等。

Serverless

云计算的出现,也催生出很多改变传统IT架构和运维方式的新技术,比如,虚拟机、容器、微服务。无论这些技术应用在哪些场景,降低成本、提升效率都是亘古不变的主题。随着云计算的不断发展,越来越多的企业把应用和环境中很多通用的部分变成服务。Serverless的出现,更是带来了跨越式的变革。Serverless把主机管理、操作系统管理、资源分配、扩容,甚至是应用逻辑的全部组件都外包了出去,把它们看作某种形式的服务。

构建Serverless应用程序意味着开发人员可以将精力专注于核心业务代码上,而无须管理和操作云端或本地的服务器或运行时。Serverless真正做到了在部署应用时无须涉及基础设施的建设,自动构建、部署和启动服务。Serverless计算包含如下特征。

  • 全托管的计算服务:客户只需要编写代码构建应用,而无须关注同质化的、负担繁重的服务器等基础设施开发和运维等工作。

  • 通用性:结合丰富的BaaS 云服务能力,支持云上所有重要类型的应用。

  • 自动的弹性伸缩:大幅降低用户资源容量规划的难度。

  • 按量计费:企业的使用成本得到有效降低,无须为闲置资源付费。

FaaS(Function as a Service,功能即服务)是Serverless 中最具代表性的服务形态。它通过把应用逻辑拆分为多个函数,并通过事件驱动的方式触发执行每个函数,例如,当对象存储服务(Object Storage Service,OSS)中产生的上传/ 删除对象等事件,能够自动、可靠地触发FaaS处理,且每个环节都具有弹性和高可用性时,业务就能够快速实现大规模数据的实时并行处理。同样,通过消息中间件和函数计算的集成,业务可以快速实现大规模消息的实时处理。

阿里云如何帮助您实现云原生?

产品和服务

类别

产品名称

简介

应用场景

容器

容器服务 Kubernetes 版

容器服务 Kubernetes 版提供高性能且可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。在 2021 年,ACK 成为国内唯一连续三年入选 Gartner 公共云容器报告的产品,同时在 2022 年成为国内唯一进入 Forrester 领导者象限的产品。ACK 整合了阿里云的虚拟化、存储、网络和安全能力,助力企业高效运行云端 Kubernetes 容器化应用。

  • 弹性伸缩架构

    容器服务可以根据业务流量自动对业务扩容/缩容,无需人工干预。

  • DevOps 持续交付

    配合 Jenkins,容器服务 ACK 自动完成从代码提交到应用部署的 DevOps 完整流程,高效替代业内部署复杂、迭代缓慢的传统方式。

容器计算服务 ACS

容器计算服务是以 K8s 为使用界面供给容器算力资源的云计算服务,提供符合容器规范的算力资源,支持资源预定和按量付费的灵活付费模式,以及 Serverless 形态的算力交付模式,用户无需关注底层节点及集群的运维管理。ACS 算力资源可支持用户的容器应用负载,还能支持阿里云云产品的负载。

  • 通用型、任务型实例自由组合使用

    用户在 ACS 上可以根据不同工作负载、不同业务的应用特征,组合使用通用型实例(如 Web 应用)和任务型实例(如 AI 训练),实现性能更稳定、价格更优的目的。

  • 云产品复用闲置的预留资源

    基于资源配额,用户可以灵活统筹 ACS 算力资源,可将算力调配给 PAI 等各类云产品负载,提升整体 ACS 闲置算力资源利用率。

容器镜像服务 ACR

容器镜像服务 ACR 是面向容器镜像、Helm Chart 等符合 OCI 标准的云原生制品安全托管及高效分发平台。 ACR 支持全球同步加速、大规模/大镜像分发加速、多代码源构建加速等全链路提效,与容器服务 ACK 无缝集成,帮助企业降低交付复杂度,打造云原生应用一站式解决方案。

  • 全球同步加速

    互联网出海、MNC 企业,存在容器应用一次提交,全球多地域部署场景。基于 ACR EE 全球统一域名,支持智能就近拉取,降低运维成本,提高灾备能力。

  • 大规模分发加速

    使用 ACR EE P2P 加速能力,保障单集群千节点分发加速,平均下载时间节约 80%,分发性能提升 4 倍。

微服务

微服务引擎 MSE

微服务引擎 MSE 面向业界主流开源微服务项目, 提供注册配置中心和分布式协调(原生支持 Nacos/ZooKeeper/Eureka )、云原生网关(原生支持 Higress/Nginx/Envoy,遵循 Ingress 标准)、微服务治理(原生支持 Spring Cloud/Dubbo/Sentinel,遵循 OpenSergo 服务治理规范)能力。

  • 分布式应用基础设施

    微服务治理提供全链路的无侵入治理功能。用户可以选择一个或多个组件,并和其他云产品搭配,快速构建分布式应用体系。

  • 零信任安全

    MSE从入口层的南北向流量,到应用层的东西向调用,提供端到端的安全能力。

可观测

应用实时监控服务 ARMS

作为云原生可观测平台,应用实时监控服务 ARMS 轻松实现全栈性能监控告警与端到端追踪诊断,快速发现、识别性能瓶颈与故障。覆盖浏览器、小程序、APP 等客户端环境,观测与分析用户行为、页面性能,精准把握用户体验。覆盖分布式、微服务等应用架构,容器、Serverless 等部署环境,对服务调用、系统负载进行监控与调用链分析,实现应用性能全面洞察与优化。

  • Web 应用、小程序监控

    对 Web 应用、小程序、APP 进行网络质量与用户体验监控,并对常见体验问题进行根因分析。

  • 应用性能监控与诊断

    对分布式、微服务化应用服务进行实时监控其性能指标与调用情况,快速定位业务异常问题,提升微服务诊断效率。同时可以根据业务需求规则,提供灵活及时的告警能力。

日志服务 SLS

日志服务 SLS是云原生观测分析平台,为 Log/Metric/Trace 等数据提供大规模、低成本、实时平台化服务。一站式提供数据采集、加工、分析、告警可视化与投递功能,全面提升研发、运维、运营和安全等场景数字化能力。

  • 全球采集,高弹性场景

    日志服务为游戏运营团队提供一个稳定、高弹性和高性能的日志系统来进行细致的数据分析,实现精细化运营。

  • 直播实时业务监控场景

    通过日志服务快速排查和解决直播中的异常,保证直播质量和稳定性。

  • 数据湖摄入场景

    提供一个稳定、可靠且具有弹性的系统来处理和分析大数据,解决数据采集的性能瓶颈。

Serverless

云工作流 CloudFlow

是用来协调多个分布式任务执行的全托管 Serverless 云服务,简化开发、运行业务流程需要的任务协调、状态管理和错误处理等繁琐工作。用顺序、分支、并行等方式编排分布式任务,服务按照预设顺序协调任务执行,跟踪任务的状态转换,必要时执行用户定义的重试逻辑,确保工作流顺利完成。

  • 多媒体文件处理场景

    使用云工作流可以帮助您将多个任务编排成一个完整的处理流程,通过函数计算提交媒体处理(IMM)任务(或自建处理器),产出一个符合业务需求的输出。

  • 数据处理流水线场景

    可快速搭建出高可用的数据处理流水线,支持对流程中的单个步骤失败进行重试,降低流程失败概率,支持动态并行任务执行。

事件总线 EventBridge

事件总线是阿里云提供的一款无服务器事件总线服务,支持阿里云服务、自定义应用、SaaS应用以标准化、中心化的方式接入,并能够以标准化的 CloudEvents 1.0 协议在这些应用之间路由事件,帮助您轻松构建松耦合、分布式的事件驱动架构。

  • 搭建消息集成应用

    支持阿里云服务、自定义应用、SaaS 应用以标准化、中心化的方式接入,并能够以标准化的 CloudEvents 1.0 协议在这些应用之间路由事件。

  • 一站式企业 SaaS 集成方案

    针对业内 SaaS 系统集成的种种痛点,EventBridge 推出一站式企业 SaaS 集成方案。推出 API 集成方案和数据集成方案,打通应用与应用,云与应用的连接。

函数计算 FC

函数计算是一个事件驱动的全托管 Serverless 计算服务,您无需管理服务器等基础设施,只需编写代码并上传,函数计算会为您准备好计算资源,并以弹性、可靠的方式运行您的代码。

  • 搭建高可用 Web 应用

    工程师只需编写业务代码即可快速搭建云原生的 Web 应用,有效提高上线迭代效率,降低运维成本。

  • 实时数据处理

    支持丰富的事件源,事件触发机制可以通过几行代码和简单的配置对数据进行实时处理。

Serverless 应用引擎

Serverless 应用引擎 SAE(Serverless App Engine)是一款零代码改造、极简易用、自适应弹性的应用全托管平台。SAE 让您免运维 IaaS和 K8s,秒级完成从源代码/代码包/ Docker 镜像部署任何语言的在线应用(如 Web /微服务 /Job任务)到 SAE,并自动伸缩实例按使用量计费,开箱即用日志、监控、负载均衡等配套能力。

  • 低门槛微服务/容器化架构转型

    微服务套件天然集成,无需额外搭建。不需要有K8s 相关经验,屏蔽繁复的、有难度的K8s 概念,无需破坏原有CICD 流程,WAR/JAR/PHP zip 包无需容器化改造直接部署。

  • Web应用托管

    博客、论坛、小程序、企业官网、多站点部署应用和一些后台线程、定时任务等。

最佳实践

阿里云拥有国内全面的云原生产品技术以及大规模的云原生应用实践,通过全面容器化、核心技术互联网化、应用 Serverless 化三大范式,助力制造业企业高效上云,实现系统稳定、应用敏捷智能。拥抱云原生,让创新无处不在。

  • 函数计算部署Stable Diffusion AI绘画该实践通过函数计算快速搭建了AIGC的能力,无需管理服务器等基础设施,专注模型的能力即可,具有高效免运维、弹性高可用、按需低成本的优势。

  • MSE实现全链路灰度MSE微服务治理为多应用发布提供全链路灰度能力,让您在不修改业务代码的情况下实现全链路流量控制,端到端构建从网关到多个后端服务的全链路灰度。在多应用同时发布新版本的情况下,实现多个应用进行灰度验证,确保应用平滑发布上线。

  • 一键训练大模型及部署GPU共享推理服务通过创建ACK集群Pro版,使用云原生AI套件提交模型微调训练任务与部署GPU共享推理服务。

访问云原生实战案例集,查看更多的阿里云云原生应用实践案例。