什么是云原生?

官方的云原生解释

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

什么是云原生?

当我们初始接触 云原生 时,可能会被其概念所迷惑。仅从字面意思来看,云(Cloud)可能有了一定的概念,如他是由组织统一管理硬件及软件,并将其作为一种服务按需提供给用户的一种资源使用模式,比如阿里云。

原生(Native)一词不常用,他强调事物未经外力改变的初始状态,如地质学中的"原生矿"指未经自然力改造的矿床。所以 云+原生 组合起来时的字面意思有点像:(软件)没有经过特殊改造适配就可以运行在云上。

虽然云原生字面意思不好理解,但也基本涵盖要做的事情, 是个相对合适的概念词语。

但如果要对云原生名词下定义,我觉得 云原生是一套构建和运行应用程序的方法论

云原生核心目标

云原生是一套方法论,那么他的核心目标是什么呢?

云原生的核心目标帮助各组织在公有云、私有云和混合云等新型动态环境中,自动化构建、运行和观测可弹性扩展的应用,使工程师能够轻松地对系统作出频繁和可预测的重大变更

为了实现这样的目标,云原生衍生出一些核心概念、相关的开源技术,以及管理的组织。

云原生核心理念

云原生核心理念

云原生方法论中核心的理念主要有五个:分别是 容器化、动态编排、声明式API、不可变基础设施、微服务架构。

容器化

应用及其依赖环境打包成轻量级、可移植的容器(如Docker),确保环境一致性,简化部署迁移。

动态编排

使用容器编排工具(如Kubernetes)自动化管理容器的部署、伸缩、负载均衡和故障自愈,降低运维成本。

声明式API

通过配置文件声明系统目标状态(如Yaml),系统自动负责实现并始终保持这个状态。

不可变基础设施

任何变更都通过替换而非修改完成(如更新版本是重新部署),提高系统的一致性和可靠性。

微服务架构

将大型单体服务拆分成多个松耦合的独立服务,每个服务可独立开发、部署和扩展,提升灵活性和可维护性

这些理念为云原生应该向着什么方向发展提供了原则性的指引。

云原生核心技术

在云原生理念的指导下,开源社区提供了大量丰富的相关开源技术来支撑云原生的实际落地。

云原生核心技术

云原生技术栈非常的丰富,都是云原生实践落地的重要组成部分,这里的描述并不完全,仅是一些核心的技术。

容器技术

如Docker/Containerd等提供轻量级的资源隔离单位(即容器),以及将应用及其所有的依赖项打包成OCI标准的制品(即镜像),使应用能在不同计算环境中快速、可靠地运行。‌

Kubernetes

使用容器编排工具(如Kubernetes)自动化管理容器的部署、伸缩、负载均衡和故障自愈,降低运维成本。为云原生提供不可变的基础设施环境,以及声明式API的落地支撑。

DevOps

打通开发(Dev)和运维(Ops)的壁垒,通过自动化工具链(如 Jenkins、GitLab CI、ArgoCD)实现持续集成(CI)和持续部署(CD)。代码提交后,能自动完成测试、构建镜像、部署到生产环境。

微服务与服务网格

基于微服务设计理念(如DDD)将大型单体拆分多个送耦合微服务,然后基于服务网格技术(如Istio/Linker等)负责服务间流量管理、熔断、限流、服务发现和安全加密,且对业务代码透明,不需要修改代码就能增强服务治理能力。

可观测性

通过日志(Logs)、指标(Metrics)和链路追踪(Traces)三大支柱,全方位监控系统的内部状态。当系统表现异常时,能快速定位是哪个环节出了问题。