云原生时代(一)云原生及CNCF基金会

今天咱们不讲行业和商业,讲讲2019年最热的概念-云原生(Cloud Native)。git

我认为云原生是将来10年IT发展最重要的趋势,可是它涵盖的概念很是多,须要花不少时间研究,同时浩如烟海的资料分散在网络上各个地方,缺少系统性的梳理。今年2月我在基金内部作过一个分享,今日成文,但愿让更多的人有所了解。github

本文试图解答:数据库

• 为何云原生概念具备革命性?安全

• 什么是微服务?网络

• 微服务和中台的关系架构

• 容器和微服务为何是最佳搭档?app

• 容器化与虚拟化的区别框架

• API管理与API集成的区别less

• Kubernetes是作什么用的?分布式

• 开源软件商业化遇到的典型问题是什么?

• 等等

涉及到的概念包括云原生、DevOps、持续集成、持续交付、持续部署、微服务、API管理、iPaaS、Service Mesh、Serverless、容器、Docker、Kubernetes等等,我争取用比较形象和通俗的方式把这些技术概念讲清楚。

本文内容较多,共分为六个章节。

第一部分 云原生及CNCF基金会

第二部分 DevOps与CI/CD

第三部分 微服务、API管理与集成

第四部分 容器与Docker

第五部分 Kubernetes与容器编排之战

第六部分 思考与机会

今天开启文章的第一部分——云原生及CNCF基金会,欢迎持续关注个人博客,接下来将为你们陆续讲解云原生时代其余五部份内容。


从集装箱革命提及

有一本很是有名的书,叫《集装箱改变世界》,说的是看起来平淡无奇的铁箱子,如何从二十世纪起永久性的改变了这个世界,并促进了全球化和全球分工。集装箱的出现和发展是实体货物包装、运输、交付方式的一次革命。

《经济学家》杂志曾经评价说“没有集装箱,不可能有全球化”。集装箱为何具备革命性?

经济全球化的基础就是现代运输体系,而一个高度自动化、低成本和低复杂性的货物运输系统的核心就是集装箱。集装箱最大的成功在于其产品的标准化及由此创建的一整套运输体系。可以让一个载重几十吨的庞然大物实现标准化,而且以此为基础逐步实现全球范围内的船舶、港口、航线、公路、中转站、桥梁、隧道、多试联运相配套的物流系统,这的确堪称人类有史以来创造的伟大奇迹之一,而撬动这个系统的理念就是标准化和系统化

改变世界的不只仅是集装箱自己,还有一整套货物处理的新方法,包括港口、货船、起重机、卡车,还有发货人的自身操做方式等

云原生在IT领域的意义很是相似于集装箱,只是里面装载的再也不是实体货物,而是虚拟世界的二进制代码和软件。咱们将在介绍完众多概念以后再来对应解释。


云原生的诞生

随着虚拟化技术的成熟和分布式框架的普及,在容器技术、可持续交付、编排系统等开源社区的推进下,以及微服务等开发理念的带动下,应用上云已是不可逆转的趋势。

云原生的发展史,来自CNCF基金会执行董事Dan Kohn

云计算的3层划分,即基础设施即服务(IaaS)、平台即服务(PaaS)、软件即服务(SaaS)为云原生提供了技术基础和方向指引,真正的云化不只仅是基础设施和平台的变化,应用也须要作出改变,摈弃传统的土方法,在架构设计、开发方式、部署维护等各个阶段和方面都基于云的特色,从新设计,从而建设全新的云化的应用,即云原生应用。

云原生(Cloud Native)这个概念,是由Pivotal的Matt Stine于2013年首次提出,他还在2015年出版了《Migrating to Cloud-Native Application Architectures(迁移到云原生架构)》一书。

Gartner提到云原生的定义尚不明确,但含义丰富。云原生对于不一样的人和组织来说,有着不一样的理解。众多顶级技术的铸造者、Matt Stine的东家Pivotal如此定义云原生。

“Cloud native is an approach to building and running applications that fully exploit the advantages of the cloud computing model.”--云原生是一种构建和运行充分利用云计算模型优点的应用程序的方法。

CNCF云原生计算基金会如此定义云原生:

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

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

其中服务网格和声明式API是新加入的内容,而不可变基础设施指的是应用的基础设施应是不可变的,是一个自包含、自描述能够彻底在不一样环境中迁移的东西,容器技术正是这一理念实现的基石。

而CNCF同时把云原生计算定义为:

“Cloud native computing uses an open source software stack to be:

Containerized. Each part (applications, processes, etc) is packaged in its own container. This facilitates reproducibility, transparency, and resource isolation.

Dynamically orchestrated. Containers are actively scheduled and managed to optimize resource utilization.

Microservices-oriented. Applications are segmented into microservices. This significantly increases the overall agility and maintainability of applications.”

云原生计算使用的开源技术栈包括:

容器化。每一个部分(应用、流程等等)都打包在本身的容器中,这有助于提高复用性、透明度以及改善资源隔离。

动态编排。容器受到有效的调度和管理,以便优化资源利用。

以微服务为导向。应用被分割到不一样的微服务中,这种分割能够显著的提升应用的总体敏捷性和可维护性。

我我的理解,云原生是指从云的原生应用角度出发,一整套设计、开发、部署、运行、维护的流程、技术栈以及背后文化理念的统称。

下表列举了云原生应用和传统应用的有哪些主要区别。

要转向云原生应用须要以新的云原生方法开展工做,云原生有利于各组织在公有云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用。

云原生的发展脉络

云原生背后的价值主张有哪些?

• 隔离性:把应用程序打包在容器中加快了代码和组件的重用,而且简化了操做;

• 无锁定:开源软件栈支持在任何公共或私有云上或以组合方式进行部署;

• 无限扩展:为可以扩展到数万个自修复多租户节点的现代分布式系统环境而优化;

• 灵活性和可维护性:将应用程序拆分为具备明确描述的依赖关系的微服务;

• 提升效率和资源利用率:动态管理和调度微服务的中央编排流程下降了与维护和操做相关的成本;

• 应用的弹性:以应对单个容器甚至数据中心的故障,以及不一样级别的需求

2019年,Gartner曾经发布报告表示云原生时代已经到来,在将来三年中将有75%的全球化企业将在生产中使用容器化的应用。

请注意,云原生相关技术不只仅能用于云计算,即使是和云计算即对立又协同的边缘计算,微服务、容器、Kubernetes依然是事实上的杀手应用和标准。如由著名的Kubernetes管理平台创业公司Rancher所贡献的K3s项目,就是Kubernetes(K8s)的最轻量级版本,以知足边缘计算和IOT环境中,在x8六、ARM64和ARMv7处理器上运行小型、易于管理的Kubernetes集群日益增加的需求。


云原生计算基金会CNCF 

提到云原生,就不能不介绍云原生计算基金会CNCF(Cloud Native Computing Foundation)。CNCF于2015 年7月由Google 牵头成立,隶属于 Linux 基金会,初衷是围绕云原生服务云计算,致力于培育和维护一个厂商中立的开源生态系统,维护和集成开源技术,支持编排容器化微服务架构应用,经过将最前沿的模式民主化,让这些创新为大众所用。

CNCF的使命包括如下三点:

• 容器化包装

• 经过中心编排系统的动态资源管理

• 面向微服务

全球主流的科技企业和云计算厂商绝大部分都是CNCF会员,其中不乏多家来自中国的科技巨头。

CNCF黄金、白金会员

截止2020年4月,CNCF 基金会共托管49个云原生项目,每一个CNCF项目都对应一个成熟度等级,申请成为CNCF项目的时候须要肯定项目的成熟度级别,Kubernetes和 Envoy等项目基于生产可用和高稳定性首先成为毕业项目(9个),其余项目则根据其成熟度分别位于孵化(17个)和沙箱(23个)阶段。CNCF目前托管的项目共同构成了云原生生态的基石。

值得注意的是其中有三个来自中国的项目:VMware中国团队为企业用户设计的 Registry Server开源项目Harbor,PingCap贡献的分布式事务键值数据库TiKV以及阿里自研的P2P文件分发系统Dragonfly。

CNCF项目成熟度等级划分

对于企业在复杂的基础架构之上如何推进云原生应用的更好落地,从而更好地适应环境与业务的发展,CNCF给出了路线图(Trail Map)用于对用户在总体上给出指导建议,共分红十个步骤(容器化;CI/CD;应用定义及编排;监控及分析;服务代理、发现和网格;网络、策略及安全;分布式数据库及存储;流与消息;镜像库与运行时;软件分发)进行实施,而在不一样的步骤均可以结合CNCF全景图(Landscape)中列出的产品或服务进行选择。

CNCF全景图则列举了和云原生相关的产品及服务的完整名单,这1381个项目共同构成了恢弘庞大的云原生世界。整个全景图按照功能分为29个模块,分别归属于9种大的类别(应用定义与开发、编排与管理、运行时、配置、平台、可观察性与分析、Serverless、会员和其它)。值得注意的是其中专门有一种分类是Cards from China,列举了来自中国的145个项目,其中不乏许多你们耳熟能详的知名项目,惋惜的是数据并不完整。感兴趣的朋友能够自行研究。

从CNCF的理念及野心来看,基于云原生的基础设施正在壮大和蚕食非云的市场,将来极有可能成为整个IT生态事实上的意见领袖和领导者。


云原生涵盖的主要概念

上面提到云原生的表明技术包括容器、服务网格(Service Mesh)、微服务、不可变基础设施和声明式API。另一种比较主流的说法是云原生=微服务+DevOps+持续交付+容器化,普遍的见诸于各类文章和资料。

在接下来的《云原生时代》系列文章中,咱们将依照这些概念,分红DevOps与CI/CD;微服务、API管理与集成;容器与Docker;Kubernetes与容器编排之战四个部分全面介绍云原生各个组成部分。

下一期内容为《云原生时代(二):DevOps与CI/CD》

 

参考文档:

本文的部份内容参考或者引用如下文章,在此表示感谢,若是有涉及知识产权的问题,请联系我及时修改。

What is Cloud-Native? Is It Hype or The Future of Software Development? 

A text interpretation of the cloud native (rpm)

为何你必须了解云原生?!

腾讯大牛深刻浅出详解云原生

CNCF 官方大使张磊:什么是云原生?

技术专栏 | 云原生应用之路