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

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

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

本文试图解答:

• 为什么云原生概念具有革命性?

• 什么是微服务?

• 微服务和中台的关系

• 容器和微服务为什么是最佳搭档?

• 容器化与虚拟化的区别

• API管理与API集成的区别

• Kubernetes是做什么用的?

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

• 等等

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

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

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

第二部分 DevOps与CI/CD

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

第四部分 容器与Docker

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

第六部分 思考与机会

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


从集装箱革命说起

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

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

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

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

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

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

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


云原生的诞生

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

云原生时代(一)云原生及CNCF基金会
云原生的发展史,来自CNCF基金会执行董事Dan Kohn

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

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

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

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。

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

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

其中服务网格和声明式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.”

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

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

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

以微服务为导向。应用被分割到不同的微服务中,这种分割可以显著的提高应用的整体敏捷性和可维护性。

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

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

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

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

云原生时代(一)云原生及CNCF基金会
云原生的发展脉络

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

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

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

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

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

• 提高效率和资源利用率:动态管理和调度微服务的*编排流程降低了与维护和操作相关的成本;

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

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

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


云原生计算基金会CNCF 

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

CNCF的使命包括以下三点:

• 容器化包装

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

• 面向微服务

全球主流的科技企业和云计算厂商绝大部分都是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项目成熟度等级划分

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

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

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

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

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


云原生涵盖的主要概念

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

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

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

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

下一期内容为《云原生时代(二):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 官方大使张磊:什么是云原生?

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