什么是云原生?是炒作还是软件开发的未来?

随着近年来云计算的普及,其中一个迅速传播的词就是云原生。那么实现这个云原生有什么好处呢?

云原生一词的诞生自近年来 IaaS、PaaS、SaaS 等云服务已经普及,在 IT 系统建设中以云为默认选项的『默认云原则』在不同系统中得到提倡。目前技术发展的趋势已经不是说是否考虑使用云服务,而是在讨论如何使用云服务的阶段。

最早在 2000 年代中期云服务计算出现时,就假设系统和应用程序将在本地环境中运行。在云服务的早期有很多情况下在本地环境中运行的系统被云服务取代。从那时起云的使用进一步发展,系统的设计使其优势可以最大化,但是有个重要的前提就是系统从最开始就使用云服务。
在这里插入图片描述

在描述这种基于云的架构时被称为云原生。但是一开始并没有明确定义云原生的含义。

云原生计算基金会(CNCF)成立于 2015 年,是 Linux 基金会的一个子基金会,云原生的标准定义正在制定中。在众多社区和厂商对 CNCF 的支持下,可以说 CNCF 的定义获得了公民权。

CNCF 对云原生的中文定义如下
在这里插入图片描述

云原生的优点

云计算的具体优势包括以下几点:

  1. 不必拥有自己的基础架构,可以将运营的人力成本和系统故障风险转移。
  2. 按需获取所需资源,资源可以随意扩展或收缩。
  3. 加快环境建设建。

除此之外 CNCF 云原生定义还提到『云原生技术使工程师能够轻松地对系统作出频繁和可预测的重大变更』。随着商业和社会环境的变化,系统和应用程序的变化需要频繁而迅速地进行。即使有变化也必须保持可用性和可靠性等质量。

遵循云原生思维的应用程序被设计为小型服务的集合,而不是巨大的单体构建。各个服务通过标准化接口松散耦合,一项服务的更改不会影响整个应用程序。此外即使由于请求集中导致处理负载增加,也很容易使服务冗余。还可以通过自动管理系统的运行状态并自动从问题中恢复来保持可用性和可靠性。

这种云原生的技术通过容器实现,微服务作为一种架构来利用。

推进云原生化

在这里插入图片描述
Cloud Native Trail Map 显示了 CNCF 为成为云原生所采取的步骤。

Cloud Native Trail Map

  1. 容器化
  2. CI / CD
  3. 编排和应用程序定义
  4. 可观察性和分析
  5. 服务代理、发现和网格
  6. 网络和策略
  7. 分布式数据库/分布式存储
  8. 流式传输和消息传递
  9. 容器注册和运行时
  10. 软件分发

云原生化的三步

在这里插入图片描述

容器化

在这里插入图片描述
容器是虚拟环境之一,是一种在一个操作系统上创建多个执行环境的技术。与使用虚拟机的虚拟化不同,不通过直接系统操作,因此可以创建更简易的环境。到目前为止从技术上讲 Docker 容器是最流行的。

一般地一个进程在一个容器中执行。因此在设计应用程序时,将构成应用程序的功能和服务划分为容器。换句话说容器化意味着创建一个具有复杂的组件和服务配置的应用程序,而不是一个单一的应用程序。

CI/CD

CI/CD 代表持续集成/持续交付,是指构建一个软件开发环境,允许可重复的源代码修改、容器构建、测试、应用到每个环境并发布到生产环境。

以前这些任务都是按照程序手册手动执行的,或者使用复杂而奇怪的脚本。但是以这些方式频繁的更改可能会导致可能危及系统可靠性和可用性。

CI/CD 机制可以实现交付流水线的自动化,通过测试保证质量。

编排&应用

管弦乐队是各种演奏者(如弦乐器、管乐器和打击乐器)演奏音乐的地方。计算机系统编排是指将各种设置、管理和调整自动化,以确保各种计算机资源和应用程序正常工作。类似于指挥手下的管弦乐队,每个演奏者自主演奏,演奏和谐的音乐。
在这里插入图片描述

在云原生应用中,应用以容器为执行单元进行配置,编排软件方案,自动管理此时容器的执行、激活监控以及各项设置。作为一种编排解决方案,使用 CNCF 维护的 Kubernetes(K8s)正在成为事实上的标准。谷歌、亚马逊、微软和 IBM 等云供应商通过提供 Kubernetes 作为管理服务来帮助更轻松地引入编排。

云服务中重要的技术『容器』

容器是虚拟化技术之一。它消除了对传统虚拟机 (VM) 所需的管理程序满足操作系统的需求,并使创建更轻量级的虚拟环境。
在这里插入图片描述

容器的优点

  • 轻量资源,操作简单,无需guest OS等资源。
  • 环境搭建快速,尤其是Docker容器,采用了IaC(Infrastructure as Code)的概念,可以设置中间件安装和各种环境设置。
  • 易于废弃和新建,准备资源很容易,再加上 IaC很容易废弃和新建容器。

使用这些容器的优点是与 DevOps 兼容高,这也是为什么被用于许多 DevOps 实施环境的原因。

容器的使用

最初 Docker 是在 Linux 上开发的,但现在也支持 Windows 容器。

运行应用程序所需的库和运行时等依赖项在开发环境和生产环境之间存在差异。因此使用容器进行开发时,这些库和运行时也与应用程序打包在同一个容器中,以确保它们在您拥有它们的任何地方都可以工作。

应用可移植性是容器的一大优势,也是可以说采用容器的一大优势。

什么是容器编排

在这里插入图片描述

容器编排工具的一个典型例子是 CNCF 维护的 Kubernetes(K8s)。一种容器编排,在自动调整计算机系统、应用程序、容器等方面发挥作用,还管理跨多个服务器的容器。

但是 Kubernetes 的学习成本很高,有人说很难从零开始搭建环境并自行操作。如果公司使用 Kubernetes,可以通过使用云供应商提供的托管服务来避免这些问题。

此外有些服务提供了方便的界面、管理工具和适合您的业务用例的软件,而不是按原样使用 Kubernetes。您可以通过 Red Hat OpenShift 和 IBM Cloud Paks 等解决方案和服务利用这些优势。由于容器和 Kubernetes 是开放的技术,厂商锁定的风险很低,即使你将来更换厂商,也可以减少迁移的成本和问题。

总结

云原生是以使用云服务和环境为前提的系统或服务。除了享受云服务的好处之外,还可以搭建一个环境,最大限度地发挥云环境的好处。

容器是云原生化的一个重要关键词。容器是虚拟环境之一,是比虚拟机更轻量的应用运行环境。预计将在使用 Kubernetes 等容器编排工具进行自动调整的同时使用,是一种有望在未来更加普及的技术。

猜你喜欢

转载自blog.csdn.net/qq_20288327/article/details/124037147
今日推荐