云原生应用是啥?它的特点都有哪些?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了云原生应用是啥?它的特点都有哪些?相关的知识,希望对你有一定的参考价值。

云并非把原先在物理服务器上跑的东西放到虚拟机里跑,真正的云化不仅是基础设施和平台的事情,应用也要做出改变,改变传统的做法,实现云化的应用——应用的架构、应用的开发方式、应用部署和维护技术都要做出改变,真正的发挥云的弹性、动态调度、自动伸缩??一些传统IT所不具备的能力。这里说的“云化的应用”也就是“云原生应用”。云原生架构和云原生应用所涉及的技术很多,如容器技术、微服务等,

而云原生应用最大的特点就是可以迅速部署新业务。在企业里,提供新的应用程序环境及部署软件新版本通常所需时间以日、周甚至以月计算。这种速度严重限制了软件发布所能承受的风险,因为犯错及改错也需要花费同样的时间成本,竞争优势就会由此产生。

所以云原生不是一个产品,而是一套技术体系和一套方法论,而数字化转型是思想先行,从内到外的整体变革。云原生包括DevOps、持续交付、微服务、敏捷基础设施、康威定律等,以及根据商业能力对公司进行重组的能力,既包含技术、也包含管理,可以说是一系列云技术和企业管理方法的集合,通过实践及与其他工具相结合更好地帮助用户实现数字化转型。

CNCF(云原生计算基金会)认为云原生系统需包含的属性:
1、容器化封装:以容器为基础,提高整体开发水平,形成代码和组件重用,简化云原生应用程序的维护。在容器中运行应用程序和进程,并作为应用程序部署的独立单元,实现高水平资源隔离。
2、自动化管理:统一调度和管理中心,从根本上提高系统和资源利用率,同时降低运维成本。
3、面向微服务:通过松耦合方式,提升应用程序的整体敏捷性和可维护性。
参考技术A 云原生是一种构建和运行应用程序的方法,是一套技术体系和方法论。云原生(CloudNative)是一个组合词,Cloud+Native。Cloud表示应用程序位于云中,而不是传统的数据中心;Native表示应用程序从设计之初即考虑到云的环境,原生为云而设计,在云上以最佳姿势运行,充分利用和发挥云平台的弹性+分布式优势。不同的人和组织对云原生有不同的定义,相同的人和组织在不同时间点对云原生也有不同的定义:2013年,Pivotal公司的Matt Stine首次提出云原生(CloudNative)的概念;2015年,Matt Stine在《迁移到云原生架构》一书中定义了符合云原生架构的几个特征:12因素、微服务、自敏捷架构、基于API协作、扛脆弱性;2017年,Pivotal最新官网对云原生概括为4个要点:DevOps+持续交付+微服务+容器;2018年,CNCF又更新了云原生的定义,把服务网格(Service Mesh)和声明式API给加了进来;云原生可简单理解为,云原生 = DevOps+持续交付(Continuous Delivery)+微服务(Micro Services)+敏捷基础设施(Agile Infrastructure)+12要素(The Twelve-Factor App)+服务网格(Service Mesh)+声明式API。
云原生发展趋势:
1、运维继续下沉,服务网格将成为主流,Serverless逐步推广
云计算的一个发展方向就是运维下沉,将和业务无关的管理功能和运维工作尽量下沉到基础设施中,应用可以聚焦在业务能力的开发和运营。这个趋势演化的过程,影响了云计算的发展方向。从一开始的虚拟化,到IaaS,到PaaS都是将应用系统的部分运维职责交给平台运维的过程。
PaaS为云应用提供了运行容器,解决了应用部署的问题和运行时管理的问题,但是应用仍然有大量的运维工作,特别是对于微服务应用,需要解决诸多的问题,如服务的发布和感知,多实例应用的负载均衡,服务故障检测和隔离,已经应用灰度发布的策略等。这些在PaaS层面是无法解决的,通常是由开发框架解决,就是我们前面提到的微服务治理框架。
因为业务功能的提供才是业务开发团队的价值体现,业务开发团队应该聚焦于业务功能的实现,非功能的需求应该交给平台处理。基于这个诉求服务网格出现了,微服务治理的问题可以有服务网格统一运维管理,业务应用只需关注业务能力的实现。
服务网格出现后,业务应用本身的生命周期还是需要应用来运维保障。这就逐步演化出了Serverless的概念,Serverless并非没有Server,而是对于开发团队来说根本不在意Server是什么样的。开发团队只需要提交业务代码,就可以得到需要的运行实例,对应用开发团队来说,Server是不存在的。
从目前业界的技术趋势来看,ServiceMesh的概念已经被大部分的大型云上企业接受,ServiceMesh被诟病的性能问题也在被逐步解决中,可以预测今年将有更多的微服务应用采用这一基础能力。Serverless目前发展还比较初期,包括了全托管的服务和FaaS(函数即服务),全托管服务在公有云已经逐步成熟,随着混合云的普及,全托管服务会逐步发展。FaaS由于涉及开发模式的转变,目前要取代现有的开发模式还需要时日,不过有些合适的应用场景应该会有越来越多的应用。

2、软硬结合,解决虚拟化性能问题的利器
随着云计算的发展,虚拟化技术越来越多的被使用,从计算虚拟化到存储虚拟化到网络虚拟化。虚拟化技术带来了很多的好处,虚拟化是基础设施服务化的基础,通过虚拟化,可以实现基础设施即代码,大大提升了资源的可管理性和自动化程度。但是虚拟化带来了另外一个问题,就是性能的损耗和软件进程之间的相互影响问题。
对于性能损耗,会导致需要的资源比实际业务耗费的资源更多,提升了服务器资源的成本;进程之间的相互影响则会导致云平台的整体性能问题,网络虚拟化和存储虚拟化都需要通过软件进程的方式,来处理网络流量和IO。为了实现分布式高可用和减少数据包转发,基础的SDN,SDS的进程通常是和应用进程部署在同一套集群上。这就导致了有可能部分的SDN和SDS的管理进程所在服务由于各种原因,CPU或是内存占用过大,导致无法及时处理网络和IO请求,导致云平台整体性能下降。
为了解决这两个问题,目前一个解决思路就是软硬结合,讲云平台的管理进程,如调度管理,网络的虚拟交换机,存储的虚拟存储网关从操作系统进程中剥离出来,让这些进程跑在专门设计的服务器板卡上,这些板卡专门设计的,通常含有定制化的芯片(FPGA),可以进行编程,从而可以保持虚拟化话的优势的同时,使的管理进程和业务进程隔离,避免相互影响;同时由于通过定制芯片(如FPGA)来处理,性能会有很大提升,大大降低了虚拟化的损耗。
目前大的公有云厂商都有相关的产品在自身的公有云应用。

3、容器虚拟机进一步融合
容器和虚拟机的优势和劣势,从容器技术诞生的那天起就一直在争论。容器轻量化,良好的封装能力和部署简便的特点,特别是在Kubernetes出现后,大有取代虚拟机的气势。但是在处理重应用(如关系型数据库,大数据等)的这点上,容器技术显得有些力不从心。另外容器技术在资源隔离和安全性上,还达不到虚拟机的水准,所以在很多场景,仍然是虚拟机的用武之地。
在这种情况下,如何实现容器技术和虚拟化技术的融合,发挥两者的长处,成为云计算的一个发展课题。目前的技术主要有三种,一种是容器虚拟机的混布;一种是轻量级虚拟机;最后是安全容器。
容器虚拟机的混布。通过修改容器或是虚拟机的编排引擎,使得可以通过一套API,支持容器和虚拟机的部署,同时打通虚拟化层和容器的网络,使之更高效率的进行互访。这是一些传统的虚拟化厂商目前的做法。目前比较成熟的实现有Redhad的Kubevirt。
轻量级虚拟机。解决虚拟机镜像过于庞大,启动慢,耗费资源大的问题,业界提出了轻量级虚拟机的解决方案。轻量级虚拟机使用精简专属的库操作系统(LibraryOS),它能够使用高级语言编译并直接运行在商用云平台虚拟机管理程序之上。相比于容器技术它们有很多的优点,不仅仅有着媲美虚拟机的隔离能力,而且有更快的启动时间和更小的攻击面。轻量级虚拟机的由于使用了专属的操作系统,在语言支持和兼容性上都不如其他解决方案。目前轻量级虚拟机的技术有很多,例如Unikernel,Drawbridge, MirageOS 和HaLVM等。
安全容器,或是叫沙箱容器。为了解决容器的隔离性上的弱点,安全容器为容器的运行提供了一层沙箱(Sandbox),容器在沙箱中运行的应用程序有自己的内核和虚拟设备,与主机和其它沙箱区分开来。安全容器的优点是可以兼容目前的容器镜像,不需要对容器编排Kubernetes做出大的修改就可以直接应用,缺点是牺牲了部分的性能和灵活度。目前安全容器的开源项目有Kata container,Google的gVisor等。
安全容器和轻量级虚拟机的实现上,可能会有一些重叠,但是不管哪一个方向,都是向着虚拟机和容器融合这个大的方向发展。目标都是在发挥容器的轻量级,快速交付和灵活调度能力的同时,提升业务应用的隔离性和安全性。
参考技术B 云原生是一种方法,用于构建和运行充分利用云计算模型优势的应用。云计算不再将重点放在资本投资和员工上来运行企业数据中心,而是提供无限制的按需计算能力和根据使用情况付费的功能,从而重新定义了几乎所有行业的竞争格局。IT 开销减少意味着入行的壁垒更低,这一竞争优势使得各团队可以快速将新想法推向市场,这就是软件正在占据世界,并且初创公司正在使用云原生方法来颠覆传统行业的原因。
云原生应用专为云模型而开发。小的专用功能团队快速将这些应用构建和部署到可提供轻松的横向扩展和硬件解耦的平台,为企业提供更高的敏捷性、弹性和云间的可移植性。
采用云原生应用的团队可为开发人员省去为了在各种云基础架构间运行和扩展而编写代码所产生的开销,让他们专注于编写能够交付客户价值的代码。标准化开发人员体系上的 12 因素应用需要一套标准的服务,从而提供标准的开发人员“合同”,确保其应用充分利用底层的云原生平台。
参考技术C

云并非把原先在物理服务器上跑的东西放到虚拟机里跑,真正的云化不仅是基础设施和平台的事情,应用也要做出改变,改变传统的做法,实现云化的应用——应用的架构、应用的开发方式、应用部署和维护技术都要做出改变,真正的发挥云的弹性、动态调度、自动伸缩……一些传统IT所不具备的能力。这里说的“云化的应用”也就是“云原生应用”。云原生架构和云原生应用所涉及的技术很多,如容器技术、微服务等,


而云原生应用最大的特点就是可以迅速部署新业务。在企业里,提供新的应用程序环境及部署软件新版本通常所需时间以日、周甚至以月计算。这种速度严重限制了软件发布所能承受的风险,因为犯错及改错也需要花费同样的时间成本,竞争优势就会由此产生。



所以云原生不是一个产品,而是一套技术体系和一套方法论,而数字化转型是思想先行,从内到外的整体变革。云原生包括DevOps、持续交付、微服务、敏捷基础设施、康威定律等,以及根据商业能力对公司进行重组的能力,既包含技术、也包含管理,可以说是一系列云技术和企业管理方法的集合,通过实践及与其他工具相结合更好地帮助用户实现数字化转型。



CNCF(云原生计算基金会)认为云原生系统需包含的属性:

1、容器化封装:以容器为基础,提高整体开发水平,形成代码和组件重用,简化云原生应用程序的维护。在容器中运行应用程序和进程,并作为应用程序部署的独立单元,实现高水平资源隔离。

2、自动化管理:统一调度和管理中心,从根本上提高系统和资源利用率,同时降低运维成本。

3、面向微服务:通过松耦合方式,提升应用程序的整体敏捷性和可维护性。

参考技术D 云原生应用越来越多,其是指原生为在云平台上部署运行而设计开发的应用。公平的说,大多数传统的应用,不做任何改动,都是可以在云平台运行起来的,只要云平台支持这个传统应用所运行的计算机架构和操作系统。只不过这种运行模式,仅仅是把虚拟机当物理机一样使用,不能够真正利用起来云平台的能力。

云并非把原先在物理服务器上跑的东西放到虚拟机里跑,真正的云化不仅是基础设施和平台的事情,应用也要做出改变,改变传统的做法,实现云化的应用——应用的架构、应用的开发方式、应用部署和维护技术都要做出改变,真正的发挥云的弹性、动态调度、自动伸缩……一些传统IT所不具备的能力。这里说的“云化的应用”也就是“云原生应用”。云原生架构和云原生应用所涉及的技术很多,如容器技术、微服务等,
而云原生应用最大的特点就是可以迅速部署新业务。在企业里,提供新的应用程序环境及部署软件新版本通常所需时间以日、周甚至以月计算。这种速度严重限制了软件发布所能承受的风险,因为犯错及改错也需要花费同样的时间成本,竞争优势就会由此产生。

所以云原生不是一个产品,而是一套技术体系和一套方法论,而数字化转型是思想先行,从内到外的整体变革。云原生包括DevOps、持续交付、微服务、敏捷基础设施、康威定律等,以及根据商业能力对公司进行重组的能力,既包含技术、也包含管理,可以说是一系列云技术和企业管理方法的集合,通过实践及与其他工具相结合更好地帮助用户实现数字化转型。

CNCF(云原生计算基金会)认为云原生系统需包含的属性:1、容器化封装:以容器为基础,提高整体开发水平,形成代码和组件重用,简化云原生应用程序的维护。在容器中运行应用程序和进程,并作为应用程序部署的独立单元,实现高水平资源隔离。2、自动化管理:统一调度和管理中心,从根本上提高系统和资源利用率,同时降低运维成本。3、面向微服务:通过松耦合方式,提升应用程序的整体敏捷性和可维护性。

以上是关于云原生应用是啥?它的特点都有哪些?的主要内容,如果未能解决你的问题,请参考以下文章

云原生Java框架有哪些呢?

云原生是啥?

什么是云原生应用?云原生的设计原则有哪些?

云原生技术

现在大家都在说的云原生到底是啥?

天天叨叨云原生,你知道云原生是啥么?