云原生到底是什么?

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
简介: 前言最近老是看到云原生这个概念,闲暇之余也去了解了一下!看了很多文章,对云原生的解释总是迷迷糊糊,看完云里雾里,经过博主的大量查阅,用我的理解总结一下。

前言

最近老是看到云原生这个概念,闲暇之余也去了解了一下!看了很多文章,对云原生的解释总是迷迷糊糊,看完云里雾里,经过博主的大量查阅,用我的理解总结一下。


云原生的概念

云原生(Cloud Native)是一个组合词。我们把它拆分为云和原生两个词来看。

“云”即在线网络,我们都知道传统的应用都跑在本地服务器上,而本地部署的传统应用可能需要停机更新,且无法动态扩展等,而‘云’表示应用程序运行在分布式的云环境中,支持频繁变更,持续交付。

‘原生’表示应用程序在设计之初就考虑到了云平台的弹性和分布式特性,就是为云设计的。


那么随着云原生的技术的不断发展,他的定义也在不断地迭代和更新,不同的社区和公司对云原生有着不同的理解和定义,感兴趣的可以去看一下云原生的发展历程。


云原生的四大要点

可以简单地把云原生理解为:云原生 = 微服务 + DevOps + 持续交付 + 容器化


微服务

微服务就是一种软件架构,使用微服务架构可以将一个大型的应用程序按照功能模块拆分成多个独立自治的微服务,每个微服务仅仅实现一种功能,具有很明确的边界。


使用微服务架构能够为我们带来如下好处:

1)服务的独立部署。

每个服务都是一个独立的项目,可以独立部署,不依赖于其他服务,耦合性低。

2)服务的快速启动。

拆分之后服务启动的速度要比拆分之前快很多,因为依赖的库少了,代码量也少了。

3)更加适合敏捷开发。

敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行。服务拆分可以快速发布新版本,修改哪个服务只需要发布对应的服务即可,不用整体重新发布。

4)职责专一,由专门的团队负责专门的服务。

业务发展迅速时,研发人员也会越来越多,每个团队可以负责对应的业务线,服务的拆分有利于团队之间的分工。

5)服务可以动态按需扩容。

当某个服务的访问量较大时,我们只需要将这个服务扩容即可。

6)代码的复用。

每个服务都提供 REST API,所有的基础服务都必须抽出来,很多的底层实现都可以以接口方式提供。


容器化

容器技术是云原生的核心技术,容器是一种相对于虚拟机来说更加轻量的虚拟化技术。能为我们提供一种可移植、可重用的方式来打包、分发和运行程序。


容器的基本思想就是将需要执行的所有软件打包到一个可执行程序包。例如,将一个 Java 虚拟机、 Tomcat 服务器以及应用程序本身打包进一个容器镜像。用户可以在基础设施环境中使用这个容器镜像启动容器并运行应用程序。


而Docker是目前应用最为广泛的容器引擎,容器化为微服务提供实施保障,起到应用隔离作用,K8S是容器编排系统,用于容器管理,容器间的负载均衡,Docker和K8s都采用Go编写,(K8s全称Kubernetes,由首字母K,结尾字母s以及中间的8个字母组成,所以简称为K8s)。


容器技术好处如下。


应用程序的创建和部署过程更加敏捷:与虚拟机镜像相比,使用应用程序的容器镜像更简便和高效。

可持续开发、集成和部署:借助容器镜像的不可变性,可以快速更新或回滚容器镜像版本,进行可靠且频繁的容器镜像构建和部署。

提供环境一致性:标准化的容器镜像可以保证开发、测试和生产环境的一致性,不必为不同环境的细微差别而苦恼。

提供应用程序的可移植性:标准化的容器镜像可以保证应用程序运行于 Ubuntu 、 CentOS 等各种操作系统或云环境下。

为应用程序的松耦合架构提供基础设置:应用程序可以被分解成更小的独立组件,可以很方便地进行组合和分发。

资源利用率更高。

实现了资源隔离:容器应用程序与主机之间的隔离、容器应用程序之间的隔离可以为运行应用程序提供一定的安全保证。

容器大大简化了云原生应用程序的分发和部署,可以说容器是云原生应用发展的基石。


devops

DevOps ( Development & Operations ,开发和运维)是软件开发人员和 IT 运维人员之间的合作过程,是一种工作环境、文化和实践的集合,目标是高效地自动执行软件交付和基础架构更改流程。开发和运维人员通过持续不断的沟通和协作,可以以一种标准化和自动化的方式快速、频繁且可靠地交付应用。


云原生应用通常包含多个子功能组件,devops可以大大简化云原生应用从开发到交付的过程。实现了真正的价值交付。


持续交付

持续交付就是不误时开发,不停机更新,是一种软件开发方法,它利用自动化来加快新代码的发布。在持续交付流程中,开发人员对应用所做的更改可通过自动化被推送至代码存储库或容器镜像仓库。


结语

附上一张云原生图谱

image.png

相关实践学习
通过容器镜像仓库与容器服务快速部署spring-hello应用
本教程主要讲述如何将本地Java代码程序上传并在云端以容器化的构建、传输和运行。
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
10天前
|
存储 Cloud Native Linux
云原生系列(三)
云原生系列(三)
|
Kubernetes Cloud Native Serverless
什么是云原生?聊聊云原生的前世今生
什么是云原生,云原生是在一个怎么样的背景下被提出来的,云原生和传统所说的云计算概念有什么不同?聊聊云原生的前世今生那些事。
2430 0
|
10天前
|
存储 负载均衡 Cloud Native
云原生系列(六)
云原生系列(六)
|
10天前
|
Kubernetes Cloud Native API
云原生系列(五)
云原生系列(五)
|
10天前
|
Kubernetes Cloud Native 安全
云原生系列(四)
云原生系列(四)
|
10天前
|
Kubernetes Cloud Native 调度
云原生系列(八)
云原生系列(八)
|
监控 Cloud Native Devops
云原生应用在那些场景应用广泛
云原生应用在那些场景应用广泛
|
运维 Cloud Native Devops
云原生应用的特点
云原生应用的特点
|
运维 监控 Cloud Native
云原生机甲
现在云原生领域已经涌现出大量的云原生中间件,如 istio、envoy、argo 等,但这些产品单个拿来使用的时候往往达不到我们系统的要求,或者配置起来很繁琐。比如我们想使用流量泳道等体系化方案时,单纯的改动一个场景不能支持。每个产品都支持体系化的流量泳道方案还有可能出现不协调的情况。在这样背景下【云原生机甲】的概念应运而生。
480 1
|
Cloud Native Devops 持续交付
都在说云原生,那云原生到底是什么?
技术的变革,一定是思想先行,云原生是一种构建和运行应用程序的方法,是一套技术体系和方法论。伴随云计算的滚滚浪潮,云原生(CloudNative)的概念应运而生,而且还很火。 今天,我给大家讲一讲,我对云原生的理解。
204 2
下一篇
无影云桌面