[ 云原生之谜 ] 云原生背景 && 定义 && 相关技术详解?

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 随着云计算概念的普及,云原生一次也慢慢浮现在人们的眼前,不论是安全还是应用,只要和云计算相关,好像都会加上原生二字。那到底什么是云原生呢?

一、云原生产生背景



随着云计算技术的发展,企业上云已成为趋势,越来越多的企业都已将应用部署到了云上。但是应用上云并不意味着就能充分利用云平台的优势。目前,大部分云化的应用,都是基于传统的软件架构来搭建的,然后再移植到云上去运行,和云平台的整合度非常低,主要表现在以下几个方面:


1. 操作系统依赖强


传统应用程序和底层操作系统、硬件、存储和后备服务之间存在紧密的依赖关系,这些依赖关系使得应用程序在跨越云基础设施进行迁移和扩展时非常复杂且有风险。


2. 系统紧耦合


传统的企业应用多采用单体架构,将许多不同的功能模块捆绑在一个部署包中,导致功能模块之间产生不必要的依赖,并导致开发和部署过程中丧失敏捷性,无法独立的部署、发布更新、重启。


3. 手动化扩展


通过手工管理基础设施,包括手工编写管理服务器、网络和存储的配置脚本。在大规模复杂的操作中,操作人员在诊断问题时会很慢,而且无法大规模地实施。手工制作的自动化脚本还有可能将人为错误硬编码到基础设施中。


4. 恢复缓慢


基于虚拟机的基础设施相对于基于微服务的应用程序来说,是缓慢而低效的。因为单个虚拟机启动/关闭的速度很慢,并且在部署应用程序代码之前就会带来巨大的开销。


5. 瀑布开发


传统应用的开发模式,IT团队定期发布软件,通常间隔几周或几个月。尽管发布的许多组件已经提前准备好了,并且没有依赖关系,也必须等待版本中的其他组件。客户想要的功能被延迟,企业失去赢得客户和增加收入的机会。


总体来说,提供方便的基础设施,只是对云计算最初级的利用(提升利用率,按需使用,不够了随时扩容),无法充分发挥云计算的优势,要想充分发挥云计算的优势(弹性、高可用性、易扩展性),就必须进行真正的云化,不仅仅是基础设施和平台的变化,应用也需要做出改变,这就需要摈弃传统的方法,在架构设计、开发方式、部署维护等各个阶段和方面都基于云的特点重新设计,从而建设全新的云化的应用,也就是云原生的应用。


二、云原生定义:



1.目前网上搜索到的,最简短的一种定义:


云原生是一种利用云计算交付模型的优势来构建和运行应用程序的方法论。


2.Pivotal的定义


Pivotal是谁?

Pivotal公司是云原生应用的提出者,并推出了Cloud Foundry和Spring系列开发框架,因此,也是云原生的先驱者和探路者。


2015年《迁移到云原生应用架构》中的几个主要特征:

早在2015年,Pivotal公司的Matt Stine写了一本名为《迁移到云原生应用架构》的小册子,其中探讨了云原生应用架构的几个主要特征:

符合12因素的应用

面向微服务架构

自服务敏捷架构

基于API的协作以及抗脆弱性

符合12因素的应用如何理解?

参考文章:https://www.bookstack.cn/read/learning-cloudnative/97fd5c0406f2c2da.md


12-Factors 经常被翻译为12因素,符合12因素的应用则称为12因素应用。12因素创作于2012年左右,SaaS平台非常具有指导意义。12-factor为Web应用程序或SaaS平台的建立非常有用的指导原则,但它在有些地方并不适合微服务体系。

12因素具体内容为:

ed667aee7323455ca39384fa4c4930ec.png


2017年MattStine定义为具有六个特征:

Matt Stine认为云原生是一个思想的集合,云原生既包含技术(微服务,敏捷基础设施),也包含管理(DevOps、持续交付、康威定律以及重组等),云原生也可以说是一系列云技术、企业管理方法的集合。


在2017年10月,接受InfoQ采访时,Matt Stine对云原生的定义做了小幅调整,将云原生架构定义为具有以下六个特质:

模块化(Modularity)

可观测性(Observability)

可部署性(Deployability)

可测试性(Testability)

可处理性(Disposability)

可替换性(Replaceability)


Pivotal 官网对云原生概括为4个要点:

DevOps

持续交付

微服务

容器化


3.CNCF的定义


CNCF是谁?

CNCF是在2015年由Google联合Linux基金会成立的,它是一个非盈利组织,主要宗旨是统一云计算接口和相关标准,通过技术优势和用户价值创造一套新的通用容器技术,推动云计算和服务的发展。


CNCF起初的定义:

起初CNCF对云原生(Cloud Native)的定义包含以下三个方面:

应用容器化

面向微服务架构

应用支持容器的编排调度


2018年明确了云原生定义1.0版本:

到了2018年,随着云原生生态的不断壮大,所有主流云计算供应商都加入了该基金会,且从云原生的全景图中可以看出云原生正在蚕食原先非云原生应用的部分。


CNCF基金会中的会员以及容纳的项目越来越多,该定义已经限制了云原生生态的发展,CNCF为云原生进行了重新定位,并于2018年6月11日明确了云原生定义1.0版本:

云原生技术有利于各组织在公有云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用。


云原生的代表技术包括容器、服务网格、微服务、不可变基础设施和声明式API。

这些技术能够构建容错性好、易于管理和便于观察的松耦合系统。结合可靠的自动化手段,云原生技术使工程师能够轻松地对系统作出频繁和可预测的重大变更。


三、云原生相关技术



依据CNCF发布的云原生1.0版本的定义,云原生技术主要包括容器、微服务、服务网格、不可变基础设施以及声明式API,下面就这几类技术做个概述:


1.容器技术


容器技术和云原生好比一对螺旋体,容器技术催生了云原生思潮,云原生生态推动了容器技术发展。从2013年Docker技术诞生,到2015年CNCF这个云原生领域重量级联盟成立,这不是历史的巧合而是历史的必然。作为云原生关键技术之一的容器,从2013年诞生以来一直是行业关注的焦点之一。


2013年之前,云计算行业一直在为云原生的正确打开姿势而操心。Platform as a Service(PaaS)看起来是个有前途的方向。2006年Fotango公司发布的Zimi服务,可以说是PaaS行业的鼻祖,具有按使用付费、免运维(Serverless)、API化配置和服务等典型云原生的特征;2008年Google推出Google App Engine(GAE);2011年Pivotal发布Cloud Foundry。


这些早期的PaaS平台在云原生领域进行了非常有益的探索,推动了云原生生态的健康发展,但是这些早期探索技术并没有形成大的行业趋势,而是局限在一些的特定的领域。直到Docker开源,大家才如梦方醒,原来不是方向不对,而是应用分发和交付的手段不行。


Docker真正核心的创新是容器镜像(docker image),一种新型的应用打包、分发和运行机制。容器镜像将应用运行环境,包括代码、依赖库、工具、资源文件和元信息等,打包成一种操作系统发行版无关的不可变更软件包。


容器镜像打包了整个容器运行依赖的环境,以避免依赖运行容器的服务器的操作系统,从而实现“build once, run anywhere”。容器镜像一旦构建完成,就变成read only,成为不可变基础设施的一份子。


2.微服务


微服务架构是相对于单体架构来说的,两者分属不同的架构风格。在微服务架构中,服务是一个单一的、可独立部署的软件组件,它实现了一些有用的功能,服务的API 封装了其内部实现,与单体架构不同,开发人员无法绕过服务的API直接访问服务内部的方法和数据,因此,微服务架构强制实现了应用程序的模块化。


微服务架构的最核心特性是服务之间的松耦合性。服务之间的交互采用API完成,这样做就封装了服务的实现细节,从而实现了在不影响客户端的情况下,对实现方式做出修改。


微服务架构通过将大的系统按照业务服务的粒度进行拆分,每个服务可独立开发、测试、验证和部署,这样分解后,带来的好处有如下几点:

使大型的复杂应用程序可以持续交付和持续部署

每个服务都相对较小并容易维护

服务可以独立部署

服务可以独立扩展

微服务架构可以实现团队的自治

更容易实验和采纳新的技术

更好的容错性


3.服务网格


服务网格是用于处理服务间通信的专用基础设施层,负责在微服务间进行可靠地请求传递。服务网格通常通过一组轻量级网络代理来实现,这些代理与应用程序代码一起部署,而不需要感知应用程序本身。


随着规模和复杂性的增长,服务网格包含的实现的功能越来越多,它的需求包括服务发现、负载均衡、故障恢复、指标收集和监控以及通常更加复杂的运维需求,例如 A/B 测试、金丝雀发布、限流、访问控制和端到端认证等。其部署结构如下图所示:

image.png


服务网格有如下几个特点:

应用程序间通讯的中间层

轻量级网络代理

应用程序无感知

解耦应用程序的重试/超时、监控、追踪和服务发现


如果用一句话来解释什么是服务网格,可以将它比作是应用程序或者说微服务间的 TCP/IP,负责服务之间的网络访问、限流、熔断和监控。对于编写应用程序来说一般无须关心 TCP/IP 这一层(比如通过 HTTP 协议的 RESTful 应用),同样使用服务网格也就无须关系服务之间的那些原来是通过应用程序或者其他框架实现的事情,比如 Spring Cloud、OSS,现在只要交给服务网格就可以了,从而极大地方便了微服务应用的开发。


4.不可变基础设施


一个工作负载(比如容器、虚拟机等)一旦部署以后就不会被修改。当需要更新,修复或修改某些内容的时候,只需要将新的、经过验证的工作负载替换旧的即可。


不可变基础设施的作用主要体现在系统的稳定性方面。传统的应用程序一旦部署到用户特定的服务器上以后,服务器系统是会不断变化的,不是操作系统升级,就是安装了新的应用,可能引起冲突,导致应用程序需要跟着用户系统环境的改变而不断升级,这中间就会不断地出现新的问题。而不可变基础设施就规避了所有的这些问题,因为云原生应用是部署在不可变的基础设施上的,因此就不存在变化的问题。


5.声明式API


声明式API 是一种比命令式API更高级的接口设计方式,简单来说,命令式API提供给用户怎么做的能力,而声明式API 给用户提供了做什么的能力。


声明式API是比命令式API更高级的一种接口,举个例子,假如我们有一个炒菜机,如果炒菜机提供的接口是放油、放调料、放食材、大火、小火等操作,那就是命令式API。

如果炒菜机提供的接口是来盘宫保鸡丁、来盘鱼香肉丝之类的,那就是声明式API了。声明式API比较典型的例子就是数据库提供的SQL接口,只需要告诉数据库你需要什么数据即可,至于怎么去获取这些数据,数据库自己会去按步骤操作。

相关实践学习
通过容器镜像仓库与容器服务快速部署spring-hello应用
本教程主要讲述如何将本地Java代码程序上传并在云端以容器化的构建、传输和运行。
Kubernetes极速入门
Kubernetes(K8S)是Google在2014年发布的一个开源项目,用于自动化容器化应用程序的部署、扩展和管理。Kubernetes通常结合docker容器工作,并且整合多个运行着docker容器的主机集群。 本课程从Kubernetes的简介、功能、架构,集群的概念、工具及部署等各个方面进行了详细的讲解及展示,通过对本课程的学习,可以对Kubernetes有一个较为全面的认识,并初步掌握Kubernetes相关的安装部署及使用技巧。本课程由黑马程序员提供。   相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
15天前
|
运维 Cloud Native 安全
云原生技术在现代企业中的应用与挑战####
本文探讨了云原生技术在现代企业IT架构中的关键作用,分析了其带来的优势和面临的主要挑战。通过实际案例分析,揭示了如何有效应对这些挑战,以实现业务敏捷性和技术创新的平衡。 ####
|
12天前
|
Kubernetes Cloud Native 微服务
探索云原生技术:容器化与微服务架构的融合之旅
本文将带领读者深入了解云原生技术的核心概念,特别是容器化和微服务架构如何相辅相成,共同构建现代软件系统。我们将通过实际代码示例,探讨如何在云平台上部署和管理微服务,以及如何使用容器编排工具来自动化这一过程。文章旨在为开发者和技术决策者提供实用的指导,帮助他们在云原生时代中更好地设计、部署和维护应用。
|
12天前
|
Cloud Native 持续交付 开发者
云原生技术在现代企业中的应用与实践####
本文深入探讨了云原生技术的核心概念及其在现代企业IT架构转型中的关键作用,通过具体案例分析展示了云原生如何促进企业的敏捷开发、高效运维及成本优化。不同于传统摘要仅概述内容,本部分旨在激发读者对云原生领域的兴趣,强调其在加速数字化转型过程中的不可或缺性,为后续详细论述奠定基础。 ####
|
17天前
|
Kubernetes Cloud Native 物联网
云原生技术在现代软件开发中的应用与挑战####
本文探讨了云原生技术的兴起背景、核心理念及其在现代软件开发中的广泛应用。通过具体案例分析,揭示了云原生架构如何促进企业数字化转型,并指出了在实施过程中面临的主要挑战及应对策略。 ####
|
1天前
|
Cloud Native
邀您参加云原生高可用技术沙龙丨云上高可用体系构建:从理论到实践
云原生高可用技术专场,邀您从理论到实践一起交流,探索云上高可用体系构建!
|
12天前
|
Cloud Native JavaScript Docker
云原生技术:构建现代应用的基石
在数字化转型的浪潮中,云原生技术如同一艘承载梦想的航船,引领企业驶向创新与效率的新海域。本文将深入探索云原生技术的核心价值,揭示其如何重塑软件开发、部署和运维模式,同时通过一个简易代码示例,展现云原生应用的构建过程,让读者领略到云原生技术的魅力所在。
|
12天前
|
运维 Cloud Native 持续交付
云原生技术深度探索:重塑现代IT架构的无形之力####
本文深入剖析了云原生技术的核心概念、关键技术组件及其对现代IT架构变革的深远影响。通过实例解析,揭示云原生如何促进企业实现敏捷开发、弹性伸缩与成本优化,为数字化转型提供强有力的技术支撑。不同于传统综述,本摘要直接聚焦于云原生技术的价值本质,旨在为读者构建一个宏观且具体的技术蓝图。 ####
|
14天前
|
运维 Cloud Native 开发者
云原生技术入门与实践
在云计算的浪潮中,云原生技术以其独特的优势和魅力吸引了越来越多的开发者和企业。本文将从云原生技术的基本概念、核心组件以及实际应用三个方面进行详细介绍,帮助读者更好地理解和掌握这一新兴技术。同时,文章还将分享一些实际案例和经验教训,让读者能够更深入地了解云原生技术的应用场景和发展趋势。
33 5
|
13天前
|
Cloud Native 持续交付 云计算
云原生技术的崛起与未来展望
本文探讨了云原生技术的核心概念、发展历程及其在现代IT架构中的关键作用。随着云计算的普及,云原生作为一种优化云应用构建和部署的方法,正逐渐成为企业数字化转型的重要推力。文章分析了容器化、微服务、持续集成/持续部署(CI/CD)等关键技术如何支撑起灵活、高效、可扩展的云原生架构,并讨论了面临的挑战与未来的发展趋势。
28 2
|
13天前
|
Kubernetes Cloud Native 持续交付
云端之旅:云原生技术引领未来
在数字时代的浪潮中,云原生技术如同一艘承载梦想的航船,带领企业驶向数字化转型的彼岸。本文将揭示云原生技术的核心价值,探讨其在现代IT架构中的应用,并分享实现云原生转型的实践案例。从容器化和微服务到持续集成与持续部署(CI/CD),我们将一同见证云原生技术如何塑造灵活、高效、自动化的未来。