云原生这个词来自英语的Cloud Native的翻译,云原生是已经存多年在术语,真正开始获得关注的是在2015年到2016年。 这归因于这几年逐渐发布的Docker的兴起。 会有越来越多的企业和组织开始关注到它,并把他们的工作负载运行在云端的益处。无论是否会节省成本或者让开发操作变得更加简单,越来越多的企业开始关注是否应该追随这样一个潮流,把他们的应用部署到云端,而采用云原生技术。 关注这件事情,并且付诸行动的企业逐年增值,势头迅猛。
至此,乃至以后,云原生将会变得越来越流行。 通过通读文本的内容,你将知道理解什么是云原生技术,以及云原生技术的出现意味着什么,企业要不要切换到云原生技术,切换云原生技术所需要的基础和成本,以及获得的好处。
在未来,软件将会完全生长在云上。 这是云原生概念的一个假设。 生长在云端的软件最直接有效,最大的好处就是可以跨地域跨时空的访问云上的资源。最大程度的提升便利性,协作性,而基于云原生技术很容易构建高可用的软件生态。
如果要讨论云原生技术的生态。 那么需要把大量的技术放到台面上讲。 CNCF 云原生所涉及的项目超过200多个,这还仅仅是CNCF为此所作。 基于这样一个景观,当前的云原生技术包含如下方面:
中国政府层面, 国家不断出台政策,支持推进云原生的发展和普及,云原生基础设施是下一代政务云建设的核心。 国家提出“以数字化转型整体驱动生产方式、生活方式和治理方式变革”。工信部明确:新一代信息技术向制造业各领域加速渗透,实现企业经营管理数字化普及率达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领域的革命性与集装箱技术在运输领域的革命性非常相似。 具体地说,容器技术允许将应用程序定义为“自包含的”。只有这样,应用程序才能以灵活、可扩展和可复制的方式发布到云中,以发挥云功能。这也是容器技术对云的革命性影响。因此,容器技术是云原生技术的基石。
云原生技术包含如下以下方面:
经过对云原生技术范围的学习, 可以得出,云原生包含很多技术, 本质是相似的。 本质上,云原生技术基于两种理论:
“不可变基础设施”的概念反映了运行应用程序的基础设施正在向云发展。这里有一个对比。 在演进之前,传统的应用程序基础设施在大多数情况下是可变的。 例如发布或者更新应用程序, 你也许会经常通过SSH连接服务器来操作应用, 手动的升级,或者降级应用程序包, 在服务端调节配置文件顺序,或直接部署新的代码到存在的服务器上。 因此,在这种情况下,基础设施是不断调整和修改的。
相比之下,“云友好”应用程序基础设施在云中是不可变的。
在云上,应用程序的基础设施在应用程序部署后是稳定的。要更新应用程序,会更改公共映像以构建新服务以直接替换旧服务。 这样直接替换会被容器所支持,因为容器提供了自我包含的环境,而这个环境包含了应用程序运行的所有依赖。 因此应用程序不需要了解容器的变化或更改, 只需要修改容器镜像本身。总之,云友好型基础设施可能随时被替换,因为在云时代,应用程序基础设施的容器确保了敏捷性和一致性。
换句话说, 云时代的基础设施就像一只随时可能被替换的“草稿动物”,而传统的基础设施则是一只永远无法被替换,但需要小心呵护的独特“宠物”。这正是云时代不可变基础设施的优势所在。
基础设施向”不可变“演进过程所带来的好处:
此外,云原生基础设施允许以一种简单且可预测的方式部署和维护应用程序。有了映像和自包含的应用程序,基于映像运行的整个容器实际上可以在Kubernetes中操作,而自我维护。因此,整个应用程序是自包含的,这使得它可以迁移到云上的任何位置。这也有利于整个过程的自动化。
此外,不可变基础设施允许应用程序方便地从1个实例扩展到100个实例,甚至扩展到10,000个实例。这种向外扩展的过程在容器化的应用程序中很常见。最后,不可变的基础设施允许快速复制外围控制系统和支持组件。这归因于这样一个事实,即这些组件也是容器化的,并且符合不可变基础设施的理论。
为什么从2019年开始, 是云原生技术的普及年。
在2019年,云原生技术竞争,”三大国王中",谷歌的Kubernetes胜出。 拥有了统一的标准和规范。 此外,Kubernetes等云原生技术正在成为技术人员的必修课,大量相关工作正在涌现。
在这种情况下,“了解Kubernetes”是远远不够的。“理解Kubernetes”和“理解云原生架构”变得越来越重要。自2019年以来,云原生技术得到了大规模的广泛应用。这也是为什么现在每个人都想学习和投资云原生技术的一个重要原因。
云原生技术,为整个信息化行业带来了新的动力和可能性。 而云原生技术是构建云上应用的技术方法论。 而不添加任何业务相关的元素和概念。 因此自2019年以后,我们开始逐步探索,使用云原生理论,结合人类社会发展的社会形态,构建人与人,人与物,人与组织,组织与应用程序之间的关系,塑造更高维度,更加具象化的云原生形态,为此云晶-基于云原生技术的云上操作系统项目诞生: https://www.yunjingxz.com。
云原生的发展对人类信息化带来了许多价值。首先,它提供了更高的灵活性和可扩展性,使得应用程序能够更好地适应不断变化的业务需求。其次,它促进了开发和部署的快速迭代,使得企业能够更迅速地推出新功能和产品。此外,云原生采用了容器化和微服务架构,而微服务架构是软件开发过程中的一种最佳实践,可以提高应用程序的可靠性和可维护性,降低了系统故障的风险,降低了软件的复杂度。
对于企业来说,采用云原生可以带来许多好处。首先,它可以降低运维成本,通过自动化和资源的有效利用,减少了人力和硬件资源的浪费。其次,云原生可以提高开发团队的协作效率,使得不同团队能够独立开发和部署各自的微服务,从而加快了产品的上线速度。此外,采用云原生还能够提供更好的可扩展性和容错性,以应对用户需求的快速增长和系统的故障。
然而,采用云原生也存在一些弊端。首先,它对企业的技术团队和基础设施的要求较高,需要具备一定的技术储备和投入一定的成本。其次,由于采用了分布式架构,系统的复杂性增加,需要更多的监控和管理工作。另外,由于云原生应用的部署方式与传统应用不同,可能需要一些技术和流程的改变,对于一些传统的企业来说可能存在一定的转型难度。
对于技术管理,真正掌握了云原生的方法理论,结合微服务架构,以及理解领域驱动开发与实施(DDD开发模式)和掌握了面向对象程序设计方法。就可以灵活驾驭各种复杂的业务系统,管理和协调团队高效便捷工作。为企业未来带来了无尽价值和可能性。
总的来说,采用云原生可以为企业带来许多好处,提高了灵活性、可扩展性和可维护性,降低了成本和风险。然而,企业在决定是否采用这种技术时,需要综合考虑自身的情况和资源,并进行适当的规划和准备, 总归来说,除非你要开发一个简单的展示网页,并且用户访问量不高,否则任何应用都应该优先考虑使用云原生方法论。
有了云原生这套理论还不够。 总归它太抽象,太偏向于底层。 而不像Windows,MacOS在PC时代那么容易被人理解,以及Android和IOS在移动互联网时代那么直观。 而云原生时代,云原生理论的普及使得基于云端构造云上操作系统变得可能。 而云晶便是基于云原生理论和微服务架构理论,在云端,构建云上操作系统的一个设想和尝试。
很幸庆,经过多年的努力,我们终于开发出了云晶的V1版本,并基于云晶构造了多款云原生SaaS。其中drawon就是我们的一个作品之一, 一个云端可视化创意表达工具与知识共创作协分享平台(drawon.cn)。