到底什么是云原生?

本文指在阐述云原生基础概念,具体的相关学习请参考其他资料。
此处强烈安利阿里云大学的公开课 CNCF × Alibaba 云原生技术公开课

一、“云原生”的定义

云原生之所以解释不清楚,是因为云原生没有确切的定义,云原生一直在发展变化之中,解释权不归某个人或组织所有。

1.1 Pivotal公司(Spring就是他们的)

Pivotal公司的Matt Stine于2013年首次提出云原生(CloudNative)的概念;

云原生是一种利用云计算交付模型的优势来构建和运行应用程序的方法。

2015年,云原生刚推广时,Matt Stine在《迁移到云原生架构》一书中定义了符合云原生架构的几个特征:

  • 符合12因素应用,
  • 面向微服务架构,
  • 自服务敏捷架构,
  • 基于API协作,
  • 抗脆弱性。

到了2017年,Matt Stine在接受InfoQ采访时又改了口风,将云原生架构归纳为:

  • 模块化,
  • 可观察性,
  • 可部署性,
  • 可测试性,
  • 可替换性,
  • 可处理。

而Pivotal最新官网对云原生概括为4个要点:

  • DevOps,
  • 持续交付,
  • 微服务,
  • 容器。

1.2 云原生计算基金会CNCF

2015年云原生计算基金会(CNCF)成立,最初把云原生定义为包括:

云原生包含了一组应用的模式, 用于帮助企业快速, 持续, 可靠, 规模化地交付业务软件。 云原生由微服务架构DevOps 和以容器为代表的敏捷基础架构组成。

  • 微服务
  • DevOps
  • 持续交付
  • 容器化

到了2018年,CNCF又更新了云原生的定义:

云原生技术有利于各组织在公有云、 私有云和混合云等新型动态环境中, 构建和运行可弹性扩展的应用。 云原生的代表技术包括容器、 服务网格、 微服务、 不可变基础设施和声明式API

  • 容器
  • 微服务
  • 服务网格
  • 不可变基础设施
  • 声明式API

1.3 阿里巴巴

从技术的角度, 云原生架构是基于云原生技术的一组架构原则和设计模式的集合, 旨在将云应用中的 非业务代码部分进行最大化的剥离, 从而让云设施接管应用中原有的大量非功能特性(如弹性、韧性、 安全、 可观测性、 灰度等), 使业务不再有非功能性业务中断困扰的同时, 具备轻量、 敏捷、高度自动化的特点。

二、“云原生”带来的价值

云原生为用户指定了一条低心智负担的、敏捷的、能够以可扩展可复制的方式最大化地利用云的能力、发挥云的价值的最佳路径。

2.1 获得竞争优势

云原生开发意味着从专注于节省IT成本转变为将云视为业务增长的引擎。 在软件时代, 可以响应客户需求快速构建和交付应用程序的企业将获得持久的成功。

2.2 使团队能够专注于弹性

当传统基础架构发生故障时, 服务可能会遭受损失。 在云原生世界中, 团队可以专注于架构以增强
弹性。 快速增长的云原生环境可帮助开发人员和架构师设计可保持在线状态的系统, 无论环境如何打扰。

2.3 获得更大灵活性

公共云提供商继续以合理的价格提供令人印象深刻的服务。 但是大多数企业还不准备选择一种云环境。
借助支持云原生开发的平台, 企业无需修改即可构建可在任何公共或私有云上运行的应用程序。 团队保
留在最有意义的情况下运行应用程序和服务的能力, 同时避免了云锁定。

2.4 使运营与业务需求保持一致

通过使IT运作自动化, 企业可以转变为精简的, 专注于业务重点的团队。 这消除了由于人为错误而
导致的失败风险, 因为工作人员专注于自动化以代替手动管理任务。 在堆栈的各个级别上自动进行实时
修补和升级, 消除了停机时间, 并消除了具有“手把手” 的专业知识的运维专家。

三、“云原生”的相关技术

3.1 微服务

微服务 (Microservices) 是一种软件架构风格, 它是以专注于单一责任与功能的小型功能区块 为基础, 利用模块化的方式组合出复杂的大型应用程序, 各功能区块使用与语言无关的 API 集相互通信。

3.2 持续交付

持续交付是一种软件工程手法, 让软件产品的产出过程在一个短周期内完成, 以保证软件可以稳定、持续的保持在随时可以释出的状况。 它的目标在于让软件的建置、 测试与释出变得更快以及更频繁。 这种方式可以减少软件开发的成本与时间, 减少风险。

3.3 Devops

DevOps (Development 和 Operations 的组合词) 是一种重视软件开发人员和 IT 运维技术人员之间沟通合作的文化、 运动或惯例。 透过自动化「软件交付」 和「架构变更」 的流程, 来使得构建、 测试、发布软件能够更加地快捷、 频繁和可靠。

3.4 容器

应用容器是一种轻量化的运行时环境, 能够为应用提供其运行所需的文件、 变量及信息库, 从而最大程度地实现可移植性。


附录

参考资料

[1] 《什么是云原生?这回终于有人讲明白了》.程序员之家(知乎).https://zhuanlan.zhihu.com/p/150190166
[2] 云原生计算基金会官网.https://www.cncf.io
[3] CNCF × Alibaba 云原生技术公开课.https://edu.aliyun.com/lesson_1651_16823

你可能感兴趣的:(技术杂谈)