云原生1 走进云原生

329 阅读4分钟
走进云原生

什么是云原生
云原生实际上是一种指导软件架构设计的思想, 其有以下特点:
* “云原生”具备着重要的意义,它是云时代技术人自我提升的必备路径;
* “云原生”定义了一条云时代应用从开发到交付的最佳路径;
* “云原生”应用生在云上,长在云上,希望能够将云的能力发挥到极致。

云原生的技术范畴
云原生的技术范畴包括了以下6个方面:
* 云应用定义与开发流程
这包括应用定义与镜像制作、配置 CI/CD、消息和 Streaming 以及数据库等。
* 云应用的编排与管理流程
这也是 Kubernetes 比较关注的一部分,包括了应用编排与调度、服务发现治理、远程调用、API 网关以及 Service Mesh。
* 监控与可观测性
这部分所强调的是云上应用如何进行监控、日志收集、Tracing 以及在云上如何实现破坏性测试,也就是混沌工程的概念。
* 云原生的底层技术
比如容器运行时、云原生存储技术、云原生网络技术等。
* 云原生工具集
在前面的这些核心技术点之上,还有很多配套的生态或者周边的工具需要使用,比如流程自动化与配置管理、容器镜像仓库、云原生安全技术以及云端密码管理等。
* Serverless
Serverless 是一种 PaaS 的特殊形态,它定义了一种更为“极端抽象”的应用编写方式,包含了 FaaS 和 BaaS 这样的概念。而无论是 FaaS 还是 BaaS,其最为典型的特点就是按实际使用计费(Pay as you go),因此 Serverless 计费也是重要的知识和概念。

图1 - 云原生技术范畴图

Image.png

云原生的4个关键技术点
1. 如何构建自包含、可定制的应用镜像;
2. 能不能实现应用快速部署与隔离能力;
3. 应用基础设施创建和销毁的自动化管理;
4. 可复制的管控系统和支撑组件。

图2 云原生技术概览

Image.png

云原生思想的两个理论
* 不可变基础设施。这一点目前是通过容器镜像来实现的,其含义就是应用的基础设施应该是不可变的,是一个自包含、自描述可以完全在不同环境中迁移的东西;
* 云应用编排理论。当前的实现方式就是 Google 所提出来的“容器设计模式”,比如K8s中的世界模式。

云原生带来的变化
1.传统的自建应用基础设施到对云友好的应用基础设施的转变
传统的应用基础设施是可变的,我们会SSH登录故武器,然后手动进行配置,服务升级或者降级,部署新代码等,每台服务器和服务器上的配置和代码都可能是不同的。而云原生的应用基础设施是不可变的,通过公共镜像类实现复用,当需要修改时则更新镜像构建新服务以替换旧服务,部署策略也更加多样化,比如灰度发布,蓝绿发布,金丝雀发布,经过验证后,新服务投入使用,旧服务则退役。

云原生的三个优点
* 基础设施的一致性和可靠性
同样一个镜像,无论是在美国打开,在中国打开,还是在印度打开都是一样的。并且其中的 OS 环境对于应用而言都是一致的。而对于应用而言,它就不需要关心容器跑在哪里,这就是基础设施一致性非常重要的一个特征。
* 自包含的镜像
包含了应用运行所需要的所有依赖,因此也可以漂移到云上的任何一个位置,并且给应用带来了良好的扩容性。
* 简单可预测的部署和运维
云原生使得CI/CD流程自动化,容易水平扩展,并且提供了可快速复制的管控系统与支撑组件。