精华内容
下载资源
问答
  • 什么是云原生

    千次阅读 2020-03-06 13:16:33
    2015年7月21日Google主导成立了云原生计算基金会,其最初的口号坚持和整合开源技术来让编排容器作为微服务架构的一部分,致力于云原生应用推广和普及。 CNCF作为一个厂商中立的基金会,致力于Github上的快速成长的...

    云计算技术发展

    在这里插入图片描述

    云原生的定义

    CNCF

    全称Cloud Native Computing Foundation(云原生计算基金会

    2015年7月21日Google主导成立了云原生计算基金会,其最初的口号是坚持和整合开源技术来让编排容器作为微服务架构的一部分,致力于云原生应用推广和普及。

    CNCF作为一个厂商中立的基金会,致力于Github上的快速成长的开源技术的推广,如Kubernetes、Prometheus、Envoy等,帮助开发人员更快更好的构建出色的产品。

    CNCF对云原生的定义

    云原生技术有利于各组织在公有云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用。云原生的代表技术包括容器、服务网格、微服务、不可变基础设施和声明式API。

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

    云原生计算基金会(CNCF)致力于培育和维护一个厂商中立的开源生态系统,来推广云原生技术。我们通过将最前沿的模式民主化,让这些创新为大众所用。

    云原生应用的三大特征

    • 容器化包装:软件应用的进程应该包装在容器中独立运行。
    • 动态管理:通过集中式的编排调度系统来动态的管理和调度。
    • 微服务化:明确服务间的依赖,互相解耦。

    云原生概念思维导图

    在这里插入图片描述

    云原生的设计理念

    1. 面向分布式设计(Distribution):容器、微服务、API 驱动的开发。
    2. 面向配置设计(Configuration):一个镜像,多个环境配置。
    3. 面向韧性设计(Resistancy):故障容忍和自愈。
    4. 面向弹性设计(Elasticity):弹性扩展和对环境变化(负载)做出响应。
    5. 面向交付设计(Delivery):自动拉起,缩短交付时间。
    6. 面向性能设计(Performance):响应式,并发和资源高效利用。
    7. 面向自动化设计(Automation):自动化的 DevOps。
    8. 面向诊断性设计(Diagnosability):集群级别的日志、metric 和追踪。
    9. 面向安全性设计(Security):安全端点、API Gateway、端到端加密。
      以上的设计理念很多都是继承自分布式应用的设计理念。

    云原生生态体系

    在这里插入图片描述

    容器化

    由于KVM( for Kernel-based Virtual Machine )hypervisor虚拟化技术仍然存在⼀些性能和资源使⽤效率⽅⾯的问题,因此出现了⼀种称为容器技术(Container)的新型虚拟化技术来帮助解决这些问题。

    虚拟化技术可以在宿主机上安装多个不同的操作系统,运⾏多套不同的应⽤。但可能就是为了运⾏⼀个微应用,却还要在虚拟机⾥运⾏⼀个完整的操作系统,内核和其它⽆关程序,这种做法资源利⽤不⾼。

    所以我们希望更多的关注应⽤程序本身,⽽不再分精⼒去关注操作系统与⽆关程序,操作系统内核直接与宿主机共享。

    Docker 容器

    Docker容器本质上是宿主机的进程. 可以把docker容器内部跑的进程看作是宿主机的线程。
    Docker通过namespace实现了资源隔离,通过cgroups实现了资源限制。

    Linux内核实现namespace的⼀个主要⽬的就是实现轻量级虚拟化(容器)服务。在同⼀个namespace下
    的进程可以感知彼此的变化,⽽对外界的进程⼀⽆所知。

    Linux容器技术是⼀种轻量级的虚拟化技术。主要特点有:

    1. 轻量:只打包了需要的bins/libs(也就是命令和库⽂件)。与宿主机共享操作系统,直接使⽤宿主机的内核。
    2. 部署快: 容器的镜像相对虚拟机的镜像⼩。部署速度⾮常快,秒级部署。
    3. 移植性好: Build once,Run anywhere (⼀次构建,随处部署运⾏)。
    4. 资源利⽤率更⾼: 相对于虚拟机,不需要安装操作系统,所以⼏乎没有额外的CPU,内存消耗。

    虚拟化与容器化对比

    虚拟化(VM)Docker容器操作系统宿主机OS上运行虚拟机OS与宿主机共享OS存储大小镜像庞大(vmdk、vdi等)镜像小,便于存储于传输运行性能操作系统额外的CPU、内存开销几乎无额外的性能损失移植性笨重,与虚拟化耦合度高轻便、灵活、适应于linux硬件亲和性面向硬件开发者面向软件开发者部署速度较慢、10秒级别快速、秒级

    容器的编排与调度

    Kubernetes(k8s)是Google基于Borg开源的容器编排调度引擎,作为CNCF(Cloud Native Computing Foundation)最重要的组件之一,它的目标不仅仅是一个编排系统,而是提供一个规范,可以让你来描述集群的架构,定义服务的最终状态,Kubernetes可以帮你将系统自动得达到和维持在这个状态。

    Kubernetes用户可以通过编写一个yaml或者json格式的配置文件,也可以通过工具/代码生成或直接请求Kubernetes API创建应用,该配置文件中包含了用户想要应用程序保持的状态,不论整个Kubernetes集群中的个别主机发生什么问题,都不会影响应用程序的状态,你还可以通过改变该配置文件或请求Kubernetes API来改变应用程序的状态。

    Kubernetes 架构图:
    在这里插入图片描述
    其他容器编排与调度技术方案:
    Swarm、Mesos

    微服务

    微服务是一种分布式架构设计理念,为了推动细粒度服务的使用,这些服务要能协同工作,每个服务都有自己的生命周期。一个微服务就是一个独立的实体,可以独立的部署在PAAS平台上,也可以作为一个独立的进程在主机中运行。服务之间通过API访问,修改一个服务不会影响其它服务。

    微服务带给我们很多开发和部署上的灵活性和技术多样性,但是也增加了服务调用的开销、分布式系统管理、调试与服务治理方面的难题。

    Spring框架

    当前最成熟最完整的微服务框架Spring,而Spring又仅限于Java语言开发,其架构本身又跟Kubernetes存在很多重合的部分,如何探索将Kubernetes作为微服务架构平台就成为一个热点话题。就拿微服务中最基础的服务注册发现功能来说,其方式分为客户端服务发现和服务端服务发现两种,Java应用中常用的方式是使用Eureka和Ribbon做服务注册发现和负载均衡,这属于客户端服务发现,而在Kubernetes中则可以使用DNS、Service和Ingress来实现,不需要修改应用代码,直接从网络层面来实现。

    服务网格

    Kubernetes中的应用将作为微服务运行,但是Kubernetes本身并没有给出微服务治理的解决方案,比如服务的限流、熔断、良好的灰度发布支持等。

    Service Mesh可以用来做什么

    • Traffic Management:API网关
    • Observability:服务调用和性能分析
    • Policy Enforcment:控制服务访问策略
    • Service Identity and Security:安全保护

    Service Mesh的特点

    • 专用的基础设施层
    • 轻量级高性能网络代理
    • 提供安全的、快速的、可靠地服务间通讯
    • 扩展kubernetes的应用负载均衡机制,实现灰度发布
    • 完全解耦于应用,应用可以无感知,加速应用的微服务和云原生转型

    当前开源的Service Mesh有哪些?
    使用Service Mesh将可以有效的治理Kubernetes中运行的服务:

    • Linkderd:https://linkerd.io,由最早提出Service Mesh的公司Buoyant开源,创始人来自Twitter
    • Envoy:https://www.envoyproxy.io/,Lyft开源的,可以在Istio中使用Sidecar模式运行
    • Istio:https://istio.io,由Google、IBM、Lyft联合开发并开源
    • Conduit:https://conduit.io,同样由Buoyant开源的轻量级的基于Kubernetes的Service Mesh
      此外还有很多其它的Service Mesh鱼贯而出,请参考awesome-cloud-native。

    DEVOPS

    持续集成

    Continuous integration,简称CI
    是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽快地发现集成错误。
    在这里插入图片描述持续集成的目的不是减少build失败的次数,⽽是尽早发现问题,在最短的时间内解决问题,减少风险和浪费。从而让产品开发流程更加敏捷,缩短产品开发周期,在产品上线后,让用户用得更加顺畅。

    在没有应用持续集成之前,传统的开发模式是项目一开始就划分模块,每个开发人员分别负责一个模块,等所有的代码都开发完成之后再集成到一起提交给测试⼈人员,随着软件技术团队的发展,软件已经不能简单地通过划分模块的方式来开发,需要项目内部相互协作,划分模块这种传统的模式的弊端也越来越明显。由于很多bug在项目早期的设计、编码阶段就引入,到最后集成测试时才发现问题,开发人员需要花费⼤量的时间来定位bug,加上软件的复杂性,bug的定位就更难了,甚⾄出现不得不调整底层架构的情况。这种情况的发生不仅对测试进度造成影响,⽽且会拖长整个项⽬周期。

    而持续集成可以有效解决软件开发过程中的许多问题,在集成测试阶段之前就帮助开发人员发现问题,从而可以有效的确保软件质量,减小项目的风险,使软件开发团队从容的面对各种变化。持续集成报告中可以体现目前项目进度,哪部分需要已经实现,哪些代码已经通过自动化测试,代码质量如何,让开发团队和项目组了解项目的真实状况。

    持续交付

    Continuous Delivery,简称CD
    持续交付是指软件开发过程,从原始需求到最终产品开发过程中,较短周期内以需求的小颗粒度(小批量)频繁提交的过程。
    在这里插入图片描述
    目的

    1. 开发过程的快速迭代,小步快跑,及时纠正偏离主线
    2. 小颗粒度实现,避免颗粒度大,出现问题解决麻烦
    3. 迅速反馈软件功能,避免⽅向性错误
    4. 团队角色(含客户)协作密切,减少时间浪费

    持续部署

    Continuous Deployment,简称CD
    基于持续交付的基础上,把功能稳定,符合产品需求的版本有方法地部署至生产环境中。

    持续发布

    Continuous Release,简称CR
    发布是周期性或不定期地对项目在部署后,进行整体软件版本的更新,例如,更新功能或展示页面框架等。

    目的

    1. 产品快速迭代,小步快跑
    2. 适应市场变化
    3. 匹配市场策略
    4. 应对市场风险

    持续测试

    Continuous Testing,简称CT
    持续测试是贯穿着整个软件开发过程,验证程序员提交代码,检验合规性及降低bug,减少最终错误,实现敏捷及精益开发。

    目的

    1. 为了降低开发、部署、发布等可能出现的错误
    2. 防止代码出错
    3. 防止功能出错
    4. 防止业务逻辑出错等

    Jenkins

    Jenkins是一款由Java编写的开源的持续集成工具。

    Jenkins提供了软件开发的持续集成服务。它运行在Servlet容器中。它支持软件配置管理(SCM)工具(包括AccuRev SCM、CVS、Subversion、Git、Perforce、Clearcase和RTC),可以执行基于Apache Ant和Apache Maven的项目,以及任意的Shell脚本和Windows批处理命令。

    使用Jenkins进行持续集成与发布流程图:
    在这里插入图片描述
    应用构建和发布流程说明:

    1. 用户向Gitlab提交代码,代码中必须包含Dockerfile。
    2. 将代码提交到远程仓库。
    3. 用户在发布应用时需要填写git仓库地址和分支、服务类型、服务名称、资源数量、实例个数,确定后触发Jenkins自动构建。
    4. Jenkins的CI流水线自动编译代码并打包成Docker镜像推送到Harbor镜像仓库。
    5. Jenkins的CI流水线中包括了自定义脚本,根据我们已准备好的Kubernetes的YAML模板,将其中的变量替换成用户输入的选项。
    6. 生成应用的Kubernetes YAML配置文件。
    7. 更新Ingress的配置,根据新部署的应用的名称,在Ingress的配置文件中增加一条路由信息。
    8. 更新PowerDNS,向其中插入一条DNS记录,IP地址是边缘节点的IP地址。
    9. Jenkins调用Kubernetes的API,部署应用。
    展开全文
  • 什么是云原生?聊聊云原生的今生

    万次阅读 2020-03-02 10:46:49
    简介:什么是云原生,云原生是在一个怎么样的背景下被提出来的,云原生和传统所说的云计算概念有什么不同?聊聊云原生的今生之事。 云原生这词在这几年突然火了,在很多人还不了解她是什么的时候频频被她刷屏。...

    简介: 什么是云原生,云原生是在一个怎么样的背景下被提出来的,云原生和传统所说的云计算概念有什么不同?聊聊云原生的今生之事。

    云原生这词在这几年突然火了,在很多人还不了解她是什么的时候频频被她刷屏。所以我经常说技术人是一个容易焦虑的群体,每天被一堆新的概念拉着走,扯着学。新语言多,新概念多,新技术多,没什么安全感。对于新概念,我喜欢从三个层次去理解,一个是这技术名词被提出的历史背景,一个是技术名词概念的演化,一个是结合比较主流的话语体系的解读。关于云原生,我也会从这三个方面来解读。

    云原生(Cloud Native)的由来

    云原生的概念最早开始于2010年,在当时 Paul Fremantle 的一篇博客中被提及,他主要将其描述为一种和云一样的系统行为的应用的编写,比如分布式的、松散的、自服务的、持续部署与测试的。当时提出云原生是为了能构建一种符合云计算特性的标准来指导云计算应用的编写。

    后来到2013年 Matt Stine在推特上迅速推广云原生概念,并在2015年《迁移到云原生架构》一书中定义了符合云原生架构的特征:12因素、微服务、自服务、基于API协作、扛脆弱性。而由于这本书的推广畅销,这也成了很多人对云原生的早期印象,同时这时云原生也被12要素变成了一个抽象的概念。

    CNCF基金会成立及云原生概念的演化

    2015年由Linux基金会发起了一个 The Cloud Native Computing Foundation(CNCF) 基金组织,CNCF基金会的成立标志着云原生正式进入高速发展轨道,google、Cisco、Docker各大厂纷纷加入,并逐步构建出围绕 Cloud Native 的具体工具,而云原生这个的概念也逐渐变得更具体化。因此,CNCF基金最初对云原生定义是也是深窄的,当时把云原生定位为容器化封装+自动化管理+面向微服务:

    The CNCF defines “cloud-native” a little more narrowly, to mean using open source software stack to be containerized, where each part of the app is packaged in its own container, dynamically orchestrated so each part is actively scheduled and managed to optimize resource utilization, and microservices-oriented to increase the overall agility and maintainability of applications.

    这主要因为CNCF基金会在当时的核心拳头软件就是 k8s,因此在概念定义上主要是围绕着容器编排建立起来的生态。其实这也是为什么我们可以看到 CNCF 定义云原生的时候有时感觉就是再说容器生态。

    到了2017年, 云原生应用的提出者之一的Pivotal在其官网上将云原生的定义概况为DevOps、持续交付、微服务、容器这四大特征,这也成了很多人对 Cloud Native的基础印象。

    Cloud-native foundational pillars

    而到了2018年,随着Service Mesh的加入,CNCF对云原生的定义发生了改变,而这也逐渐作为被大家认可的官方定义:

    Cloud native technologies empower organizations to build and run scalable applications in modern, dynamic environments such as public, private, and hybrid clouds. Containers, service meshes, microservices, immutable infrastructure, and declarative APIs exemplify this approach.
    These techniques enable loosely coupled systems that are resilient, manageable, and observable. Combined with robust automation, they allow engineers to make high-impact changes frequently and predictably with minimal toil.
    The Cloud Native Computing Foundation seeks to drive adoption of this paradigm by fostering and sustaining an ecosystem of open source, vendor-neutral projects. We democratize state-of-the-art patterns to make these innovations accessible for everyone.

    总结一下就是:

    • (1)基于容器、服务网格、微服务、不可变基础设施和声明式API构建的可弹性扩展的应用;
    • (2)基于自动化技术构建具备高容错性、易管理和便于观察的松耦合系统;
    • (3)构建一个统一的开源云技术生态,能和云厂商提供的服务解耦,

    可以看出这一阶段CNCF对云原生的定义加上服务网格声明式API,同时为这一概念阐述更深一层的意义,也就是建立一个统一中立的开源云生态(至于是否中立嘛这里就不谈了:)。这对云原生的生态定位会是很重要的一点,也算CNCF最初成立的宗旨之一吧,打破云巨头的垄断。

    landscape.png

    对云原生的解构

    对一个词的解读,除了看其历史发展背景,还有一种偏向于语言学的方法解读,也就是我们常说的从“字面意思”来理解为何这些理念的集合体。

    Cloud Native,从词面上拆解其实就是 Cloud 和 Native,也就是云计算土著的意思——云计算上的原生居民,即天生具备云计算的亲和力。

    那怎么理解“云的原生居民”呢?

    首先从云的角度来理解,云本质可以看作是一种提供稳定计算存储资源的对象,为了实现这点,像虚拟化、弹性扩展、高可用、高容错性、自恢复这些都是云的基本属性,云原生作为一种云计算,这是所具备的第一层含义。

    第二层要从 Native 来看,云原生和传统的在云上跑的应用是不同。比如一些基于公有云搭建的应用,是基于传统的SOA架构来搭建的,然后再移植到云上去运行,那么他和云得整合是非常低得。
    为什么低呢?云作为一种分布式架构,其“土著居民”也应该是基于分布式架构设计出来得,而微服务或者Serverless这种将服务或函数拆分成一个个模块的松耦合系统天然就具备分布式设计得属性。这是Native的第一种表现。

    Monolithic deployment versus microservices

    其次云作为一种PaaS服务,这位“土著居民”从出生(设计)到成长(开发),再到生活(部署)都应该是基于云的理念来实现的,那么就需要一套自动化的开发流程CI/CD来实现。这是Native的第二种表现。
    Deployment steps in a CI/CD Pipeline

    而最后“土著居民”的特点希望做到能在所有的云端都是适应的,不管是各厂商的公有云 像AWS、Azure、阿里云,还是各企业自己搭建的私有云,云原生的应用都能做到无缝的运行和连接。

    参考文献

    展开全文
  • 云原生很多人都会问“到底什么是云原生?”、“云原生和传统软件有什么区别?”。背景顾名思义,云原生应用即专门为在云平台部署和运行而设计的应用。云原生能够以可扩展、可复制的方式最大化地利用云的能力,发挥云...

    云原生

    很多人都会问“到底什么是云原生?”、“云原生和传统软件有什么区别?”。

    背景

    顾名思义,云原生应用即专门为在云平台部署和运行而设计的应用。云原生能够以可扩展、可复制的方式最大化地利用云的能力,发挥云的价值的最佳路径。

    也可以说,云原生是一种设计思想,以这种思想为指导设计出来的软件。首先,天然的就“生在云上,长在云上”;其次,能够最大地发挥云的能力,发挥出云的最大价值。

    云原生是为“云”量身定做的。我们先来了解一下云的发展历程。

    云的发展规模

    2019年度主流的云厂商公布营收情况:

    亚马逊-AWS: 350.26亿美元

    微软-Azure:133.7亿美元

    谷歌云:89.18亿美元

    阿里云: 355.25亿元 (约50.75亿美元)

    腾讯云:170亿元

    云计算的特征

    我们先来了解一下“云”的概念。云一般指的是一个提供资源的平台,云计算的本质是按需分配资源和弹性计算。

    目前的困扰

    传统的软件开发模式,让我们用云计算平台和物理机一样的使用,那么就没有将云平台的能力利用充分!这也是在浪费资源。我们的云原生就是来解决这一类的问题,将我们的应用发挥到极致。

    必须让应用能够利用云平台实现资源的按需分配和弹性伸缩,是云原生应用被重点关注的地方。它要求云原生应用具备可用性和伸缩性,以及自动化部署和管理能力,可随处运行,并且能够通过持续集成、持续交付提升研发、测试与发布的效率。

    云原生应用并未完全颠覆传统的应用,采用云原生的设计模式可以优化和改进传统应用模式,使应用更加适合在云平台上运行。

    云原生存在的意义是解放开发和运维,而不是让开发和运维的工作变得更加复杂和繁重。

    云原生还关注规模,分布式系统应该具备将节点水平扩展到成千上万个的能力,并且这些节点具备多租户和自愈能力。云原生使得应用本身具备“柔性”,即面对强大压力的缓解能力以及压力过后的恢复能力。真正的强者懂得“刚而易折,柔者长存”,我们的云原生也是运用了柔性的哲理。

    云原生的组织

    云原生最初是由Pivotal公司于2013提出的,如果大家对于Pivotal公司有点陌生化,当是不会对它旗下的Spring ,Spring Boot 、Spring Cloud陌生吧。 随后 Google 在2015年成立了CNCF(云原生基金会),使得云原生受到越来越多的关注。

    2018年CNCF对云原生定义

    云原生技术有利于各组织在公有云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用。云原生的代表技术包括容器、服务网格、微服务、不可变基础设施和声明式API。

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

    展开全文
  • 什么是云原生?聊聊云原生的今生 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/alitech2017/article/details/104606956 云原生...

     

    什么是云原生?聊聊云原生的今生

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

    本文链接:https://blog.csdn.net/alitech2017/article/details/104606956

    1. 云原生(Cloud Native)的由来
    2. CNCF基金会成立及云原生概念的演化
    3. 对云原生的解构
    4. 参考文献

    收起

    简介: 什么是云原生,云原生是在一个怎么样的背景下被提出来的,云原生和传统所说的云计算概念有什么不同?聊聊云原生的今生之事。

    云原生这词在这几年突然火了,在很多人还不了解她是什么的时候频频被她刷屏。所以我经常说技术人是一个容易焦虑的群体,每天被一堆新的概念拉着走,扯着学。新语言多,新概念多,新技术多,没什么安全感。对于新概念,我喜欢从三个层次去理解,一个是这技术名词被提出的历史背景,一个是技术名词概念的演化,一个是结合比较主流的话语体系的解读。关于云原生,我也会从这三个方面来解读。

    云原生(Cloud Native)的由来

    云原生的概念最早开始于2010年,在当时 Paul Fremantle 的一篇博客中被提及,他主要将其描述为一种和云一样的系统行为的应用的编写,比如分布式的、松散的、自服务的、持续部署与测试的。当时提出云原生是为了能构建一种符合云计算特性的标准来指导云计算应用的编写。

    后来到2013年 Matt Stine在推特上迅速推广云原生概念,并在2015年《迁移到云原生架构》一书中定义了符合云原生架构的特征:12因素、微服务、自服务、基于API协作、扛脆弱性。而由于这本书的推广畅销,这也成了很多人对云原生的早期印象,同时这时云原生也被12要素变成了一个抽象的概念。

    CNCF基金会成立及云原生概念的演化

    2015年由Linux基金会发起了一个 The Cloud Native Computing Foundation(CNCF) 基金组织,CNCF基金会的成立标志着云原生正式进入高速发展轨道,google、Cisco、Docker各大厂纷纷加入,并逐步构建出围绕 Cloud Native 的具体工具,而云原生这个的概念也逐渐变得更具体化。因此,CNCF基金最初对云原生定义是也是深窄的,当时把云原生定位为容器化封装+自动化管理+面向微服务:

    The CNCF defines “cloud-native” a little more narrowly, to mean using open source software stack to be containerized, where each part of the app is packaged in its own container, dynamically orchestrated so each part is actively scheduled and managed to optimize resource utilization, and microservices-oriented to increase the overall agility and maintainability of applications.

    这主要因为CNCF基金会在当时的核心拳头软件就是 k8s,因此在概念定义上主要是围绕着容器编排建立起来的生态。其实这也是为什么我们可以看到 CNCF 定义云原生的时候有时感觉就是再说容器生态。

    到了2017年, 云原生应用的提出者之一的Pivotal在其官网上将云原生的定义概况为DevOps、持续交付、微服务、容器这四大特征,这也成了很多人对 Cloud Native的基础印象。

    Cloud-native foundational pillars

    而到了2018年,随着Service Mesh的加入,CNCF对云原生的定义发生了改变,而这也逐渐作为被大家认可的官方定义:

    Cloud native technologies empower organizations to build and run scalable applications in modern, dynamic environments such as public, private, and hybrid clouds. Containers, service meshes, microservices, immutable infrastructure, and declarative APIs exemplify this approach.
    These techniques enable loosely coupled systems that are resilient, manageable, and observable. Combined with robust automation, they allow engineers to make high-impact changes frequently and predictably with minimal toil.
    The Cloud Native Computing Foundation seeks to drive adoption of this paradigm by fostering and sustaining an ecosystem of open source, vendor-neutral projects. We democratize state-of-the-art patterns to make these innovations accessible for everyone.

    总结一下就是:

    • (1)基于容器、服务网格、微服务、不可变基础设施和声明式API构建的可弹性扩展的应用;
    • (2)基于自动化技术构建具备高容错性、易管理和便于观察的松耦合系统;
    • (3)构建一个统一的开源云技术生态,能和云厂商提供的服务解耦,

    可以看出这一阶段CNCF对云原生的定义加上服务网格声明式API,同时为这一概念阐述更深一层的意义,也就是建立一个统一中立的开源云生态(至于是否中立嘛这里就不谈了:)。这对云原生的生态定位会是很重要的一点,也算CNCF最初成立的宗旨之一吧,打破云巨头的垄断。

    landscape.png

    对云原生的解构

    对一个词的解读,除了看其历史发展背景,还有一种偏向于语言学的方法解读,也就是我们常说的从“字面意思”来理解为何这些理念的集合体。

    Cloud Native,从词面上拆解其实就是 Cloud 和 Native,也就是云计算土著的意思——云计算上的原生居民,即天生具备云计算的亲和力。

    那怎么理解“云的原生居民”呢?

    首先从云的角度来理解,云本质可以看作是一种提供稳定计算存储资源的对象,为了实现这点,像虚拟化、弹性扩展、高可用、高容错性、自恢复这些都是云的基本属性,云原生作为一种云计算,这是所具备的第一层含义。

    第二层要从 Native 来看,云原生和传统的在云上跑的应用是不同。比如一些基于公有云搭建的应用,是基于传统的SOA架构来搭建的,然后再移植到云上去运行,那么他和云得整合是非常低得。
    为什么低呢?云作为一种分布式架构,其“土著居民”也应该是基于分布式架构设计出来得,而微服务或者Serverless这种将服务或函数拆分成一个个模块的松耦合系统天然就具备分布式设计得属性。这是Native的第一种表现。

    Monolithic deployment versus microservices

    其次云作为一种PaaS服务,这位“土著居民”从出生(设计)到成长(开发),再到生活(部署)都应该是基于云的理念来实现的,那么就需要一套自动化的开发流程CI/CD来实现。这是Native的第二种表现。
    Deployment steps in a CI/CD Pipeline

    而最后“土著居民”的特点希望做到能在所有的云端都是适应的,不管是各厂商的公有云 像AWS、Azure、阿里云,还是各企业自己搭建的私有云,云原生的应用都能做到无缝的运行和连接。

    参考文献

    展开全文
  • 什么是云原生? “云原生”是一个被人们经常使用但不是定义很清楚的一个术语。我们认为“云原生应用”应有以下特点: 他们不是单独的,它们是离散的、在逻辑上可分离的几个部分,每个单独打包和部署。通常这些都是...
  • 简介: 我看很多文章都在聊“云原生”,嘴上一直唠叨到这,那么你真得懂得什么是云原生吗!?她是在一个怎么样的背景下被提出来的?云原生这词在这几年突然火了,在很多人还不了解她是什么的时候频频被她刷屏。所以...
  • 什么是 云原生应用?

    2021-02-02 09:28:35
    云原生定义# 云原生意味着应用程序原生就被设计为在云上以最佳方式运行。 云原生是一种专门针对云上应用而设计的方法,用于构建和部署应用,以充分发挥...但是当需要回答“什么是云原生”这个问题时,还是会有些困难
  • 云原生很多人都会问“到底什么是云原生?”、“云原生和传统软件有什么区别?”。背景顾名思义,云原生应用即专门为在云平台部署和运行而设计的应用。云原生能够以可扩展、可复制的方式最大化地利用云的能力,发挥云...
  • 什么是云原生应用? 云原生是一种方法,用于构建和运行充分利用云计算模型优势的应用。云计算不再将重点放在资本投资和员工上来运行企业数据中心,而是提供无限制的按需计算能力和根据使用情况付费的功能,从而重新...
  • 简介:究竟什么是云原生DevOps呢?我们认为:云原生DevOps是充分利用云原生基础设施,基于微服务/无服务架构体系和开源标准,语言和框架无关,具备持续交付和智能自运维能力,从而做到比传统DevOps更高的服务质量、...
  • 云原生从字面意思上来看可以分成云和原生两个部分。云和本地相对的,传统的应用必须跑在本地服务器上,现在流行的应用都跑在云端,云包含了IaaS,、PaaS和SaaS。原生就是土生土长的意思,我们在开始设计应用的时候...
  • 本文讲的是什么是云原生应用程序,【编者的话】我们通常都会在设想什么是一个Cloud Native Appliction,这也是我们为什么不停地去测试、学习各种云服务,学习、使用docker的原因。本文介绍的云原生应用的出发点,...
  • 云原生”这个词被大量引用,尤其是云服务商。不仅如此,云原生甚至还有自己的基金会:由Linux基金会于2015年推出的云原生应用基金会(CNCF)。“云原生”定义在一般用法中,“云原生”是一种构建和运行应用程序的...
  • 什么是云原生架构

    2019-09-12 14:12:50
    从技术角度看,云原生分两大部分,一部分遵循微服务化和容器化原则的云原生应用,另一个部分用于构建和运行云原生应用的云原生平台。 云原生应用和云原生平台,共同构成了一个云原生的完整体系,在这个体系上,...
  • 大家言必称云原生,却鲜少有人告诉你到底什么是云原生,若是找资料来看,读完大多会感觉云绕雾罩,一知半解,总之虚得很;甚至会让你一度怀疑自己的智商,不过我对于读不懂的文章,一律归因于写文章的人太蠢,当然这...
  • 什么是 云原生

    2019-10-06 13:36:10
    云原生”这个词被大量引用,尤其是云服务商。不仅如此,云原生甚至还有自己的基金会:由Linux基金会于2015年推出的云原生应用基金会(CNCF)。 “云原生”定义 在一般用法中,“云原生”是一种构建和运行应用...
  • 到底什么是云原生

    2020-12-28 21:12:28
    云原生之所以解释不清楚,因为云原生没有确切的定义,云原生一直在发展变化之中,解释权不归某个人或组织所有。 Pivotal公司(Spring就是他们的) Pivotal公司的Matt Stine于2013年首次提出云原生(CloudNa
  • 什么是云原生

    2021-02-06 08:54:15
    > 一千个读者眼里有一千个哈姆雷特,本号近半年零零散散写了一些云原生、Devops的文章, 最近系统阅读微软Docs,今天开始结合自己的实践专题意译[云原生]。近几年,云原生成为...
  • 简介: 我看很多文章都在聊“云原生”,嘴上一直唠叨到这,那么你真得懂得什么是云原生吗!?她是在一个怎么样的背景下被提出来的?云原生这词在这几年突然火了,在很多人还不了解她是什么的时候频频被她刷屏。所以...
  • 什么是云原生应用

    2020-03-19 16:34:24
    作者:成富,资深架构师,拥有多年一线开发经验,曾就职于IBM,后移居海外创业,现任公司首席软件工程师,负责基于微服务架构的云原生产品研发。资深技术作家,著有多部中英文技术书籍:《深入理解 Java7 》...
  • 什么是云原生?

    2021-02-07 14:09:45
    云原生从字面意思上来看可以分成云和原生两个部分。 云和本地相对的,传统的应用必须跑在本地服务器上,现在流行的应用都跑在云端,云包含了IaaS,、PaaS和SaaS。 原生就是土生土长的意思,我们在开始设计应用的...
  • 云原生应用程序 在六,七年前云计算开始大步向前时,人们苦苦挣扎的重要问题之一:“如果我想在公共云,私有云或混合云中运行它们,我的应用程序将是什么样子? ? 当时有很多方法可以回答这个问题。 一个流行...
  • 本文讲的是什么是云原生应用 有哪些关键点?【IT168 评论】最近讨论云原生应用越来越多,其是指原生为在云平台上部署运行而设计开发的应用。公平的说,大多数传统的应用,不做任何改动,都是可以在云平台运行起来的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,002
精华内容 800
关键字:

什么是云原生