云原生
更新于:2024年1月29日
云原生
目录
[TOC]
1、什么是云原生
1、2010年 Paul Fremantle,WSO2 的 CTO 和联合创始人
Paul Fremantle,WSO2 的 CTO 和联合创始人,于 2010 年提出的 Cloud Native
从上图的描述可以看出,最早期关于云原生的定义已经比较准确了,也基本涵盖了云原生的两个关键词:云(在云环境中运行、多租户等)和原生(分布式、弹 性)。
然而在 2010 年,微服务的概念都还没被提出来,更别提容器和 K8S 生态了。可以说上面这个定义虽然准确,但是已经不符合高速发展的技术时代的需求了。
2、2013年 Adrian Cockcroft, 时任 Netflix 云架构师、2016 年 AWS 的 VP
Adrian Cockcroft, 时任 Netflix 云架 构师、2016 年 AWS 的 VP,于 2013年提出的 Cloud Native
届时,Netflix 在 AWS 上面运行着上万个实例,每天都有数以千计的实例被创建或删除。Netflix 在云环境上的成功实践,吸引着大批人员和公司争相模仿。Adrain 在介绍 Netflix 的成功经验时,主要是从目标、原则和措施等方面进行了描述。
在 Adrain 对 Cloud Native 的目标描述中,可扩展性、高可用、敏捷、效率这四个词极为关键,这也是为什么现如今大量的企业在进行云原生转型的主要原因,可 以说云原生成为了企业架构转型的必经之路。
为了实现这个目标,Adrain 提出了五大原则,而这五大原则如果你去细细琢磨,你会发现它们都是为上面四个目标服务的。这个时候,微服务、DevOps 的概念相 继兴起,成为了的云原生的一部分或者说云原生的手段,此外,敏捷开发被开始被大家提倡,用来助力互联网公司加快研发速度、提升用户体验。
3、2015年 Matt Stine,Pivotal 公司技术领导者
Matt Stine,Pivotal 公司技术领导者,在2015年发布的电子书《MIgrating to Cloud Native Application Archtecture》一书中对如何 将应用迁移到 Cloud Native 做了详细的介绍
Matt 认为在单体架构向 Cloud Native 迁移的过程中,需要文化、组织、技术共同变革。Matt 首次强调了文化与组织的变革对云原生的重要性,我觉得这个观点时 至今日依旧至关重要。从组织文化的角度来讲,一切以人为主,需要建立自由开放的环境,高度信任,自我驱动,充分发挥每一个人的力量,而不是让工程师成为 螺丝钉。应当避免大事小事都拿到会议室讨论,造成决策瓶颈。
另外,Matt 在延续前人思想总结的前提上,首次将“十二因子”与云原生关联起来。十二因子的概念简介见下图:
云原生学说发展到这,已经趋于成熟了,但是以上几乎都是个人的定义和看法。业务场景是千变万化的,一方面每个人站的角度不一样,心中的架构也会不同;另 一方面,架构是在持续演进的,随着新技术层出不穷,云原生定义也会继续不断演进。
2015年由 Linux 基金会发起了一个 The Cloud Native Computing Foundation(CNCF) 基金组织,CNCF 基金会的成立标志着云原生正式进入高速发展轨道, google、Cisco、Docker 各大厂纷纷加入,并逐步构建出围绕 Cloud Native 的具体工具,而云原生这个的概念也逐渐变得更具体化。这也是非常具有历史意义 的,CNCF 对于 云原生的推动起到了巨大的作用。
- 12facor
简介
如今,软件通常会作为一种服务来交付,它们被称为网络应用程序,或软件即服务(SaaS)。12-Factor 为构建如下的 SaaS 应用提供了方法论:
- 使用标准化流程自动配置,从而使新的开发者花费最少的学习成本加入这个项目。
- 和操作系统之间尽可能的划清界限,在各个系统中提供最大的可移植性。
- 适合部署在现代的云计算平台,从而在服务器和系统管理方面节省资源。
- 将开发环境和生产环境的差异降至最低,并使用持续交付实施敏捷开发。
- 可以在工具、架构和开发流程不发生明显变化的前提下实现扩展。
这套理论适用于任意语言和后端服务(数据库、消息队列、缓存等)开发的应用程序。
背景
本文的贡献者参与过数以百计的应用程序的开发和部署,并通过 Heroku 平台间接见证了数十万应用程序的开发,运作以及扩展的过程。
本文综合了我们关于 SaaS 应用几乎所有的经验和智慧,是开发此类应用的理想实践标准,并特别关注于应用程序如何保持良性成长,开发者之间如何进行有效的代码协作,以及如何 避免软件污染 。
我们的初衷是分享在现代软件开发过程中发现的一些系统性问题,并加深对这些问题 的认识。我们提供了讨论这些问题时所需的共享词汇,同时使用相关术语给出一套针对这些问题的广义解决方案。本文格式的灵感来自于 Martin Fowler 的书籍: Patterns of Enterprise Application Architecture , Refactoring 。
读者应该是哪些人?
任何 SaaS 应用的开发人员。部署和管理此类应用的运维工程师。
12-factors I. 基准代码 一份基准代码,多份部署 II. 依赖 显式声明依赖关系 III. 配置 在环境中存储配置 IV. 后端服务 把后端服务当作附加资源 V. 构建,发布,运行 严格分离构建和运行 VI. 进程 以一个或多个无状态进程运行应用 VII. 端口绑定 通过端口绑定提供服务 VIII. 并发 通过进程模型进行扩展 IX. 易处理 快速启动和优雅终止可最大化健壮性 X. 开发环境与线上环境等价 尽可能的保持开发,预发布,线上环境相同 XI. 日志 把日志当作事件流 XII. 管理进程 后台管理任务当作一次性进程运行
4、2015年 CNCF
CNCF 于 2015 年定义的 Cloud Native
上面的定义简而言之,就是把云原生定位为:容器化封装+自动化编排管理+面向微服务。这主要因为 CNCF 基金会在当时的核心拳头软件就是 K8S,因此在概念 定义上主要是围绕着容器编排建立起来的生态。其实这也是为什么我们可以看到 CNCF 定义云原生的时候有时感觉就是再说容器生态。
5、2017年 Pivotal 官网定义的 Cloud Native
Pivotal 官网定义的 Cloud Native (2017年)
到了 2017 年, 云原生应用的提出者之一的 Pivotal 在其官网上将云原生的定义概况为DevOps、持续交付、微服务、容器这四大特征,这也成了很多人对 Cloud Native 的基础印象。也有人在此基础上简化为**云原生三架马车:微服务、容器、DevOps。**至此,云原生的概念具体落实到微服务、容器、DevOps 这类具体的技 术上面了,而不是停留在概念上。
到了2018年,随着 Service Mesh 的加入,CNCF 对云原生的定义发生了改变,而这也逐渐作为被大家认可的官方定义。
6、2018年 CNCF 重新定义的 Cloud Native
可以看出这一阶段 CNCF 对云原生的定义加上服务网格和声明式 API,同时为这一概念阐述更深一层的意义,也就是建立一个统一中立的开源云生态(至于是否中 立嘛这里就不谈了)。这对云原生的生态定位会是很重要的一点,也算 CNCF 最初成立的宗旨之一吧,打破云巨头的垄断。
云原生极速发展到今天,已经涌现了批量的新型技术和开源项目,一些传统的开源项目也在向云原生转型,以支持云原生生态为荣并且作为口号大肆宣传。上图云 原生生态图景中展现出来的开源项目和技术密密麻麻,数不胜数,而且几乎每月都会有新的项目加入,每年也都有新的项目加入 CNCF 基金会进行孵化,同时也有 已经加入的项目成功毕业。
2大架构特征:不可变基础设施,声明式API
7、什么是云原生?(==eBay 孟凡杰大佬==说)
什么是云原生
• 在包括公有云、私有云、混合云等动态环境中构建和运行规模化应用的能力
• 云原生是一种思想,是技术、企业管理方法的集合
• 技术层面
• 应用程序从设计之初就为在云上运行而做好准备
• 云平台基于自动化体系
• 流程层面
• 基于 DevOps, CI/CD
#备注
什么叫敏捷开发
openstack云:创建虚机就是一条命令的事儿,但是其对虚机后续的生命周期不能进行自动化管控;
如何构建应用高可用:pass团队负责构建高可用;
容器技术的封装能力和分发能力;
什么是云原生
• 基于多种手段
• 应用容器化封装
• 服务网格
• 不可变基础架构
• 声明式 API
• 云原生的意义
• 提升系统的适应性、可管理性、可观察性
• 使工程师能以最小成本进行频繁和可预测的系统变更
• 提升速度和效率,助力业务成长,缩短 I2M(Idea to Market)
-
什么是云原生?
孟凡杰大佬:就是云原生上下通吃 往下到基础架构 网上到应用 它把边界打破了。
🍀 Q:孟凡杰对云原生的理解-2021.08.17
我是这么看的 云原生的世界里 没有纯后台开发,只管业务逻辑的世界越来越小, 比如你做java开发, 微服务架构下的spring cloud你至少要懂 。spring cloud现在也支持kubernetes native 的服务发现, 也在被istio取代 所以未来应该是相通的 ,除非把自己局限在代码逻辑的部分 ,否则学习云原生技术栈是有用的。
8、什么是云原生?(字节跳动-资深架构师 罗广明)
-
云原生(Cloud Native)是一种构建和运行应用程序的方法,是一套技术体系和方法论。
-
云原生从字面意思上来看可以分为云和原生两个部分:
- 云是和本地相对的,传统的应用必须跑在本地服务器上,现在流行的应用都跑在云端,云包含了IaaS、PaaS和SaaS等。
- 原生就是土生土长的意思,我们在开始设计应用的时候就考虑到应用将来是运行云环境里面的,要充分利用云资源的优点,比如 云服务的弹性和分布式优势。
总结
讲到这里,相信的大家对于云原生也有了自己的体会和认知。总而言之,个人的定义难免偏颇或者有缺失,组织的定义也同样如此,都是在构建一个自己的理想生 态。但是了解云原生的概念起源和发展,有助于我们理解云原生的含义以及其未来发展的趋势,这一点至关重要。
总结来说,云原生是一套适用于云计算时代的IT架构与方法论,而这一套方法论需要从架构、研发流程、文化三个角度去实现,相互配合,缺一不可。
如果硬是要给云原生的做一个总结,我们可以参考如下观点:
云原生的组成
-
架构:以云和微服务架构为基础构建系统
-
云包含了敏捷基础设施及公共基础服务
-
考量架构的质量:一致性、性能、可扩展性、可用性等
-
研发流程:自动化的研发环境是 Cloud Native 的基础
-
独自、快速完成交付,研发效率极大提升
-
组织文化:以人为主、自由开放、自我驱动、高度信任
-
充分发挥个人力量,避免大事小事会议讨论,造成决策瓶颈
9、什么是云原生(唐继元)-2022.4.24
10、什么是云原生
2、云原生核心项目概览
- CNCF 云原生整体视图
provisioning 供应
compliance 合规
orchestration 编排
coordination 协调
- 云原生核心项目概览
TEKTON:CD工具(声明式api) api网关:api-server
🍀 landscape
🍀 云原生参考架构
3、云原生技术演进路线
Pets vs Cattle
scale out 水平扩展,向外扩展 scale up 向上扩展
云计算发展历史
业界认为HEROKU是pass的鼻祖,包括后面要讲的应用开发的12因素也是HEROKU提出来的,包括我们现在pass的一些理念或者实践,都是HEROKU提出来的。
2011也是比较关键/重要的一年;
FaaS ;
LXC里面的技术也是谷歌做了大量的贡献;
🍀 CNCF未来发展规划: http://copu.softic.com.cn/priyanka.html