云原生的定义
云原生是一条最佳路径或最佳实践。
云原生为用户指定了一条低负担、敏捷的、能够以可扩展、可复制的方式最大化利用云的能力、发挥云的价值的最佳路径。
云原生是一套指导进行软件架构设计的思想。
云原生技术的核心是容器技术,容器技术使得应用具有了一种“自包含”的定义方式,这样的应用才能以敏捷的、可扩展可复制的方式发布在云上,发挥出云的能力。
云原生的技术范畴
- 云应用定义与开发流程
包括应用定义与镜像制作、配置 CI/CD、消息和 Streaming 以及数据库等 - 云应用的编排与管理流程
包括了应用编排与调度、服务发现治理、远程调用、API 网关以及 Service Mesh - 监控与可观测性
强调的是云上应用如何进行监控、日志收集、Tracing 以及在云上如何实现破坏性测试,也就是混沌工程的概念 - 云原生的底层技术
如容器运行时、云原生存储技术、云原生网络技术等 - 云原生工具集
流程自动化与配置管理、容器镜像仓库、云原生安全技术以及云端密码管理等 - Serverless
Serverless 是一种 PaaS 的特殊形态,它定义了一种更为“极端抽象”的应用编写方式,包含了 FaaS 和 BaaS 这样的概念
云原生思想的两个理论
- 不可变基础设施
这一点目前是通过容器镜像来实现的,其含义就是应用的基础设施应该是不可变的,是一个自包含、自描述可以完全在不同环境中迁移的东西 - 云应用编排理论
当前的实现方式就是 Google 所提出来的“容器设计模式”
基础设施向云演进的意义
- 基础设施的一致性和可靠性
同样一个镜像,无论是在美国打开,在中国打开,还是在印度打开都是一样的。并且其中的 OS 环境对于应用而言都是一致的。而对于应用而言,它就不需要关心容器跑在哪里,这就是基础设施一致性非常重要的一个特征。 - 镜像本身就是自包含的
包含了应用运行所需要的所有依赖,因此也可以漂移到云上的任何一个位置
云原生关键技术点
- 如何构建自包含、可定制的应用镜像
- 能不能实现应用快速部署与隔离能力
- 应用基础设施创建和销毁的自动化管理
- 可复制的管控系统和支撑组件