【原文链接】云原生----什么是云原生
文章目录
- 1. 云原生的概念
- 2. 云原生的四要素
- 3. 云原生的关键目标
什么是云原生?这里将从云原生的概念、云原生的四要素、云原生关键目标等方面介绍。
1. 云原生的概念
云原生应用时面向云而设计的应用,在使用云原生技术后,开发者无需考虑底层的技术实现,可以充分发挥云平台弹性和分布式优势,实现快速部署、按需伸缩、持续交付等。
2. 云原生的四要素
如下图所示,云原生四要素主要是微服务、DevOps、持续交付和容器化,下面就针对每个元素详细展开。
-
微服务
传统应用都是单体应用,当某一个模块发生代码变动或者bug修复等,整个服务都要停下然后更新,而微服务通过恰当的对应用进行拆分,原本一个服务的就被拆分为多个服务,这样一来当某一块出现代码变动后,只需将此服务升级即可,此外当对某一模块进行比较大的重构时,只要保证各个之间的API没有发生变动,理论上是不会影响这个应用的服务的。 -
DevOps
DevOps是Dev和Ops的合称,即包含开发和运维,实际含义是从开发到运维,当然这中间还包括测试,主要是为了解决开发、测试、运维之间的沟通难的问题,结合敏捷的思维,通过一系列的工具,从而做到从开发到运维甚至到交付的快速一条龙服务,从而降低开发、测试、运维之间的沟通成本,进而还能做到快速的持续交付。 -
持续交付
持续交付是伴随着敏捷开发的,敏捷开发要求一个大的功能需求不断拆分为小的功能点,然后按照迭代开发交付,这就面临着一个问题,即可能每个迭代之后都会要将一部分功能交付上线,而从整体的流程来看,这就是一个持续交付的过程。 -
容器化
容器化主要是指应用部署采用容器化部署,传统的部署方式在虚拟机或者服务器上部署,导致的一个很大的问题就是,开发人员调测完成后,由于开发、测试、运维各自使用的基础环境是很难保证完全一致的,这就导致一个很大的问题就是开发调测成功后,到了测试或者生产环境会出现各种各样的问题。这样就导致了开发、测试、运维之间沟通交流成本特别大。而采用容器化之后,开发调测完成后交付件是容器镜像,而测试或运维拿到容器镜像后直接启动,这样就避免了开发、测试、运维之间的环境不同的问题。此外Kubernetes为容器管理提供了非常好用的管理平台,这样借助容器化,就可以很容易实现服务平滑升级、出现问题快速回退、灰度发布以及动态弹性扩缩容等。
3. 云原生的关键目标
云原生的关键目标有可用、规模、敏捷、成本。
-
可用
这里的可用主要是指高可用,即保证服务的连续性,在版本升级或者回退的过程中仍然能够保证业务无中断。 -
规模
这里规模是指弹性扩缩容,当应用在上线初期,一般业务请求量比较小,而随着时间的推移,一般来说业务量出现激增的情况下,云原生就为这种场景提供了解决方案,可以随着业务请求量的增加自动地实现弹性的扩容,而当业务量减少时又可以自动地实现缩容,及时释放资源供其他应用使用。 -
敏捷
敏捷就是为了快速适应市场的变化需求,及时的作出调整,云原生则很好的适应了这种开发模式,即在微服务的架构下,在容器化的部署方式下,当某个应用市场需求发生了变化,开发人员对该微服务进行了对应的代码开发,云原生模式则很容易的实现仅仅通过升级此微服务即可。 -
成本
很显然,云原生实现了应用服务可以随着业务请求量的变化做出对应的变化,这样就极大的节约了计算存储网络资源,此外,云原生理顺了开发、测试、运维之间的协调合作,大大降低了开发、测试、运维之间的沟通成本。
因此,通过上述阐述分析,可以看出云原生在降本增效方面为企业的研发提供了极大的帮助,这也是为什么近年来云原生发展十分迅猛的一个重要原因。