关于云原生的应用场景的思考

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

应用场景

根据我的理解实际应用可以分为如下几方面

  1. 提高集群资源的利用率。
  2. 通过自动化的方式提高应用的稳定性。
  3. 提高持续交付的能力和系统的兼容性。
  4. 增加系统可观察性。如监控日志方案
第一点、提高集群资源的利用率。

云计算的核心其实就是将传统业务上云。通过一个较大的资源池、不需要专门预留大量的空余资源、通过虚拟化技术帮你解决流量峰值导致的资源利用不平均。云原生更是近一步缩小粒度,通过容器的方式,进一步提高资源的利用率,不过这个比较依靠调度算法。所以大厂目前很大方面都是在资源调度算法上面做优化。

第二点、提高集群的稳定性。

1是通过微服务化,将应用水平、垂直等方式扩展。2是通过自动化方式修复、如探针、熔断降级、自动重启等。如声明式API就是为了让资源达到某种状态。

第三点、提高持续交付能力。

随着业务的扩大,部署交付往往变得更加频繁。以往传统的部署方式可能是开发写好代码、然后写好部署文档、交给运维进行部署。云原生的场景下有了新的方式、devops也就是将开发和运维的隔阂变得更小。原来的运维人员一部分专心负责集群的稳定性和资源利用率。另一部分运维人员(开发人员)开发自动化部署工具,不仅是简单的将应用进行部署,同时也要靠考虑质量方面的问题。业务人员可以通过自动化部署工具参与业务应用的部署和运维而不用直接接触服务器。
通过基础设施即代码的方式

第四点、增加系统的可观察性。

当业务达到一定的程度,同时你已经微服务化以后,系统的复杂度往往非常高。虽然有一系列的自动化运维工具。但是你需要知道系统内部的一些情况。这里就需要监控、日志、调用链等情况。


关于云原生的应用场景的思考_第1张图片
image.png

特点

有以下几个特点
1.兼容/抽象性
2.低耦合

兼容/抽象性

抽象性、兼容性。其实用过k8s就能知道里面有csi、cri、cni等开放接口、用户在自定义的场景可以选择合适的存储、网络、甚至容器运行时。还有ingress也是入口的抽象表示、一般情况下不管选择哪种网关都可以适用(非一般情况下,比如适用crd的方式定义、或者一些自定义的配置会在annotation中另外声明)。

低耦合

1.监控和日志标准的收集方式
2.使用istio 分布式追踪通过sidecar的方式与代码解耦;兼容不同方式获取服务发现
3.配置可以采用configmap/secret的方式兼容传统应用
等等

云原生应用的12要素

关于具体如何实践云原生、Heroku提出了云原生应用的12要素 ,帮助我们实现云原生化。
https://12factor.net/

你可能感兴趣的:(关于云原生的应用场景的思考)