什么是云原生

Z, ZLW 403

云原生(Cloud Native)架构和技术是一种设计、构建和操作构建在云中,并充分利用云计算模型的工作负载的方法。‎云原生有6大支柱,分别是:1、云端;2、设计架构;3、微服务;4、容器;5、后端服务;6、自动化。云原生系统充分利用了云服务模型,在动态的虚拟化云环境中蓬勃发展。

一、云原生是什么?

云原生架构和技术是一种设计、构建和操作构建在云中,并充分利用云计算模型的工作负载的方法。

云原生技术使组织能够在现代动态环境(如公共云、私有云和混合云)中构建和运行可扩展的应用程序。容器、服务网格、微服务、不可变基础结构和声明性 API 就是这种方法的例证。‎

这些技术使松散耦合的系统具有弹性、可管理性和可观察性。与强大的自动化相结合,它们允许工程师以最小的工作量频繁且可预测地进行高影响的更改。

二、云原生的支柱

云原生的速度和敏捷性来自许多因素,最重要的是云基础设施。6大支柱如下:

  • 云端
  • 现代设计
  • 微服务
  • 容器
  • 后端服务
  • 自动化

1、云端

云原生系统充分利用了云服务模型。

这些系统旨在在动态的虚拟化云环境中蓬勃发展,广泛使用平台即服务 (PaaS)计算基础架构和托管服务。他们将底层基础设施视为一次性的——通过自动化在几分钟内配置并按需调整大小、扩展或销毁。

2、设计架构

您将如何设计云原生应用程序?你的架构会是什么样子?您会遵循哪些原则、模式和优异实践?哪些基础设施和运营问题很重要?

十二因素应用

一种被广泛接受的用于构建基于云的应用程序的方法是十二因素应用程序。它描述了开发人员在构建针对现代云环境优化的应用程序时遵循的一组原则和实践。特别关注跨环境的可移植性和声明式自动化。

虽然适用于任何基于 Web 的应用程序,但许多从业者认为十二因素是构建云原生应用程序的坚实基础。基于这些原则构建的系统可以快速部署和扩展,并添加功能以快速响应市场变化。

3、微服务

云原生系统包含微服务,这是一种用于构建现代应用程序的流行架构风格。

微服务构建为一组通过共享结构进行交互的分布式小型独立服务,具有以下特征:

  • 每个都在更大的域上下文中实现特定的业务能力。
  • 每个都是自主开发的,可以独立部署。
  • 每个都是自包含的,封装了自己的数据存储技术、依赖项和编程平台。
  • 每个都在自己的进程中运行,并使用标准通信协议(例如 HTTP/HTTPS、gRPC、WebSockets 或AMQP )与其他进程通信。
  • 它们组合在一起形成一个应用程序。

为什么使用微服务?

微服务提供敏捷性。它有以下这些明显的好处:

  • 每个微服务都有一个自治的生命周期,可以独立发展和频繁部署。您不必等待季度发布来部署新功能或更新。您可以更新实时应用程序的一小部分区域,从而降低破坏整个系统的风险。无需完全重新部署应用程序即可进行更新。
  • 每个微服务都可以独立扩展。您无需将整个应用程序扩展为一个单元,而是仅扩展那些需要更多处理能力以满足所需性能级别和服务级别协议的服务。细粒度扩展可以更好地控制您的系统,并有助于在扩展系统的部分而不是所有部分时降低总体成本。

微服务带来的挑战

虽然分布式云原生微服务可以提供巨大的敏捷性和速度,但它们也带来了许多挑战:

沟通

前端客户端应用程序将如何与后端核心微服务通信?你会允许直接沟通吗?或者,您是否可以使用提供灵活性、控制和安全性的网关外观来抽象后端微服务?

后端核心微服务将如何相互通信?您是否允许可以增加耦合并影响性能和敏捷性的直接 HTTP 调用?或者您是否可以考虑使用队列和主题技术解耦消息?

弹性

微服务架构将您的系统从进程内移动到进程外网络通信。在分布式架构中,当服务 B 没有响应来自服务 A 的网络调用时会发生什么?或者,当服务 C 暂时不可用并且调用它的其他服务被阻塞时会发生什么?

分布式数据

根据设计,每个微服务都封装了自己的数据,通过其公共接口公开操作。如果是这样,您如何查询数据或跨多个服务实现事务?

隐私

您的微服务将如何安全地存储和管理机密和敏感配置数据?

4、容器

在任何云原生对话中提到容器这个术语是很自然的。在《云原生模式》一书中,作者 Cornelia Davis 观察到,“容器是云原生软件的重要推动者。” Cloud Native Computing Foundation 将微服务容器化作为其Cloud-Native Trail Map的名列前茅步——为企业开始其云原生之旅提供指导。

容器化微服务简单明了。代码、它的依赖项和运行时被打包到一个称为容器映像的二进制文件中。映像存储在容器注册表中,该注册表充当映像的存储库或库。注册表可以位于您的开发计算机、数据中心或公共云中。Docker 本身通过Docker Hub维护一个公共注册表。Azure 云具有一个私有容器注册表,用于将容器映像存储在将运行它们的云应用程序附近。

当应用程序启动或扩展时,您将容器映像转换为正在运行的容器实例。该实例在任何安装了容器运行时引擎的计算机上运行。您可以根据需要拥有尽可能多的容器化服务实例。

为什么是容器?

容器提供可移植性并保证跨环境的一致性。通过将所有内容封装到一个包中,您可以微服务及其依赖项与底层基础设施隔离开来。

您可以在托管 Docker 运行时引擎的任何环境中部署容器。容器化工作负载还消除了使用框架、软件库和运行时引擎预先配置每个环境的费用。

通过共享底层操作系统和主机资源,容器的占用空间比完整的虚拟机小得多。较小的尺寸会增加给定主机一次可以运行的微服务的密度或数量。

5、后端服务

云原生系统依赖于许多不同的辅助资源,例如数据存储、消息代理、监控和身份服务。这些服务称为后端服务。

您可以托管自己的支持服务,但随后您将负责许可、配置和管理这些资源。

云提供商提供种类繁多的托管支持服务。您无需拥有该服务,而是简单地使用它。云提供商大规模运营资源,并承担性能、安全和维护的责任。监控、冗余和可用性内置于服务中。

云原生系统偏爱来自云供应商的托管支持服务。时间和劳动力的节省可能是显着的。托管自己的运营风险并遇到麻烦可能会很快变得昂贵。

6、自动化

云原生系统采用微服务、容器和现代系统设计来实现速度和敏捷性。但是,这只是故事的一部分。您如何配置运行这些系统的云环境?您如何快速部署应用功能和更新?你如何完善整个画面?

进入广泛接受的基础设施即代码实践,或 IaC。

使用 IaC,您可以自动执行平台配置和应用程序部署。您基本上将软件工程实践(例如测试和版本控制)应用于您的 DevOps 实践。您的基础架构和部署是自动化的、一致的和可重复的。

三、云原生的优缺点

优势‎

  • ‎与传统的整体式应用程序相比,云原生应用程序可以更容易管理,因为使用敏捷和‎‎DevOps‎‎流程进行迭代改进。‎
  • ‎云原生应用程序由单个微服务组成,可以逐步自动改进,以不断添加新的和改进的应用程序功能。‎
  • ‎可以非侵入式地进行改进,而不会造成停机或最终用户体验中断。‎
  • ‎事实证明,借助支持云原生应用的弹性基础架构,可以更轻松地进行纵向扩展或缩减。‎
  • ‎云原生开发流程与当今业务环境所需的速度和创新更紧密地匹配。‎

‎弊端

  • ‎尽管微服务支持迭代方法来改进应用程序,但它们也产生了管理更多元素的必要性。与其说是一个大型应用程序,不如管理更小的离散服务。‎
  • ‎云原生应用需要其他工具集来管理 DevOps 管道、替换传统的监视结构以及控制微服务体系结构。‎
  • ‎云原生应用程序允许快速开发和部署,但它们也需要一种能够应对创新步伐的业务文化。‎

四、云原生的开发原则

无论是创建新的云原生应用程序还是对现有应用程序进行现代化改造,开发人员都遵循一套一致的原则:‎

  • ‎遵循微服务体系结构方法:‎‎将应用程序分解为称为微服务的单一功能服务。微服务是松散耦合的,但保持独立,允许对应用程序进行增量、自动化和持续改进,而不会造成停机。‎
  • ‎依靠容器获得最大的灵活性和可扩展性:‎‎容器将软件及其所有代码和依赖项打包在一个地方,允许软件在任何地方运行。这允许在‎‎多云‎‎环境中实现最大的灵活性和可移植性。容器还允许使用用户定义的 ‎‎Kubernetes‎‎ 编排策略快速扩展或缩减。‎
  • ‎采用敏捷方法:‎‎敏捷方法加快了创建和改进过程。开发人员可以根据用户反馈快速迭代更新,从而使工作应用程序版本尽可能接近最终用户的期望。‎

推荐阅读:

5大微服务架构 | 微服务架构的4大优势 | 云计算的4大部署模式 | 容器云是什么

回复

我来回复
  • 暂无回复内容

注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部