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

本文涉及的产品
容器镜像服务 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接口,只需要告诉数据库你需要什么数据即可,至于怎么去获取这些数据,数据库自己会去按步骤操作。

相关实践学习
通过workbench远程登录ECS,快速搭建Docker环境
本教程指导用户体验通过workbench远程登录ECS,完成搭建Docker环境的快速搭建,并使用Docker部署一个Nginx服务。
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
19小时前
|
运维 Cloud Native 持续交付
构建未来:云原生技术在企业数字化转型中的关键作用
【5月更文挑战第12天】 随着企业加速其数字化转型的步伐,云原生技术已站在风口浪尖,成为支撑现代应用架构的骨干力量。本文深入探讨了云原生技术的核心概念、发展历程以及如何在不断变化的技术环境中满足企业的动态需求。我们将分析微服务、容器化、持续集成和持续部署(CI/CD)以及DevOps文化如何共同塑造了一个敏捷、可扩展且高效的系统环境。通过实际案例和最新趋势的讨论,文章旨在揭示云原生技术如何使企业能够快速响应市场变化,提高运营效率,并最终实现业务目标。
6 2
|
3天前
|
Cloud Native Devops 持续交付
构建未来:云原生技术在企业数字化转型中的关键作用
【5月更文挑战第9天】 随着企业加速其数字化转型的步伐,云原生技术已经成为推动创新和灵活性的核心力量。本文将探讨云原生架构的基本原理、它如何促进微服务和容器化策略的实施,以及它如何帮助企业实现敏捷性和可扩展性。通过对最新行业趋势的分析与实际案例研究,文章揭示了云原生技术如何助力企业优化资源配置,提高运营效率,并最终在竞争激烈的市场中保持领先地位。
|
6天前
|
边缘计算 运维 Cloud Native
探索云原生技术的未来发展趋势
随着数字化时代的不断深入,云原生技术已成为企业数字化转型的重要支撑。本文将探讨云原生技术的定义、特点以及未来发展趋势,重点关注容器化、微服务、自动化运维等方面,展望云原生技术在未来的发展方向与挑战。
22 1
|
7天前
|
Cloud Native 安全 Devops
构建未来:云原生技术在企业数字化转型中的关键角色
【5月更文挑战第5天】 随着企业加速其数字化进程,云原生技术已成为推动创新和灵活性的重要力量。本文探讨了云原生技术的核心组件、实施策略以及它们如何帮助企业实现敏捷开发和持续交付。通过深入分析容器化、微服务架构、DevOps实践和自动化工具的融合,揭示了这些技术如何共同作用,支持企业在竞争激烈的市场中快速适应变化。同时,文章还将讨论云原生安全挑战及应对措施,为读者提供一个全面的云原生技术应用视角。
40 14
|
7天前
|
Cloud Native 持续交付 云计算
构建未来:云原生技术在企业数字化转型中的关键作用
【5月更文挑战第5天】 随着企业不断探索在竞争激烈的市场中保持敏捷和创新的方法,云计算已经成为了推动数字化转型的重要动力。特别是云原生技术,作为构建和运行应用程序的一种新范式,正在改变企业开发、部署及管理软件的方式。本文将深入探讨云原生架构的核心组件、它如何促进企业的敏捷性,以及在采用云原生技术时面临的挑战和解决策略。通过分析案例研究和行业趋势,我们将揭示云原生技术在未来企业数字化道路上扮演的角色,并为希望利用这些技术的决策者提供实用的见解。
|
8天前
|
Cloud Native Devops 持续交付
构建未来:云原生技术在企业数字化转型中的关键作用
【5月更文挑战第4天】 随着企业加速其数字化进程,云原生技术已不仅仅是一种趋势,而是成为了推动创新和业务敏捷性的核心力量。本文将探讨云原生架构如何为企业提供弹性、可扩展及自动化的基础设施,以及它如何支持企业在竞争激烈的市场中快速响应变化。通过深入分析云原生技术的组成部分,包括容器化、微服务、持续集成/持续部署(CI/CD)和DevOps文化,我们揭示了这些技术如何共同塑造一个灵活且高效的企业IT环境。
19 0
|
8天前
|
Cloud Native Devops 持续交付
构筑未来:云原生技术在企业数字化转型中的关键作用
【5月更文挑战第4天】 随着企业加速迈向数字化时代,云原生技术已不仅仅是一种趋势,而是转型成功的必要条件。本文将深入探讨云原生架构的核心组件,包括容器化、微服务、持续集成/持续部署(CI/CD)和DevOps实践,并分析它们如何共同促进企业的敏捷性、可扩展性和创新能力。通过具体案例,我们还将揭示这些技术如何帮助企业实现资源优化、风险降低和更快的市场响应时间。
25 7
|
11天前
|
运维 Cloud Native 持续交付
构建未来:云原生技术在企业数字化转型中的应用
【5月更文挑战第1天】 随着企业加速其数字化转型的步伐,云原生技术作为推动创新和灵活性的关键力量,正变得日益重要。本文深入探讨了云原生技术如何为企业提供高度可扩展、灵活且安全的解决方案,以及它如何支持企业在不断变化的市场环境中保持竞争力。通过对容器化、微服务架构、持续集成/持续部署(CI/CD)等核心技术的剖析,揭示了它们如何共同塑造一个更加敏捷和响应迅速的开发环境。文章还讨论了企业在采纳云原生技术过程中面临的挑战,并提出了一系列策略建议,以帮助企业顺利过渡到云原生模式。
|
11天前
|
Cloud Native Devops 持续交付
构建未来:云原生技术在企业数字化转型中的关键作用
【5月更文挑战第1天】 随着企业加速其数字化转型的步伐,云原生技术已经成为推动创新和灵活性的核心动力。本文探讨了云原生架构如何为企业提供敏捷性、可扩展性和成本效益,同时确保了高度的系统稳定性。我们将深入分析云原生的关键技术组件,包括容器化、微服务、持续集成/持续部署(CI/CD)以及DevOps实践,并展示它们如何共同作用于企业的IT基础架构,促进业务增长和响应市场变化的能力。
|
12天前
|
设计模式 Cloud Native 算法
拥抱变化:我的技术适应之旅构建未来:云原生架构在企业数字化转型中的关键角色
【4月更文挑战第30天】 在技术的浪潮中,我学会了不仅仅是编码,还有如何与时俱进。本文记录了我从一名初出茅庐的开发者成长为一个能够适应不断变化技术环境的工程师的心路历程。从最初的困惑与挑战到后来的接纳与创新,我意识到,技术能力的提升和心态的转变同样重要。

热门文章

最新文章