【趣味科普】原来拥有云原生,就等于有了“大别墅”!

随着科技的迅猛发展,云计算成为当今企业和个人广泛采用的先进技术。而在云计算的浪潮中,一个重要的概念逐渐崭露头角,那就是“云原生”。现在越来越多的人开始谈云原生,你可能在生活中频繁地听说这个词,或者你正在从事相关的工作,但真要让你说出云原生究竟是什么,可能一下子还真的很难说清楚。

什么是云原生?

云原生,全称Cloud-Native,是一个组合词,顾名思义就是云 + 原生。

“云”表示应用程序运行于分布式云环境中。

“原生”表示应用程序在设计之初就充分考虑到了云平台的弹性和分布式特性,就是为云设计的。

其实也难怪大家对云原生不够了解,近年来云原生一直在发展变化之中,不同企业或个人,对云原生的理解也不相同。

云原生并不是某种技术、框架或者软件,而是一套构建和运行应用程序的方法,是一套技术体系或方法论。

2013年Pivotal公司的Matt Stine首次提出了云原生(Cloud-Native)的概念。

2015年,Matt Stine在《迁移到云原生架构》(Migrating to Cloud-Native Application Architectures)一书中定义了符合云原生架构的几个特征:DevOps、持续交付、微服务(MicroServices)、敏捷基础设施(Agile Infrastructure)和12要素(The Twelve-Factor App)等等。


Pivotal最新官网将云原生概括为4个要点:DevOps+持续交付+微服务+容器。

2015年,Google、Redhat 以及微软等大型云计算厂商以及一些开源公司共同牵头成立了云原生计算基金会(CNCF,Cloud Native Computing Foundation),把云原生的定义主要概括为三个方面:容器化封装、面向微服务架构、应用支持容器的编排调度。

2018年,随着云原生生态的壮大,CNCF又更新了云原生的定义,在原有基础上加入了服务网格(Service Mesh)和声明式API。

CNCF对云原生的定义:

云原生技术有利于各组织在公有云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用。云原生的代表技术包括容器、服务网格、微服务、不可变基础设施和声明式API。这些技术能够构建容错性好、易于管理和便于观察的松耦合系统。结合可靠的自动化手段,云原生技术使工程师能够轻松地对系统做出频繁和可预测的重大变更。

单这么看定义,还是觉得很官方,有一种乍一看我懂了,但实际上好像又没懂的感觉。

只要是包含了上述要素的就是云原生了吗?

实际上,云原生的关键,不是在哪里部署应用,而是如何构建应用。

举个例子,如果还是用传统应用的开发方式,自己买了服务器部署在自己的机房,然后安装对应的操作系统和应用,上面部署了容器,然后用Kubernetes来管理,那就是云原生吗?

并不是,因为它缺乏弹性、API自动化部署和运维的能力。应用的构建思维还是用传统方法,并没有发挥云服务的优势。

云原生,更看重的是应用的弹性,业务敏捷度、扩容性、开发持续交付等,这些都指向一个灵活、弹性。与传统开发的固化,死板相对应。即,能够做到灵活、弹性、持续,这才称得上云原生。

下面用一个比喻来简单介绍一下云原生的关键特点,帮助大家理解这个看似复杂的概念。

想象一下,你要设计一座豪华大别墅。云计算就像是一座现代化的城市,提供了所有必要的基础设施,如道路、水电、天然气等。你只需在城市中购买一块土地,然后在上面建造你的别墅。

而云原生就是你的别墅,它充分利用了云计算的基础设施和服务,并且采用了一系列先进的建造和管理技术,即容器化、微服务架构、动态编排、DevOps实践。

容器化:容器就像是一种移动的房屋模块,包含了你别墅的所有必需品,如墙壁、门窗、家具等。你可以将这些容器化的模块制作好,然后组装起来。容器化是云原生的基石,它将应用程序与其依赖项和配置信息一起打包,使得应用程序能够在不同的环境中一致地部署和运行。

微服务架构:微服务就像是别墅里的不同房间,各自独立、功能明确,有的负责接收外部的数据,有的负责响应前台的操作……其中一个出问题了,其它的还能正常对外提供服务。云原生应用由一系列小而独立的服务组成。每个服务专注于特定的业务功能,可以独立扩展和管理。这种架构使得应用程序更加灵活、易于维护。微服务之间通过轻量级的通信机制进行交互,实现了松耦合和高内聚,使得应用程序更容易开发、测试、部署和维护。

动态编排:大别墅都有了,必须要再配备一个智能的管家,能够自动化管理各种任务,如清洁、修理等。在云原生世界里,这个管家就是容器编排系统,比如Kubernetes。它负责动态调度和管理容器化的应用程序,自动化任务如容器部署、扩展、负载均衡和自愈,确保应用程序高可用和资源利用率。

DevOps实践:想要别墅的建造能够顺利进行,就少不了设计师和建筑工人之间的紧密合作,就像云原生开发和运维团队之间的协作和自动化。通过自动化的持续集成/持续部署(CI/CD)流程,实现快速交付和频繁的软件更新。DevOps实践使得开发和运维之间的协作更加高效,加快了应用程序的迭代和发布速度。

云原生架构组件

云原生架构结合了开发团队用来构建和运行可扩展的云原生应用程序的软件组件。CNCF 将不可变基础设施、微服务、声明式 API、容器和服务网格列为云原生架构的技术块。

微服务

构建云原生应用的最重要原则之一是摆脱单体应用设计。这就是为什么你有时会看到云原生架构等同于使用微服务。将应用程序开发为一组较小的、松耦合的独立元素确实是云原生方法论的基础之一。然而,微服务只是其中涉及的核心组件之一,云原生架构是一个更广泛的术语。

微服务之所以如此重要,是因为它们确保了应用程序的敏捷性。将一个应用程序构建为许多服务,每个服务都有许多特定的特征。每个微服务都是独立设计、开发和部署的,并使用 API 与其他服务通信,组成一个应用协同工作。微服务具有高度可维护性和可测试性。可以使用不同的技术,最好是单独的团队来处理每个服务,这样可以促进使用更好、更合适的解决方案并缩短开发时间。

由于每个微服务与其他元素是松耦合的,如果一个服务停止工作,其余部分不会脱机。这也可以帮助企业安全地添加新功能或更新现有功能。

声明式 API

尽管微服务作为自治单元工作,但它们必须进行通信以确保应用程序按计划运行。云原生应用通常使用轻量级声明式 API(application programming interfaces)在微服务之间交换数据。通过使用声明式 API 你只需要知道端点以及你想要用它做什么,无需了解整个后端架构。

此外,系统本身可以决定如何实现某个最终状态,你只需要指定它,而不用手动配置所有的 API 属性。这降低了犯重大错误的风险。

声明式 API 允许你控制和跟踪应用程序的状态,包括快速回滚更改并在必要时恢复以前的状态。在应用程序中使用它们可确保维护有效的版本控制和可扩展性。

服务网格

任何成功的云原生应用都必须具备的另一个组件是服务网格。这是一个软件层,专门用于控制微服务之间的通信并确保其安全。这对于拥有数千个服务的大型企业应用尤其重要,因为随着服务之间的请求数量增长,确保应用程序性能始终保持高水平变得越来越复杂。

服务网格管理流量路由和负载平衡,优化数据流,以便微服务继续有效通信。它还支持服务发现(services discovery),以增强其可见性。

服务网格是应用安全的重要组成部分,用于加密通信和执行身份验证。它对于监控目的也至关重要,它可以收集服务日志和遥测数据,然后用于故障排除和解决问题。服务网格通过为微服务通信提供一致的接口,使DevOps团队更容易构建和管理分布式应用程序。

容器

对于云原生应用来说,容器是最小的计算单元。CNCF将微服务的容器化视为迈向云原生之路的第一步。容器映像是一个二进制包,其中包含应用程序代码及其运行时和依赖项。有多个存储库可用于存储容器镜像,包括私有的和公共的。任何有权访问这些容器注册表的人都可以使用该映像在多个不同主机上的容器实例中运行应用程序,而无需为其预先配置环境。

容器是保证应用程序可移植性的好方法。Docker 镜像本身包含运行应用程序所需的系统,因此它可以在多个不同的操作系统上流畅运行。

此外,与虚拟机不同,容器使用的资源要少得多。多个容器可以在同一台主机上运行,并共享相同的内存、处理器和操作系统。

像 Kubernetes 这样的特殊容器编排工具还可以简化和自动化容器管理,帮助扩展和监控云原生应用,无需任何停机时间即可升级或更改,启用微服务之间的通信,并完成许多其他任务,而无需大量的手动编码。

不可变基础设施

不可变基础设施是云原生架构中的一项关键实践,它通过自动化部署、不可变性和快速替换的原则来改变基础设施的管理方式。基于不可变性的思想,每次部署或变更都会创建全新的基础设施实例,而不是直接修改现有实例。这种方法确保了基础设施的一致性和可预测性,减少了手动配置引入的错误和差异。

不可变基础设施具有许多优势。首先,它提高了可靠性和可重复性,通过将基础设施配置纳入代码管理,可以确保每次部署都是一致的,降低了因人为错误而引发的问题。其次,不可变云基础设施具备快速替换的能力,当需要变更或修复时,可以迅速创建新的基础设施实例并进行切换,以实现平滑的过渡和无缝的更新。

此外,不可变基础设施还提供了更高的安全性。由于基础设施实例不可变,减少了潜在的人为错误和安全漏洞。同时,快速替换基础设施实例也能够快速响应安全事件或漏洞的修复需求。

云原生架构的优缺点

云原生架构具有以下优点:

弹性和可伸缩性:云原生架构能够根据负载需求自动进行弹性扩展和收缩,以适应不断变化的流量和资源需求。它允许应用程序快速响应业务需求并提供高性能和可靠性。

敏捷开发和部署:云原生架构采用容器化和微服务架构,使得应用程序的开发、测试和部署更加敏捷和灵活。容器化能够提供一致性的运行环境,而微服务架构使团队能够独立开发和部署不同的服务单元,加快了开发周期和发布频率。

可移植性和跨平台性:云原生架构通过容器化实现了应用程序的可移植性,使得应用程序能够在不同的云平台或私有数据中心中运行。这种跨平台性使得组织能够更灵活地选择合适的基础设施和服务提供商。

高可用性和容错性:云原生架构借助容器编排和动态资源管理工具,如Kubernetes,提供了高可用性和容错性。它能够自动管理容器的健康状态,监控和恢复故障容器,并提供负载均衡和故障转移机制,从而保障系统的可靠性和可用性。

成本效益:云原生架构通过资源的有效利用和弹性扩展,能够降低基础设施的成本。它允许根据需求动态分配和释放资源,避免了资源浪费和过度采购的问题。

然而,云原生架构也存在一些潜在的缺点和挑战:

技术复杂性:云原生架构需要团队具备一定的技术能力和知识,包括容器技术、编排工具和微服务架构。这对于没有相关经验的团队来说可能需要时间和资源投入。

系统复杂性和运维挑战:云原生架构的系统通常由许多微服务组成,增加了系统的复杂性。对于运维团队来说,需要确保各个微服务之间的通信和协作正常运行,并进行适当的监控、日志收集和故障排查。

安全性和隐私保护:云原生架构中的容器化和微服务带来了新的安全挑战。容器的安全性需要得到保证,以防止潜在的容器逃逸或容器漏洞被利用。另外,微服务架构的部署方式可能涉及跨网络的通信,需要采取适当的安全措施来保护数据的隐私和完整性。

增加了基础设施成本:云原生架构通常需要运行在云平台或私有数据中心的基础设施上。这意味着组织需要投资于基础设施的建设和运维,包括服务器、网络、存储等。对于小型组织或预算有限的企业来说,增加了一定的成本负担。

依赖于云服务提供商:使用云原生架构意味着依赖云服务提供商的基础设施和工具。这可能会导致一定的供应商锁定问题,使得切换云服务提供商变得困难。此外,对于某些敏感数据和合规性要求较高的应用,可能需要额外的努力来确保数据的安全性和合规性。

尽管云原生架构带来了许多优势,但企业在实施过程中也需要考虑这些潜在的缺点,并做好相应的规划和准备。

云原生的实践和案例

云原生的理念不仅停留在理论层面,许多组织和企业已经开始实践云原生架构,取得了显著的成果。

阿里云在云原生领域有着丰富的实践经验。阿里云的云原生实践主要基于其自主研发的容器编排系统,如阿里云容器服务ACK(Alibaba Cloud Container Service for Kubernetes),并借助微服务架构、DevOps工具链等,为用户提供高性能、高可靠性的云计算服务;腾讯云原生平台基于Kubernetes构建,提供弹性扩展、高可用性和灵活性的云计算服务。腾讯通过云原生架构来支持其众多的在线服务,如微信、QQ、腾讯视频等,确保服务的稳定性和可靠性;字节跳动通过云原生架构和容器技术,构建了高度可扩展的云平台,为其广泛的移动应用和在线服务提供支持,如今日头条、抖音、TikTok等。国内外还有许多优秀的云原生实践案例。

电商平台

电商行业是一个高度竞争的领域,云原生架构为电商平台提供了弹性扩展和高可用性的解决方案。例如,完美日记为保障“双 11”“双 12”购物节商城系统稳定顺畅,采用了阿里云原生应用稳定性解决方案以解决业务问题。通过引入阿里云容器服务 ACK、Spring Cloud Alibaba、PTS、AHAS、链路追踪等配套产品,对应用进行容器化改造部署,优化配套的测试、容量评估、扩所容等研发环节,提升产研效率。

金融领域

金融机构需要处理大量的交易数据和敏感信息,因此安全性和可靠性是关键。云原生架构为金融领域提供了强大的基础设施。例如,PayPal是一个以云原生为基础的在线支付系统,它利用容器化和动态编排来处理大量的交易请求,并确保系统的可靠性和安全性。

物联网和智能家居

物联网和智能家居领域涉及到大规模设备的互联和实时数据处理。云原生架构提供了弹性和可伸缩性来应对这些挑战。例如,谷歌的智能家居平台Google Nest和亚马逊的Alexa利用云原生技术,通过微服务和容器化来实现智能设备之间的互联和数据处理,提供个性化的智能家居体验。

开源社区和企业

开源社区在云原生领域起到了重要的推动作用。Kubernetes作为CNCF的旗舰项目,被广泛应用于各行各业。许多企业也在实践云原生架构,这些企业借助云原生架构实现了高度可靠、可伸缩和灵活的应用程序,提供了出色的用户体验和业务增长。

这些案例只是云原生实践的一小部分,实际上,任何需要高可用性、弹性扩展和快速交付的应用场景都可以从云原生架构中受益。云原生的实践并不是一蹴而就的过程,它需要组织的文化和技术上的变革,但随着云原生技术和工具的不断发展,越来越多的组织将会探索和采用云原生架构来推动业务创新和发展。

展望未来

随着云计算、容器化和微服务的持续发展,云原生将成为构建和部署应用程序的主流方法。未来,云原生架构将进一步演化和成熟,技术生态系统将更加丰富,为开发人员和组织提供更多选择和工具。同时,云原生架构将与人工智能、机器学习、边缘计算等前沿技术相融合,实现更智能、高效和可靠的应用交付。行业和组织将逐渐意识到云原生架构的价值,并将其应用于不同领域和行业解决方案中。

参考:
https://mp.weixin.qq.com/s/4rYCm4McE9d1vhzPTGj6dQ
https://blog.csdn.net/GBS20200720/article/details/123099783
https://www.zhihu.com/question/63927805?sort=created
https://codilime.com/blog/cloud-native-architecture/
https://blog.csdn.net/weixin_51702416/article/details/125584927


  • 本站原创文章仅代表作者观点,不代表SDNLAB立场。所有原创内容版权均属SDNLAB,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用,转载须注明来自 SDNLAB并附上本文链接。 本站中所有编译类文章仅用于学习和交流目的,编译工作遵照 CC 协议,如果有侵犯到您权益的地方,请及时联系我们。
  • 本文链接https://www.sdnlab.com/26218.html
分享到:
相关文章
条评论

登录后才可以评论

SDNLAB君 发表于23-06-02
2