作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊
目录
5.1 原生云应用(Native Cloud App)的提出
5.2 云原生应用(Cloud Native App)的概念提出
5.3 云原生时代开源巨头Pivotal对云原生的定义
第1章 云原生Cloud Native的字面解读
这里有两个关键词,一是Cloud,一是Native。
云这个词已经非常普及了,云计算、云服务、云搜索、云社区、云盘等,那么什么是云呢?云是计算机互联网的一种比喻性说法。
什么是Native呢?本地的、当地的、土著的、原初的等意思。
Cloud Native,翻译成中文就是一切皆在源于云上,一切皆在云上的意思。
第2章 云原生诞生的背景
2.1 云原生的诞生源于互联网业务发展的需求:
海量的用户:互联网业务面对的是上亿级别的全球用户。
不间断的服务:互联网提供的是面向全球的全天候的不间断服务。
并发访问与突发访问:互联网业务的访问是大规模并发与突发性的特点,某个特定时间段,业务量可能出现脉冲式上涨。
产品迭代快:互联网用户的业务和软件需求并非预先定义好、调研好、商量好的,而是在用户使用产品中的过程中不断挖掘出来的,是客户一边使用产品、业务人员一边发掘需求、研发人员一边开发新功能、运营者一边部署新产品的过程。
2.2 业务运营企业面临的挑战:
软件架构面临高可用性、高复用性、高伸缩性的压力,面临这业务不可用的压力
各种软硬件资源的使用面临高弹性、高伸缩性的压力,面临着资源可能巨大浪费的压力
产品交付面临客户新需求快速变化、快速捕捉、快速满足的压力,面临客户快速流失的压力
组织和协调面临快速、高效交付的压力,面临这交付出过时产品、失去市场的压力
2.3 应对上述问题的技术和软件工程措施
微服务、容器、持续交付、DevOps等。
于是云原生因运而生,云原生的思想、最佳的实践、相应的技术逐步发展、演进、完善。
第3章 技术人员为什么要了解云原生
(1)云原生很火,很热,紧跟云技术的最前沿。
(2)更好的管理好云、应用好云,利用云的优势提升效率、为公司创造价值。
(3)企业管理上云、企业产品开发上云、以及产品本身上云,甚至是嵌入式产品逐步上云是大势所趋。
(4)可以让传统领域的技术人员,以新的视角审视原先固化的软件开发过程和软件运行环境,以全局的视角审视互联网的网络环境以及互联网技术的特点、优势以及其背后的原因,突破原有的行为惯性和思维局限。
(4)5G时代,随着面向多业务用户需求的落地和切片技术的成熟,无论是核心网和无线接入网,原先封闭的网络服务逐渐萎缩,无线网络设备的云化逐渐成为主流与趋势,云原生技术将帮助传统的网络设备商以及他们的技术人员,更好地、更安全、高效的把传统的嵌入式设备产品设计、开发、发布、部署、以及软件流程向云上迁移,在迁移的过程中充分利用成熟的云原生技优势,降低迁移的风险,增加企业和个人竞争力。
第4章 行业内对云原生的理解与解读
什么是元原生的内在定义呢?其实没有一个统一的标准,不同的时期,官方对云原生的内涵与定义也是不断在演变;不同的角度,对云云生的理解也不一样。我们现在就从不同的角度来摸一下“云原生”这头大象,感受不同角色的人,从不同的侧面对云原生的理解。
市场价值的角度:
云原生是一些列理念、技术、最佳实践的集合,能够帮助用户最大可能的提升软件开发、运维的效率,节省成本,能够帮助用户更好的管理云、用好云,提升用户的竞争力。
云原生gogole为了在云市场上更好的逆袭,发扬光大的词语。
软件架构与设计模式
云原生是一种新的软件架构的设计模式。
软件技术的角度来看:
云原生是微服务、容器、K8S、DevOps等一些列基于云基础设置而衍生出来一套云技术软件工具套件,是一套云技术软件产品体系,而不是一个单一的技术。
软件工程的角度来看:
云原生是一种新的软件开发、部署的方式,软件的设计、开发、版本管理、构建、持续集成、持续发布、持续部署、软件运营全都在云上,而不是单个环节的单一技术,因此,从这个角度看,云原生包含了DevOps。
云原生就是生在云生,长在云上,就是软件的开发在云上,发布在云生,部署运行在云上,逐步优化完善在云上。
第5章 云原生的官方定义
5.1 原生云应用(Native Cloud App)的提出
Major Trend在2009就提出了Native Cloud App的概念,他在把应用程序尝试部署到云上的过程中,遇到了一些问题,因此他提出Native Cloud App的概念,并指出原生的云应用程序应该具备的一些特征:支持大规模并发和弹性部署,应用程序应该运行在云上,充分应用云的优势,并且支持跨云部署等特性。
5.2 云原生应用(Cloud Native App)的概念提出
云原生(Cloud Native)的概念,是MattStine于2015年首次提出,被一直延续使用至今,但其内涵最经历和多次的变化与演进。
最初的云原生的范畴仅仅是针对部署在云上的应用程序的,他把基于微服务架构设计、满足12要素特征(TheTwelve-Factor App)的互联网服务器端的应用程序,称为云原生,用云原生这个词来指代具备上述特征的应用开发。
5.3 云原生时代开源巨头Pivotal对云原生的定义
后来Matt Stine加入云原生时代崛起的开源巨头Pivotal公司,该公司对云生的定义是:
该公司的官网,把云原生定义为四大组件:微服务、容器、持续集成、DevOps。
微服务:定义的是基于云原生的应用程序的架构。
容器:定义了云原生应用程序的发布和部署的形态,为软件的实时开发与实时部署提供了可能。
持续集成:定义了云生应用程序的开发和持续集成方式,能够做到实时提交代码,实时集成测试 。
DevOps:定义了基于云原生应用程序,必须打破应用程序的开发、发布、部署、运营每个关键环节的界限,把它们连为一体,它通过各种组合工具,实现了整个过程的自动化和连续性,整个过程不需要人为参与。
此时,云原生初步定义了一种新的软件工程的最佳实践。
5.4 云原生计算基金会CNCF对云原生的定义:
云原生计算基金会致力于培育和维护一个厂家中立的开源生态系统来推广云原生技术,通过民主化的方式将最前沿的、创新的软件模式为大众所用。
它对云原生的最终的定义如下:
云原生技术有利于各种组织在公有云、私有云和混合云等新型的动态的数字基础设施的环境中,构建和运维可弹性扩展的应用。云原生的代表技术包括:微服务、容器、申明式API、云网络服务、不可变基础设施。这些技术能够构建容错性好、易于管理、便于观察的松耦合软件系统 ,结合可靠的自动化手段,使得工程师和业务组织,能够轻松的系统做出频繁的、可预测的、重大的变更。
云原生计算基金会定义了云应用的同时,也强调了云基础设施在云原生中的共享和支撑作用,强调 了云应用可以无缝地部署在不同厂家的云上,避免用户的应用被绑定在特定的云平台上。
5.5 云原生的进一步澄清
面向服务而非面向功能的应用、反脆弱、混沌工程、反范式化、对某种服务的实现不限定某种特定的技术。
所谓反脆弱:云应用的外部环境是不可靠的、是易变的、是波动的,如果在这样的环境中依然生存下来,持续提供服务,就是反脆弱设计。反脆弱特性就是系统当受到随机压力时能变得更强的特性。尼采有一句话,杀不死我的,终将是我更强大。
混沌工程:是指在整个系统中在随机位置引发故障,确保系统依然可以稳定、可靠的提供服务的技术。
项目的闭环应该限定一个组织内,而不是研发部门、快速试验、每天发布、谁开发谁维护、开源
目前,元原生并没有把对云的基于人工智能的智能化管理纳其定义范围,实际上人工智能技术已经深入到云业务应用软件设计的方方面面,相信未来人工智能技术会进一步的延伸到云平台、云应用的管理和调度上,相信不久的将来,人工智能技术也将成为云原生的关键技术之一 。
第6章 云原生与Devops、敏捷、SAFE的区别
第7章 总结:
云原生是一种天然诞生于云基础设施之上的应用程序的新的软件架构
云原生是一种新的软件工程的最佳实践
云原生是一组自动化软件开发和自动化软件运营的工具集
云原生是一种新的软件开发和运营的方法论和原则
云原生是一种需要对公司的文化、组织架构、开发流程进行重构的管理方法
云原生是一种生于“云”或迁移到“云”,从而享受“云”的快速、高效和持续的服务能力的新的业务模式。
云原生是云厂商把各种互联网的技术、工具整合在一起之后的旗帜。
不同的云厂商出于各自的立场和商业目的,对云原生有各自不同的解读。
作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊