云原生是整个信息化行业的未来,一文彻底搞懂云原生

云原生这个词来自英语的Cloud Native的翻译,云原生是已经存多年在术语,真正开始获得关注的是在2015年到2016年。 这归因于这几年逐渐发布的Docker的兴起。 会有越来越多的企业和组织开始关注到它,并把他们的工作负载运行在云端的益处。无论是否会节省成本或者让开发操作变得更加简单,越来越多的企业开始关注是否应该追随这样一个潮流,把他们的应用部署到云端,而采用云原生技术。 关注这件事情,并且付诸行动的企业逐年增值,势头迅猛。

至此,乃至以后,云原生将会变得越来越流行。 通过通读文本的内容,你将知道理解什么是云原生技术,以及云原生技术的出现意味着什么,企业要不要切换到云原生技术,切换云原生技术所需要的基础和成本,以及获得的好处。

在未来,软件将会完全生长在云上。 这是云原生概念的一个假设。 生长在云端的软件最直接有效,最大的好处就是可以跨地域跨时空的访问云上的资源。最大程度的提升便利性,协作性,而基于云原生技术很容易构建高可用的软件生态。

云原生技术的发展史

简述云原生技术发展的历史

  • 从2004年到2007年,谷歌就已经使用容器技术,例如 control groups(CGroups)这样的技术,贯穿企业。
  • 2008年,谷歌合并了Cgroups这个技术到Linux内核的主干分支。
  • 2013年,Docker项目正式启动, 是一家创业公司发起。
  • 2014年,Kubernetes项目官方启动。 很容易想象其原因。 当容器和Docker快速发展,在生产环境变得可用时。 工程师们需要很优雅的、便捷、快速的管理这些容器。Kubernetes被开发出来就是来精确的满足这类需求。 谷歌和红帽发布了kubernetes之后,该项目得到了魔幻般的增长速度。
  • 2015年, 云原生计算基金会(CNCF)成立。由顶尖的云计算公司主导,例如谷歌、红帽、微软、以及一些开源公司。 CNCF由22个成员创办, Kubernetes是CNCF成立后的第一个开源的发行版本。
  • 2017年,CNCF增长到170个成员,并且扩展到14个基金会项目。
  • 2018年, 在CNCF三周年,CNCF增长到195个成员, 拥有19个基金会项目, 其中11在孵化项目。 这样的增长速度在整个云计算领域是非常罕见的。

云原生技术当前的现状

如果要讨论云原生技术的生态。 那么需要把大量的技术放到台面上讲。 CNCF 云原生所涉及的项目超过200多个,这还仅仅是CNCF为此所作。 基于这样一个景观,当前的云原生技术包含如下方面:

  1. CNCF。
  2. 云原生技术社区。例如,在当今的云计算生态领域, 由超过20个官方项目被CNCF机构所主导。 在这些项目中, Kebernetes成为世界上第四个最具活跃的开源项目。
  3. Kubernetes到目前为止,世界上主要的公共云供应商都支持Kubernetes。此外,100多家科技初创企业正在对Kubernetes进行持续投资。

中国政府层面, 国家不断出台政策,支持推进云原生的发展和普及,云原生基础设施是下一代政务云建设的核心。 国家提出“以数字化转型整体驱动生产方式、生活方式和治理方式变革”。工信部明确:新一代信息技术向制造业各领域加速渗透,实现企业经营管理数字化普及率达80%,数字化研发设计工具普及率达85%,工业互联网平台普及率达45%。这一宏伟的目标,都需要借助于云原生技术来实现。

我们正处于云原生时代的关键时刻

我们都处在云原生技术的关键时刻。 2019年是云原生技术的元年。 为什么这么讲,下来逐渐解释。

在2013年, Docker项目正式发布。Docker项目使得沙箱技术(沙盒技术,可用简单的理解为应用程序自带运行环境,无需关注内部实现细节)得以普及,而这项技术能够让应用程序运行,无需修改,就可以运行在所有的操作系统上。 这项技术允许用户非常便利的,彻底的打包他们开发的应用程序,而无需依靠平台即服务(PaaS)的功能而允许开发者能够很简单的获取应用程序的最小可执行单元。 这实际上对传统的PaaS行业产生了不利的影响。从某种意义上,改变了云计算软件的开发方式和运维方式。 大大降低了开发成本甚至运维成本,增强了应用程序的健壮性等。

在2014年, Kubernetes项目启动, 对于谷歌,基于开源社区"重新构造" 它内部的 Borg和Omega系统和推崇这种”基于容器的设计模式“是有重大的意义的。实际上, 非常容易理解,为什么谷歌会间接的选择让Kubernetes开源而代替直接让Borg 项目开源的举动。 一个系统例如Borg或者 Omega内部非常复杂,在谷歌之外的团队,是很难被人理解和使用的。 但是Borg和Omega的设计思想是通过Kebernetes的开源项目而被开放出来。 这也是开源项目Kubernetes的重要背景。

而从2015到2016年,这又是容器编排技术的三大国王的年代,Docker, Swarm, Mesos, 而Kubernetes在容器编排领域与其他所有的技术相互竞争。 竞争的原因是显而易见的。 尽管Docker或容器本身具有巨大的价值,但它们在商业化或云计算方面缺乏价值。为了克服这一点,它们必须在编排中发挥有利的作用。而这两年,阿里巴巴在这一年,把宝压在Swarm上,而一度的开发了基于Swarm的调度平台。 而现如今这种平台几乎销声匿迹, 几乎被Kubernetes所统一。

Swarm和Mesos 具有强大的生态和技术。 Swarms就生态而言更加的强有力, 然而,Mesos就技术而言,更加的复杂。综合比较,Kubernetes 拥有两者之间的优势。 在2017年最终,在这三大国王的战斗中,Kubernetes 胜出了。 至此以后,Kubernetes 成为容器编排的标准。 一个典型的事件和进程,就是Docker官方宣布把Kubernetes嵌入到他们的核心产品中, Swarm的项目也逐渐的放弃运维。技术的发展和革新以及变化,让这个行业的大公司往往都措手不及,更何况在这个过程中不断学习的工程师

在2018年,云原生技术的概念开始出现, 这是因为Kubernetes 和容器已经成为云供应商的既定标准,“以云为中心”的软件研发理念逐渐形成

在2019年,形势变得越来越明朗。

什么是云原生,以及云原生如何实现?

定义云原生

很多人问:”到底什么是云原生,能否更精确的描述?“

实际上, 云原生就是最佳路径和实践。更详细的说,云原生为用户提供了以用户友好、灵活、可扩展和可复制的方式,利用云的功能和价值的最佳实践。

云原生技术是一种概念, 为软件架构设计,软件设计,软件开发和运维提供了引导和方法论。而基于这样的概念,有以下优势:

  • 首先, 它天然的”出生在云端, 生长在云端“。
  • 其次,与“云”自然融合,充分利用云的能力,充分发挥“云”的作用。

云原生技术最大的价值和视角是未来的软件出生以及生长进化都在云端,并且遵循软件开发、发布和运维的新模型,以确保软件最大限度地利用云功能。现在,让我们想想为什么容器技术是革命性的技术。

实际上,集装箱技术(容器技术)在IT领域的革命性与集装箱技术在运输领域的革命性非常相似。 具体地说,容器技术允许将应用程序定义为“自包含的”。只有这样,应用程序才能以灵活、可扩展和可复制的方式发布到云中,以发挥云功能。这也是容器技术对云的革命性影响。因此,容器技术是云原生技术的基石。

云原生的技术范围

云原生技术包含如下以下方面:

  • 云应用的定义和开发:这个过程包含了应用程序的定义,镜像的创建, 持续集成的配置,以及持续交付(CI/CD), 消息通信,流处理,以及数据库。
  • 云应用的编排和管理:这也是Kubernetes的重点。这个过程包含应用编排,调度,服务发现, 治理方式,远程调用,API网关,以及服务网络。
  • 监测和可观察性:这一部分强调,云应用如何被监控,记录日志, 以及跟踪,以及在云端如何实现破坏性测试。 这也是混沌工程学的概念。
  • 与原生的底层技术:例如容器运行时, 云原生存储技术, 云原生网络技术。
  • 与原生工具包:除了上述核心技术之外,还可以使用许多支持性生态系统或外围工具,例如,该工具包包括流程自动化和配置管理、容器映像存储库、云原生安全技术和基于云的密码管理。
  • 无服务(Serverless)计算: 无服务器是PaaS的一种特殊形式。 它定义了一个更加”极端和抽象“的理论为应用程序编写方法。 结合函数即服务(FaaS)或者”后端即服务BaaS“。 FaaS和BaaS最典型的特征就是“即付即用”按需伸缩。 对于云服务商,无服务器计费也很重要。

云原生两种理论或概念

经过对云原生技术范围的学习, 可以得出,云原生包含很多技术, 本质是相似的。 本质上,云原生技术基于两种理论:

  1. 不可变基础设施。这是目前被容器镜像所实现的。 不可变的基础设施意味着,应用程序的基础设施必须是不可变的, 自我包含的, 自我描述,完全有能力在不同的环境中迁移。这里的不可变。还有一点,确保应用程序水平扩展时,对用户是无感知的,扩展是动态的。
  2. 云应用的编排。 当前, 云原生技术是基于被谷歌所提议的”容器设计模式“而实现。这个概念,在Kubernetes 的文章中会得到讨论。

基础设施向云的演进

“不可变基础设施”的概念反映了运行应用程序的基础设施正在向云发展。这里有一个对比。 在演进之前,传统的应用程序基础设施在大多数情况下是可变的。 例如发布或者更新应用程序, 你也许会经常通过SSH连接服务器来操作应用, 手动的升级,或者降级应用程序包, 在服务端调节配置文件顺序,或直接部署新的代码到存在的服务器上。 因此,在这种情况下,基础设施是不断调整和修改的。

相比之下,“云友好”应用程序基础设施在云中是不可变的。

在云上,应用程序的基础设施在应用程序部署后是稳定的。要更新应用程序,会更改公共映像以构建新服务以直接替换旧服务。 这样直接替换会被容器所支持,因为容器提供了自我包含的环境,而这个环境包含了应用程序运行的所有依赖。 因此应用程序不需要了解容器的变化或更改, 只需要修改容器镜像本身。总之,云友好型基础设施可能随时被替换,因为在云时代,应用程序基础设施的容器确保了敏捷性和一致性。

换句话说, 云时代的基础设施就像一只随时可能被替换的“草稿动物”,而传统的基础设施则是一只永远无法被替换,但需要小心呵护的独特“宠物”。这正是云时代不可变基础设施的优势所在。

基础设施向云演进的好处

基础设施向”不可变“演进过程所带来的好处:

  1. 基础设施是一致和可靠的。这点至关重要。 相同的镜像在不同的国家和地区完全相同,并且对于所有的应用程序都是一样的。 因此,应用程序不需要关注容器在什么地方运行。 这就是基础设施一致性的意义所在。
  2. 镜像在云原生技术中是自我包含, 包含了所有其需要运行的依赖。这也是映像迁移到云上任何位置的原因。

此外,云原生基础设施允许以一种简单且可预测的方式部署和维护应用程序。有了映像和自包含的应用程序,基于映像运行的整个容器实际上可以在Kubernetes中操作,而自我维护。因此,整个应用程序是自包含的,这使得它可以迁移到云上的任何位置。这也有利于整个过程的自动化。

此外,不可变基础设施允许应用程序方便地从1个实例扩展到100个实例,甚至扩展到10,000个实例。这种向外扩展的过程在容器化的应用程序中很常见。最后,不可变的基础设施允许快速复制外围控制系统和支持组件。这归因于这样一个事实,即这些组件也是容器化的,并且符合不可变基础设施的理论。

2019——云原生技术普及年

为什么从2019年开始, 是云原生技术的普及年。

在2019年,云原生技术竞争,”三大国王中",谷歌的Kubernetes胜出。 拥有了统一的标准和规范。 此外,Kubernetes等云原生技术正在成为技术人员的必修课,大量相关工作正在涌现。

在这种情况下,“了解Kubernetes”是远远不够的。“理解Kubernetes”和“理解云原生架构”变得越来越重要。自2019年以来,云原生技术得到了大规模的广泛应用。这也是为什么现在每个人都想学习和投资云原生技术的一个重要原因。

云原生技术,为整个信息化行业带来了新的动力和可能性。 而云原生技术是构建云上应用的技术方法论。 而不添加任何业务相关的元素和概念。 因此自2019年以后,我们开始逐步探索,使用云原生理论,结合人类社会发展的社会形态,构建人与人,人与物,人与组织,组织与应用程序之间的关系,塑造更高维度,更加具象化的云原生形态,为此云晶-基于云原生技术的云上操作系统项目诞生: https://www.yunjingxz.com。

云原生对人类社会带来的价值

云原生的发展对人类信息化带来了许多价值。首先,它提供了更高的灵活性和可扩展性,使得应用程序能够更好地适应不断变化的业务需求。其次,它促进了开发和部署的快速迭代,使得企业能够更迅速地推出新功能和产品。此外,云原生采用了容器化和微服务架构,而微服务架构是软件开发过程中的一种最佳实践,可以提高应用程序的可靠性和可维护性,降低了系统故障的风险,降低了软件的复杂度。

对于企业来说,采用云原生可以带来许多好处。首先,它可以降低运维成本,通过自动化和资源的有效利用,减少了人力和硬件资源的浪费。其次,云原生可以提高开发团队的协作效率,使得不同团队能够独立开发和部署各自的微服务,从而加快了产品的上线速度。此外,采用云原生还能够提供更好的可扩展性和容错性,以应对用户需求的快速增长和系统的故障。

然而,采用云原生也存在一些弊端。首先,它对企业的技术团队和基础设施的要求较高,需要具备一定的技术储备和投入一定的成本。其次,由于采用了分布式架构,系统的复杂性增加,需要更多的监控和管理工作。另外,由于云原生应用的部署方式与传统应用不同,可能需要一些技术和流程的改变,对于一些传统的企业来说可能存在一定的转型难度。

对于技术管理,真正掌握了云原生的方法理论,结合微服务架构,以及理解领域驱动开发与实施(DDD开发模式)和掌握了面向对象程序设计方法。就可以灵活驾驭各种复杂的业务系统,管理和协调团队高效便捷工作。为企业未来带来了无尽价值和可能性。

总的来说,采用云原生可以为企业带来许多好处,提高了灵活性、可扩展性和可维护性,降低了成本和风险。然而,企业在决定是否采用这种技术时,需要综合考虑自身的情况和资源,并进行适当的规划和准备, 总归来说,除非你要开发一个简单的展示网页,并且用户访问量不高,否则任何应用都应该优先考虑使用云原生方法论。

有了云原生这套理论还不够。 总归它太抽象,太偏向于底层。 而不像Windows,MacOS在PC时代那么容易被人理解,以及Android和IOS在移动互联网时代那么直观。 而云原生时代,云原生理论的普及使得基于云端构造云上操作系统变得可能。 而云晶便是基于云原生理论和微服务架构理论,在云端,构建云上操作系统的一个设想和尝试。

很幸庆,经过多年的努力,我们终于开发出了云晶的V1版本,并基于云晶构造了多款云原生SaaS。其中drawon就是我们的一个作品之一, 一个云端可视化创意表达工具与知识共创作协分享平台(drawon.cn)。

你可能感兴趣的:(云原生,云原生,k8s,kubernetes)