什么是云原生?
作者 | 乔克
来源 |运维开发故事(ID:mygsdcsf)
转载请联系授权(微信ID:wanger5354)
什么是云原生?
我相信大部分人都听过云原生,但是要你说出一个所以然,却不知道怎么开口,我也是一样。
我不知道云原生到底是什么,从字面来看:云原生就是为云而生。云是什么?我理解云就是云计算,那云原生就是在云计算的基础之上设计实现,充分利用云的弹性、分布式等特性,让应用能够实现弹性伸缩、动态调度,也能更高的提升资源利用率。
发展历程
在说云原生之前,先来看看云计算的发展历程。
从上面的时间线来看,云计算的技术演进是朝着越来越灵活的方向发展。其核心单元从早期的物理服务器、变成后来的虚拟机,再到现在的容器,其灵活性越来越高,启动速度越来越快,不可变基础设施逐渐成为主流,软件技术栈也逐渐从商业软件走向开源。
不知道你有没有发现,云原生其实是云计算发展历程中的一种产物。
云原生不是一个新的概念,它是云计算发展的过程中对理念的更新和延申。在云原生时代,希望让应用更有弹性、容错性、可观测性,让应用更容易部署、管理编写、编排等,希望开发者能够更好的利用云的资源、产品以及交付能力。
下边大致梳理云原生的发展历程。
截止目前(2022年6月),CNCF成员已经有810个,参与的开发者高达15W,其中的明星项目如Kubernetes、Envoy等受到大众非常喜欢。
云原生全景图(?https://github.com/cncf/landscape):
核心理念
云原生技术有助于企业在公有云、私有云和混合云等新型动态环境中构建和运行可弹性扩展的应用。
云原生的代表技术包括容器、服务网格、微服务、不可变基础设施以及声明式API。 随着云原生的发展,其核心理念如下:(1)利用容器和服务网格技术,解耦软件开发,提高业务开发部署的灵活性和可维护性;(2)以Kubernetes为核心的开源技术栈被各大产商所支持,用户的选择多,避免了产商绑定;(3)以Kubernetes为核心的松耦合架构,易扩展,避免侵入式定制;(4)对应用提供中心式的编排、动态管理以及调度,提高了工作效率和资料利用率; 在最近几年,云原生技术呈现如下几种趋势:(1)软硬一体化:传统基础设施的网络、存储、计算能力与云原生技术生态开始深度对接;(2)基于网格的服务治理能力:服务治理与业务逻辑逐步解耦,服务治理能力下沉到基础设施,服务网格以基础设施的方式提供无侵入的连接控制、安全、可监测性、灰度发布等治理能力;(3)有状态应用向云原生迁移:无状态+Job类应用趋于成熟,有状态应用逐步成为云原生市场中新的增长点。Operator 的出现,为有状态应用在云原生基础设施上运行提供一套行之有效的标准规范,降低了使用门槛,使有状态应用得以真正发展;(4)多云统一管理和多云业务流量统一调度:云原生北向API区域稳定,用户更多开始关注跨区域、跨平台、跨云大规模可复制能力;
代表技术
云原生的主要代表技术如下:(1)容器 容器不是新鲜的事物,在Docker发布之前就有需要容器技术,比如CGroups、LXC等,Docker受欢迎的一个主要原因是它的镜像技术——分层的镜像构建。(2)Kubernetes Kubernetes的声明式API是面向开发者提供全新的分布式原语。
- 针对期望状态给出声明,而不是针对过程
- API对象彼此互补、可组合
(3)服务网格 服务网格通过非侵入式的方式接管应用的服务通信。对于每个业务单元/模块来说,他们甚至不需要对网络通信、负载均衡等有任何的感知。
服务网格提供细粒度流量治理,包括灰度发布、故障注入、可观测性支持等能力,提高了业务应用的易维护性 对于企业开发者来说,服务网格可以很好地帮助他们剥离业务代码和分布式框架
- 平台团队聚焦框架层的开发和调优
- 业务团队聚焦业务本身的开发
技术在不断的变革,云原生的定义也在不断的变化,而且以云原生理念而诞生的技术也越来越多,最终云原生究竟如何定义现在也未可知,咱们只有拭目以待。