CloudNative:云原生(分布式云)的简介(发展&演变/为什么需要/优势&价值/安全/对比传统企业应用)、四大核心技术、CNCF云原生交互景观、云原生技术的使用经验及方法之详细攻略
导读:从“软件正在吞噬世界”到“开源正在吞噬软件”,到如今“云原生吞噬开源”,开源项目正在有条不紊地向云化演进。近年来,IT软件技术架构进入云化时代—软件云化和微服务化,容器虚拟化、DevOps等技术快速发展,将整个开发过程、开发流程带入云端,迎来了开发范式上的革命。PaaS、SaaS以及IaaS服务都已进化到更加原生(Native)的状态,全面云化势不可挡。同时,微服务、K8S、Service Mesh等一系列新技术规范涌现,开发工具也都在迭代升级。未来,云原生将会成为新一代数字化的技术基础设施。云原生赋能企业也开始风生水起,一方面,云原生等新技术顺应市场与企业的需求而生,另一方面,越来越多的企业正在借助云原生应用架构助力业务的数字化转型。云原生计算提供统一的技术栈,动态、混合、分布式的云原生环境将成为新常态。
关键词:微服务架构、容器、Docker、K8S、PaaS平台、DevOps、云原生
目录
云原生的简介—技术的变革,一定是思想先行
1、百家之言
(1)、通俗理解云原生——云亲生、换个开发环境
(2)、云原生—花钱买肃静,自己不搭机房就需要购买云服务
(3)、云原生—也是一场内卷,但先卷者得利
(4)、当前云原生的推介文档有引导之嫌
(5)、从云原生看软件设计的技术趋势和影响
软件设计的目标→诉求带来傻瓜式编程→软件工程师不再底层→技术下沉→后端开发
2、云原生的发展、演变
(1)、云原生的发展—开源 区(Docker/K8S)加速了转向云原生应用的步伐
(2)、云原生的演变—应用上云趋势+云计算三层的技术土壤→催云原生应用→但上云的应用需修改自身去适应“云”特点
(3)、基于“云原生架构”应用程序的指导思想
3、为什么会出现云原生—软件应用要上云
(1)、软件应用要上云
(2)、软件设计的技术趋势和影响
4、云原生的优势/价值—转型利器(快速迭代/高效运维)、无需考虑底层技术(快速部署/按需伸缩/不停机交付)、更关注业务价值(向下封装资源/向上支撑应用)、应用法宝(构建应用简便快捷/部署应用轻松自如/运行应用按需伸缩)
(1)、可轻松应对频繁和可预测的重大变更——源自CNCF
(2)、降低风险、按需计算、更快交付(拓展业务)——源自Pivotal
(3)、为什么云原生应用如此重要—竞争优势、灵活性、更加专注代码、自动化
5、云原生的安全
(1)、基础设施安全、镜像安全、运行时安全、生态安全
(2)、平台提供安全防护机制、制定安全配置、可视化判断安全性、异常行为检测、 络隔离与 络入侵检测、全生命周期安全防护
6、传统企业应用VS云原生应用
(1)、积累总结
(2)、源自Pivotal官
云原生核心技术—DevOps+持续交付+微服务+容器+云安全
1、云原生体系的四要素—微服务+容器+DevOps+持续交付
(1)、微服务
(1.1)、SOA对比微服务
(1.2)、腾讯开源的微服务框架TARS
(2)、容器
(3)、DevOps
(4)、持续交付
2、服务 格Service Mesh
3、不可变的基础设施—传统可变的基础设施(需人工维护/不可预测/易出错)→效率/扩展/更新
4、声明式API
5、K8S
(1)、基于Docker镜像的分布式应用
(2)、分布式集群运行分布式应用的复杂性——分布式容器应用的可靠性、可扩展性
6、云原生、微服务、容器、K8S、SOA、PaaS平台、DevOps 之间的关系——相互促进、相互依赖、相互关联
CNCF简介及其云原生交互景观
CNCF简介
CNCF Cloud Native Interactive Landscape
云原生技术的使用经验及方法
1、当前业务是否要立即切换到云原生架/p>
2、云原生时代的开发者具备的能力
云原生的简介—技术的变革,一定是思想先行
云原生(CloudNative)是构建和运行应用程序的一套技术体系和方法论。它是基于分布部署和统一运管的分布式云 ,以容器化、微服务、DevOps等三大技术为基础,而建立的一套云技术产品体系。云原生是一种新型技术体系,是云计算未来的发展方向。
云原生,Cloud Native,如果拆开来解释的话,其中Cloud表示应用程序位于云中,即分布式云环境中,而不是传统的数据中心;Native表示应用程序在设计之初,就考虑到云的环境,即云平台的弹性和分布式特性,原生为云而设计。
实际上,云原生并不是简单地使用云平台运行现有的应用程序,云原生的核心原理是,充分利用和发挥云计算优势—云平台的弹性、分布式的优势,在云上以最佳姿势运行。是一种对应用程序进行设计、实现、部署、交付和操作的应用架构方法。
云原生计算基金会(CNCF)致力于培育和维护一个厂商中立的开源生态系统,来推广云原生技术。通过将最前沿的模式民主化,让这些创新为大众所用。CNCF官 阐述了云原生的代表技术包括:容器、服务 格、微服务、不可变基础设施、声明式API。利用这些技术可以构建出容错性更好、更易于管理和观察的松耦合系统,再加上一些可靠的自动化技术及完备的监控预警体系,云原生技术将使开发人员能更快速、轻松地迭代和交付软件系统。
云原生代表性的公司是Snowflake,是一家目前最火的云原生数仓公司。2020年9月16日,Snowflake成功IPO,交易首日市值达到704亿美元,最高峰曾突破1200亿美元。它是全球领先的云计算服务商,主要提供云原生的数据仓库服务,打造数据时代基础设施。
根据中国信通院的相关调研数据,2019年云原生市场规模已高达350.2亿,且以年均增速超过30%的势头迅猛发展。根据IDC研究,2020年传统行业对云原生技术投入最多的五个行业分别是:金融、政府、制造、通信以及服务。未来五年,复合增长率最快的五个行业分别是通信、制造、交通运输、政府和金融。
2021年伊始,云原生的布局开始加速。华为云联合CNCF(云原生计算基金会)、中国信通院成立创原会,加速云原生产业落地;金山云发布云原生全景图、云原生产品矩阵和最新的Serverless产品;诺基亚宣布与谷歌云合作开发云原生5G技术;几乎所有云厂商新发布的云计算产品,都已打上了云原生的标签。
CNCF官 :https://www.cncf.io
CNCF官 定义云原生:FAQ | Cloud Native Computing Foundation
Pivotal官 定义云原生:What are Cloud Native Applications| VMware Tanzu
1、百家之言
(1)、通俗理解云原生——云亲生、换个开发环境
云原生即云亲生;
云原生其实就是,对软件应用换了个开发环境,然后为了适应这个环境做了一些技术调整;
(2)、云原生—花钱买肃静,自己不搭机房就需要购买云服务
云原生的出现,就是将云计算的方向从此前的资源型转为了服务型,因此它们都在应用服务层,而不再是基础资源了。所以,有人戏称,只要软件架构做的好,基础资源就变得不那么重要了。
云端环境就是要使用云服务器,对于大部分公司来说,就是使用阿里云、腾讯云等云计算厂商的公有云服务来部署应用,而不是自己在额外维护一套复杂的服务器机房。
当然,他的优势也是不言而喻,能够充分利用云服务的弹性及分布式优势,可以大大降低运维成本,并且提升服务的稳定性,但是,如果数据出本地,那么数据上云的安全性就值得商榷了。
(3)、云原生—也是一场内卷,但先卷者得利
云原生是对老程序员的降维打击,整套环境和思维方式都改变了,卷起来;
(4)、当前云原生的推介文档有引导之嫌
虽然,云原生的推介文档有引导之嫌,但它的优点的确也是有目共睹。但是,这样的好东西,是不是就要,立刻把当前的应用改换到基于云原生的架构体方法,参考—云原生技术的使用经验及方法
(5)、从云原生看软件设计的技术趋势和影响
软件设计有两个关键目标:高内聚、低耦合;围绕这2个核心目标,又提出了七大原则:开闭原则、依赖倒置、单一职责、接口隔离、最少知识、里氏替换、合成复用。
● 开闭原则:是总纲,要对扩展开放,对修改关闭;
● 依赖倒置原则:要面向接口编程;
● 单一职责原则:实现类要职责单一;
● 接口隔离原则:在设计接口时要精简单一;
● 最少知识原则/迪米特法原则:要降低耦合度;
● 里氏替换原则:不能破坏继承体系;
● 合成复用原则:优先使用组合或聚合关系复用,少用继承关系复用;
软件设计的目标→诉求带来傻瓜式编程→软件工程师不再底层→技术下沉→后端开发
扩展和维护——软件设计的目标 |
软件工程师一直都在为这两个目标而努力奋斗—高内聚、低耦合,以求把软件编写得更加清晰、更加健壮、更加易于扩展和维护。 |
库/组件——诉求带来傻瓜式编程 |
但后来,人们发现有更多的诉求,希望开发软件变得更简单、更快捷,程序员希望更少编写代码,非专业人员也希望能开发程序,于是,更多的更傻瓜式的编程语言被发明出来,更多的编程技术和编程思想被发明出来,比如库、组件、云基础设施。 |
调参侠/用包能手/组装达人——软件工程师不再底层 |
于是很多技术变成了屠龙之技,比如汇编,时代变了,建国后动物不能成精了,没有龙可以宰了,然后很多软件工程师摇身一变成了调参工程师、Call API砖家、用库包能手、拼组件达人,这是效率分工的结果,也是技术发展的使然 |
技术下沉——降低业务开发技术含量 |
纵观近二十年的科技互联 发展历程,大的趋势是技术下沉。 特别是近些年,随着云计算的发展和普及,基础设施越来越厚实,业务开发变得越来越容易,也越来越没有技术含量。 而之前困扰小团队的性能、负载、安全性、扩展性问题都不复存在,这不禁让互联 行业的油腻大叔们噤若寒蝉,仿佛分分钟就要被卷入历史洪流而万劫不复。 |
诞生新工种—后端开发 |
虽然不可否认技术的重要性在降低,但也还不至于那么悲观。 遥想PC时代,当VB、Delphi、MFC出现的时候,也有类似论调,所见即所得,点点鼠标,就可以开发PC桌面程序,是不是很高端时候码农的担心相比现在恐怕是只多不少吧。 但后来随着互联 兴起,出现了后端开发这个工种,码农很快找到了新的战场, 络、分布式、数据库、海量服务、容灾防错,于是又玩出一堆新花样。 |
一个时代总有一个时代的活法 |
如果说PC时代的基础设施是控件库,互联 时代的基础实施是云,那AI时代基础设施是什么会有什么高端玩法/p> 我们需要加深对基础知识的理解,以不变应万变,深耕一个领域,同时也需要多去尝试新技术,扩宽自己的眼界,增加解决问题的思路 |
参考文章:后端技术趋势指南|如何选择自己的技术方向_极客重生的博客-CSDN博客
2、云原生的发展、演变
(1)、云原生的发展—开源 区(Docker/K8S)加速了转向云原生应用的步伐
(2)、云原生的演变—应用上云趋势+云计算三层的技术土壤→催云原生应用→但上云的应用需修改自身去适应“云”特点
随着虚拟化技术的成熟和分布式框架的普及,在容器技术、可持续交付、编排系统等开源 区的推动下,以及微服务等开发理念的带动下,应用上云已经是不可逆转的趋势。
云原生属于云计算的PaaS层服务,主要是面向开发者的一类应用。云原生必须在云上安装,是一种基于云计算的软件开发应用方式。
云原生借了云计算的东风,没有云计算,自然没有云原生,云计算是云原生的基础。云计算的三层划分(IaaS、PaaS、SaaS)为云原生提供了技术基础和方向指引。
真正的云化不仅仅是基础设施和平台的变化,应用也需要做出改变,摈弃传统的土方法,在架构设计、开发方式、部署维护等各个阶段和方面都基于云的特点,重新设计,从而建设全新的云化的应用,即云原生应用。
(3)、基于“云原生架构”应用程序的指导思想
符合云原生架构的应用程序应该是:采用开源堆栈(K8S+Docker)进行容器化,基于微服务架构提高灵活性和可维护性,借助敏捷方法、DevOps支持持续迭代和自动化运维,利用云平台设施实现弹性伸缩、动态调度、优化资源利用率。
3、为什么会出现云原生—软件应用要上云
虚拟化技术的成熟和分布式框架的普及,使应用上云不再是企业转型难题。
(1)、软件应用要上云
云原生,是软件应用在上云过程,为了适应云、用好云的一种技术架构;
(2)、软件设计的技术趋势和影响
参考—1、(5)、从云原生看软件设计的技术趋势和影响
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!